-
随着业务场景的不断丰富,批量计算也由传统的HPC逐渐扩展到大数据、AI等多种场景,但各领域独立发展将造成技术栈不兼容、资源使用率低等问题。在此背景下,云原生技术以其丰富的生态和灵活的扩展性受到各大厂商的青睐,云原生统一基础设施成为必然选择。Volcano作为CNCF首个云原生批量计算项目,支持几乎所有的主流计算框架,提供丰富的高级调度策略及多元算力支持,可在人工智能、大数据、基因测序等海量数据计算和分析场景得到快速应用,弥补了Kubernetes批处理调度能力的空缺 ,并已构建起完善的上下游生态。项目目前已有450+位来自全球各地的贡献者和50+落地案例。今年6月,Apache Spark 3.3版本正式发布,v3.3选择Volcano作为默认batch调度器,助力大数据平台云原生化。9月29日开始,Volcano即将全面开启技术分享课程,核心技术无保留传授——27节公开课,全网首发!13位批量计算行业大咖亲自教学一门职业技能,轻松get!课程研发团队 本次批量计算课程由CNCF 首个容器批量计算项目Volcano的核心贡献者联合研发。适合人群 计算机相关专业的学生群体云计算应用开发、运维工程师、产品经理云原生开源技术爱好者、Volcano社区用户、贡献者部分课表 课次课程名称1云原生批量计算公开课简介2云原生批量计算的先行者Volcano3Volcano安装部署快速入门4如何在AI场景下使用Volcano?5如何在大数据场景下使用Volcano?6如何在HPC场景下使用Volcano?7云原生批量计算的集大成者Volcano Job8Volcano Job插件机制及使用9手把手教你构建自己的Volcano Job插件10资源调度的基石Queue11Volcano的独门秘籍PodGroup12Volcano技术内幕:架构设计与实现原理13走近Action和Plugin机制14Action和Plugin之资源预匹配与SLA策略15Action和Plugin之资源分配与装箱策略扫码回复Volcano进群 免费领取全部27节课·课表不能错过的第一堂课 9月29日日开启,每周周四晚20:00开课CNCF 大使 Kevin WangVolcano 社区 Maintainer 王雷博为大家率先开启课程后续每周讲师信息,可添加k8s2222进学习群获取成为大家的批量计算导师带大家开启云原生批量计算的学习整个学习期间,你们的大佬级导师,也会在学习群内陪伴大家的课程,监督大家的课程进度哦。从入门到精通,万万不能错过第一课!(扫上方海报码回复Volcano进群)学批量计算,认识批量计算达人技能破局,需要1次体系化的洗礼27节课程规划,理论+实践提升战力每周1小时,轻松为个人职业加码不只是学习,一路结识更多批量计算达人添加助教微信领取开课礼包
-
一、准备工作 镜像加速源 镜像加速器 镜像加速器地址 Docker 中国官方镜像 https://registry.docker-cn.com DaoCloud 镜像站 http://f1361db2.m.daocloud.io Azure 中国镜像 https://dockerhub.azk8s.cn 科大镜像站 https://docker.mirrors.ustc.edu.cn 阿里云(需要注册,建议) https://.mirror.aliyuncs.com 七牛云 https://reg-mirror.qiniu.com 网易云 https://hub-mirror.c.163.com 腾讯云 https://mirror.ccs.tencentyun.com 二、部署 Django & Mysql 1) .Dockignore 创建.dockignore文件 .git settings/local.py **/__pycache__ 2) Dockfile 使用pip freeze > requirements.txt命令打包好项目的依赖包列表(这种方式只适合在虚拟环境中导出虚拟环境中的包,如果不是在虚拟环境下就会导出全局环境的python的环境包) 要想在全局环境中导出我们项目的依赖包,可以利用python包pipreqs # 进入到项目所在目录,在执行下面的命令 $> pip install pipreqs $> pipreqs . --encoding=utf8 --force # “.” 指的是将导出依赖包的文件放在当前目录下 # “--encoding=utf8” 指的是存放文件的编码为utf-8,否则会报错 # “--force” --force 强制执行,当 生成目录下的requirements.txt存在时强子覆盖 创建dockfile文件 # 指定基础镜像 FROM python:3.7 #ENV server.params= # updata太慢 设置镜像源 RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ && apt-get clean \ && apt-get update \ && apt-get install python3-dev default-libmysqlclient-dev -y # 创建 code 文件夹并将其设置为工作目录 RUN mkdir /code WORKDIR /code # 将 requirements.txt 复制到容器的 recruitment 目录 ADD requirements.txt /code/ # 更新 pip 并 安装依赖库 RUN pip install pip -U && pip install -r requirements.txt # COPY 是不解压的 ADD . /code/ # CMD [ "/bin/sh", "/code/start.local.bat" ] FROM python:3.7 指令从仓库拉取一个包含 python 3.7 的 Linux 操作系统环境(Linux 版本为 Debian)。 RUN 和 WORKDIR 指令都是针对容器的,功能是在容器里创建目录、并将其设置为工作目录。注意宿主机是没有这个目录的。 ADD 指令出现了两次。ADD requirements.txt /code/ 意思是将宿主机当前目录(即 Dockerfile 所在目录)的 requirements.txt 文件复制到容器的 /code 目录中。ADD . /code/ 意思是把当前目录所有内容复制到容器 /code/ 目录,注意中间那个点。 3) docker-compose.yml version: "3" services: # 设置应用 容器 app: restart: always build: . # todo 根据当前项目 dockerfile生成,相当于 docker build -t="ouruser/sinatra:v2" . # bash shell窗口 -c命令行 默认迁移 和 运行 command: bash -c "python manage.py runserver 0.0.0.0:8080" # bash -c "python manage.py runserver 0.0.0.0:8080" volumes: - .:/code ports: - "8080:8080" depends_on: - db networks: - db_network # 设置数据库 容器 db: image: mysql:8 # 版本一定要对应! volumes: - "./mysql/data:/var/lib/mysql" # 设置timestamp 可为 null # 设置字符集 (不是utf8会报错 # collation 这是排序规则 # - "./mysql/conf/my.cnf:/etc/mysql/my.cnf" command: "mysqld --user=root --explicit_defaults_for_timestamp --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci" # - -character-set-server=utf8mb4 # 设置默认字节 # - -collation-server=utf8mb4_general_ci # 设置排序 # - -explicit_defaults_for_timestamp=true # 设置可为 null # --default-authentication-plugin=mysql_native_password # 使用 5.7 版本的密码验证 # "mysqld --user=root --explicit_defaults_for_timestamp --character-set-server=utf8mb4" ports: - "3307:3306" restart: always environment: - MYSQL_ROOT_PASSWORD=123456 # 一定要配置 - MYSQL_DATABASE=django_recruitment networks: - db_network # 设置网络 networks: db_network: driver: bridge version 代表 docker-compose.yml 的版本,目前最新版为 3,不需要改动它。 从整体上看,我们定义了二个容器,分别是app、db,容器之间通过定义的端口进行通讯。定义了网络db_network,只有处在同一网络下的容器才能够互相通讯。不同网络之间是隔离的,即便采用同样的端口,也无法通讯。 定义了一个名叫 app 的容器。后面的内容都是 app 容器的相关配置: restart :除正常工作外,容器会在任何时候重启,比如遭遇 bug、进程崩溃、docker 重启等情况。 build :指定一个包含Dockerfile的路径,并通过此Dockerfile来构建容器镜像。注意那个 “.” ,代表当前目录。 command :容器运行时需要执行的命令。这里就是我们很熟悉的运行开发服务器了。 volumes :卷,这是个很重要的概念。前面说过容器是和宿主机完全隔离的,但是有些时候又需要将其连通;比如我们开发的 Django 项目代码常常会更新,并且更新时还依赖如 Git 之类的程序,在容器里操作就显得不太方便。所以就有卷,它定义了宿主机和容器之间的映射:“.” 表示宿主机的当前目录,“:” 为分隔符,“/code” 表示容器中的目录。即宿主机当前目录和容器的 /code 目录是连通的,宿主机当前目录的 Django 代码更新时,容器中的 /code 目录中的代码也相应的更新了。这有点儿像是在容器上打了一个洞,某种程度上也是实用性和隔离性的一种妥协。 严格意义上讲,这里用到的 .:/code 并不是卷,而是叫挂载,它两是有区别的,只不过 docker-compose 允许将挂载写到卷的配置中。 expose:暴露容器的8000端口供其他容器访问,宿主机和外界无法访问 networks:能够访问db_network depends_on : 意思是此容器需要等待 db 容器启动完毕才能够启动。 分析一下 db 容器: image :从仓库拉取 MySQL 5.7 。 volumes :这里出现的 static-volume 叫卷。它的使用方式像这样:static-volume:/code/collected_static ,冒号后面还是容器内的目录,但冒号前的却不是宿主机目录、仅仅是卷的名称而已。从本质上讲,数据卷也是实现了宿主机和容器的目录映射,但是数据卷是由 Docker 进行管理的,你甚至都不需要知道数据卷保存在宿主机的具体位置。 相比挂载,数据卷的优点是由于是 Docker统一管理的,不存在由于权限不够引发的挂载问题,也不需要在不同服务器指定不同的路径;缺点是它不太适合单配置文件的映射。和挂载一样,数据卷的生命周期脱离了容器,删除容器之后卷还是存在的。下次构建镜像时,指定卷的名称就可以继续使用了。 ports :MySQL 默认通信端口为 3306 。 environment :定义容器的环境变量,设置了 MySQL 的 root 用户的密码、数据库的名称。 network:只能够访问db_network。添加db容器后记得的修改Django里的数据库设置。 4)修改项目settings.py 我们在开发项目中,往往是使用django自带的sqlite进行快速开发测试,后面部署再使用mysql,这里也是一样的,个人建议部署到服务器可以先使用带过去的sqlite进行测试(且此时数据库是有数据的), 进行真正上线则使用mysql(没有数据) ALLOWED_HOSTS = [ '*'] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # 部署用数据库配置 # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.mysql', # 'NAME': 'django_recruitment', # 'USER': 'root', # 'PASSWORD': '123456', # 'HOST': 'db', # 'HOST': '127.0.0.1', # 'PORT': '3306', # 'OPTIONS': {'charset': 'utf8mb4'}, # } # } # todo 注意:这里使用的是db别名,docker会自动解析成ip 部署! 5)生成表&数据迁移 由于我们所配置的数据是空的,此时我们需要生成表和数据迁移 5.1 生成表 进入到sh命令窗口 bash python manage.py migrate 5.2 数据迁移 django先连接回原来的数据库, python manage.py dumpdata > data.json 导出数据,并修改文件编码! 不然后面 loaddata会报错! 进入mysql终端,设置忽略外键 和 删除 auth_permission 和 django_content_type 表 ( 由于在数据迁移过程中这两个表数据默认生成) set foreign_key_checks=0; truncate table django_content_type; truncate table auth_permission; set foreign_key_checks=1; 回到项目容器终端 进入到sh命令窗口 bash python manage.py loaddata data.json # mysql版本一定要一样 不然报错 部署命令 运行命令docker-compose build构造镜像,再使用docker-compose up即可启用服务。 下面附上一下经常用到的命令: 停止容器,docker-compose down 后台运行docker容器:docker-compose up -d 只想启动其中的一个容器:docker-compose up -d db或者docker-compose up -d app即可启动db容器或app容器。 进入容器:docker exec -it container_id /bin/bash 上面的container_id如果不知道如何获取可以通过docker ps命令查看。 ———————————————— 版权声明:本文为CSDN博主「计算机魔术师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_66526635/article/details/126023879
-
前言 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),本文总结了容器环境下的部署及实践应用 ⛳️ 1.SQL Server介绍 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS); SQL Server使用方便,伸缩性好与相关软件集成程度高; SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能 SQL Server 服务作用简介: 1.SQL Server(MSSQLSERVER)是必须要开启的,这个是数据库引擎服务,它就像汽车的发动机一样,缺它不可。 2.SQL Server代理(MSSQLSERVER)是代理服务,比如你有一些自动运行的,定时作业, 或者是一些维护计划,比如定时备份数据库等操作,那么就要打开,否则,就不会备份数据库了。 3.SQL Server Analysis Services (MSSQLSERVER)是分析服务,一般不用开启,除非你做多位分析,和数据挖掘,才需要开启。 4.SQL Full-text Filter Daemon Launcher (MSSQLSERVER)是全文检索服务,如果你没有使用全文检索技术,那么也不需要开启。 5.SQL Server VSS Writer MicrosoftSQLServer的SQL编写器服务, 允许备份和还原应用程序以便在VolumeShadowCopyService(VSS)框架中进行操作。 6.Sql Browser 服务 一般你要进行远程访问,不需要开启sql browser开启sql browser, 通过:服务器ip,端口 这种方式就可以访问远程的服务器 ⛳️ 2.查看镜像源 [root@jeames ~]# docker search mssql ⛳️ 3.拉取镜像 docker pull mcr.microsoft.com/mssql/server:2017-latest [root@jeames ~]# docker images ⛳️ 4.运行容器 docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=jem202207090." \ -p 1433:1433 --name sqlserver2017 \ -d mcr.microsoft.com/mssql/server:2017-latest 此处记得密码设置为复杂密码 参数解释: -e "ACCEPT_EULA=Y":默认选择同意协议许可证 -e "SA_PASSWORD=jem202207090.":设置连接密码为jeames007 -p 1433:1433: 宿主机端口映射到容器端口(前者为宿主机) --name sqlserver2017:容器别名 -d: 后台运行 mcr.microsoft.com/mssql/server:2017-latest:镜像名称:标签 ⛳️ 5.使用数据库 🚀 5.1 进入容器 [root@jeames ~]# docker exec -it sqlserver2017 bash ##查看docker日志 [root@jeames ~]# docker logs sqlserver2017 🚀 5.2 连接数据库 root@a0e5be7e8e03:/# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P “jem202207090.” 🚀 5.3 查询数据库 1> select name from sys.Databases; 2> go 🚀 5.4 创建数据库 1> create database jem_db 2> go 可以看到我们成功的创建好了一个数据库。 ⛳️ 6. 远程连接 使用Navicat进行远程数据库链接测试,你可能会遇到远程连接失败问题, 请检查服务器防火墙,或者安全组规则配置。 SQL Server默认端口:1433 原因是Navicate没有找到电脑安装的sqlserver驱动,那么咱们进行安装即可, 找到navicat的安装目录下的sqlncli.msi(32位)或sqlncli_x64.msi(64位)的,根据系统版本选择安装 ———————————————— 版权声明:本文为CSDN博主「IT邦德」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_41645135/article/details/126416874
-
1. 组件版本和配置策略1.1 主要组件版本组件版本发布时间kubernetesv1.23.32022-01-26etcdv3.5.22022-02-01cri-ov1.23.02021-12-18flannelv0.16.32022-01-29coredns1.9.02022-02-10cni-pluginsv1.0.12021-09-081.2 主要配置策略kube-apiserver:使用节点本地 nginx 4 层透明代理实现高可用;关闭非安全端口 8080 和匿名访问;在安全端口 5443 接收 https请求;严格的认证和授权策略 (x509、token、RBAC);开启 bootstrap token 认证,支持 kubeletTLS bootstrapping;使用 https 访问 kubelet、etcd,加密通信;kube-controller-manager:3 节点高可用; 关闭非安全端口,在安全端口 10257 接收 https 请求;使用 kubeconfig 访问 apiserver的安全端口;自动 approve kubelet 证书签名请求 (CSR),证书过期后自动轮转;各 controller 使用自己的ServiceAccount 访问 apiserver;kube-scheduler:3 节点高可用; 使用 kubeconfig 访问 apiserver 的安全端口;关闭非安全端口,在安全端口 10259 接收https 请求;kubelet:使用 kubeadm 动态创建 bootstrap token,而不是在 apiserver 中静态配置;使用 TLSbootstrap 机制自动生成 client 和 server 证书,过期后自动轮转;在 KubeletConfiguration类型的 JSON 文件配置主要参数;关闭只读端口,在安全端口 10250 接收 https请求,对请求进行认证和授权,拒绝匿名访问和非授权 访问;使用 kubeconfig 访问 apiserver 的安全端口;kube-proxy:使用 kubeconfig 访问 apiserver 的安全端口;在 KubeProxyConfiguration 类型的 JSON文件配置主要参数;使用 ipvs 代理模式;集群插件:DNS:使用功能、性能更好的 coredns;2. 初始化系统和全局变量2.1 集群规划master节点:节点名称IP地址k8s-master-1192.168.2.175k8s-master-2192.168.2.176k8s-master-3192.168.2.178node 节点:节点名称IP地址k8s-node-1192.168.2.185k8s-node-2192.168.2.187k8s-node-3192.168.3.62k8s-node-4192.168.3.70控制节点/配置生成节点:节点名称IP地址qist192.168.0.151工作目录: /opt三台机器混合部署本文档的 etcd、master 集群和 woker 集群。如果没有特殊说明,需要在所有节点上执行本文档的初始化操作。2.2 kubelet cri-o cgroupCgroup Driver:systemd kubeelt cri-o Cgroup 配置为systemd2.3 设置主机名hostnamectl set-hostname k8s-master-1 # 将 k8s-master-1 替换为当前主机名退出,重新登录 root 账号,可以看到主机名生效。2.4 添加节点信任关系本操作只需要在 qist 节点上进行,设置 root 账户可以无密码登录所有节点:ssh-keygen -t rsa ssh-copy-id root@192.168.2.175 ssh-copy-id root@192.168.2.176 ssh-copy-id root@192.168.2.177 ssh-copy-id root@192.168.2.185 ssh-copy-id root@192.168.2.187 ssh-copy-id root@192.168.3.62 ssh-copy-id root@192.168.3.702.5 安装依赖包yum install -y epel-release yum install -y chrony conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget socat gitkube-proxy 使用 ipvs 模式,ipvsadm 为 ipvs 的管理工具;etcd 集群各机器需要时间同步,chrony用于系统时间同步;2.6 关闭防火墙关闭防火墙,清理防火墙规则,设置默认转发策略:systemctl stop firewalld systemctl disable firewalld iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat2.7 关闭 swap 分区关闭 swap 分区,否则kubelet 会启动失败(可以设置 kubelet 启动参数 --fail-swap-on 为 false 关闭 swap检查):swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab2.8 关闭 SELinux关闭 SELinux,否则 kubelet 挂载目录时可能报错 Permission denied :setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config2.9 优化内核参数cat > /etc/sysctl.d/kubernetes.conf <关闭 tcp_tw_recycle,否则与 NAT 冲突,可能导致服务不通;内核低于4版本添加fs.may_detach_mounts=12.10 系统文件打开数cat>>/etc/security/limits.conf<centos7还需修改sed-i's/4096/655350/'/etc/security/limits.d/20-nproc.conf2.11 内核模块配置重启自动加载加载ipvs内核模块cat>/etc/modules-load.d/k8s-ipvs-modules.conf<加载netfilter等模块 内核4版本以下 nf_conntrack 替换 nf_conntrack_ipv4cat>/etc/modules-load.d/k8s-net-modules.conf<2.12 设置系统时区timedatectlset-timezoneAsia/Shanghai2.13 设置系统时钟同步systemctl enable chronyd systemctl start chronyd查看同步状态:timedatectl status输出:System clock synchronized: yes NTP service: active RTC in localTZ: noSystem clock synchronized: yes,表示时钟已同步;NTP service: active,表示开启了时钟同步服务;#将当前的UTC时间写入硬件时钟 timedatectlset-local-rtc0#重启依赖于系统时间的服务 systemctl restart rsyslog systemctl restart crond2.14 关闭无关的服务systemctl stop postfix && systemctl disable postfix2.15 创建相关目录创建目录:master 组件目录#k8s目录 mkdir -p /apps/k8s/{bin,log,conf,ssl,config} mkdir -p /apps/work/kubernetes/{manifests,kubelet} mkdir -p /var/lib/kubelet mkdir- p /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ mkdir -p /apps/k8s/ssl/{etcd,k8s} #etcd目录 mkdir -p /apps/etcd/{bin,conf,data,ssl} #etcd data-dir目录 mkdir -p /apps/etcd/data/default.etcd #etcdwal-dir目录 mkdir -p /apps/etcd/data/default.etcd/walnode 节点目录mkdir -p /apps/k8s/{bin,log,conf,ssl} mkdir -p /apps/work/kubernetes/{manifests,kubelet} mkdir -p /var/lib/kubelet mkdir -p /usr/libexec/kubernetes/kubelet-plugins/volume/exec/cri-o 目录结构创建mkdir -p /apps/crio/{run,etc,keys} mkdir -p /apps/crio/containers/oci/hooks.d mkdir -p /etc/containers mkdir -p /var/lib/containers/storage mkdir -p /run/containers/storage mkdir -p /apps/crio/lib/containers/storage mkdir -p /apps/crio/run/containers/storage2.16 mount目录挂载挂载kubelet 跟cri-o数据目录最大兼容其它依赖组件例如csi插件cat>> /etc/fstab <验证挂载是否有误mount-a重启机器:sync reboot期待下次的分享,别忘了三连支持博主呀~ 我是 念舒_C.ying ,期待你的关注~💪💪💪
-
摘要:KubeEdge设备管理架构的设计实现,有效帮助用户处理设备数字孪生进程中遇到的场景。本文分享自华为云社区《KubeEdge:下一代云原生边缘设备管理标准DMI的设计与实现》。随着5G、AI、分布式云等技术的成熟发展,万物互联、数字孪生、算力泛在等理念不断推进,带来了很多行业业务的创新,越来越多的设备、应用运行在端侧,并产生大量的数据。如何更好地解耦业务应用开发和设备数据访问,为设备提供完整的生命周期数据管理,释放设备数据的价值?如何在保证集群可用性的同时,高效管理和传输设备数据,获得更为方便、灵活的数据访问方式?云原生边缘计算的方案选择可以帮助用户更好地应对这类问题。一、KubeEdge设备管理框架KubeEdge设备管理架构的设计实现,有效帮助用户处理设备数字孪生进程中遇到的场景。用户可以通过KubeEdge,将物理设备抽象成数字孪生,用云原生的方式对设备和数据进行管理。一、KubeEdge设备管理框架 图 1 KubeEdge设备管理架构设计KubeEdge设备管理架构设计如图1所示,具体流程如下:1. 用户调用Kubernetes API接口,创建Device CRD实例到KubeEdge2. KubeEdge云上组件CloudCore watch到Kubernetes中Device CRD实例创建消息3. 此时CloudCore会做两件事情,一方面CloudCore通过云边websocket通道下发Device Twin信息到EdgeCore,另一方面CloudCore会生成一份包含Device Profile信息的Configmap,该Configmap是以Node名称为索引,挂载到对应Mapper的Pod中的4. Mapper通过读取挂载的Configmap中的Device Profile信息,更新本地维护的Device list列表5. EdgeCore把接收到的Device Twin信息发送到指定的mqtt topic6. 该节点上的所有Mapper都会收到该Device Twin消息,并根据Device名称来匹配是否是自己维护的list中的Device7. Mapper根据Device Profile信息,通过对应的协议与设备建立连接8. Mapper通过mqtt topic上报设备状态和采集的数据Device Twin到EdgeCore9. EdgeCore通过云边websocket通道上报Device Twin数据到CloudCore10. CloudCore更新设备Device Twin数据到Kubernetes二、DMI框架设计 在此基础上,KubeEdge团队也对框架不断更新迭代。为帮助用户应对未来更大规模设备场景、更高的可用性需求、更灵活的功能支持以及更优的用户体验,KubeEdge 设计了更优化的设备管理框架——DMI。DMI整合设备管理接口,优化边缘计算场景下的设备管理能力,打造基于云原生技术的,覆盖设备管理、设备数据的设备数字孪生管理平台;同时定义了EdgeCore与Mapper之间统一的连接入口,并分别由EdgeCore和Mapper实现上行数据流和下行数据流的服务端和客户端,承载DMI具体功能。DMI框架设计中解耦了设备管理面与设备业务面数据,让Device CRD只承载设备本身的生命周期管理,而设备业务面数据则直接通过微服务的方式为数据消费者应用提供出来。在这样的架构下,设备就不再是单纯的数据源,而是一种云原生的设备微服务,设备数据消费应用的开发者就可以不再关心如何获取设备数据,而是以更云原生的方式来聚焦应用本身的业务逻辑开发。DMI框架还提供多种数据推送方式,让数据消费者可以更灵活地获取设备数据,用户体验更优。由于DMI的设备管理面与业务面数据分离的特点,业务面数据可以通过业务面通道更灵活地在云端或边端被处理,而管理面的云边通道中只会传输少量管理面信息,大大降低了云边通道拥塞的可能,提高了KubeEdge系统的可用性。另外,DMI提供了统一的设备管理相关接口,无论是设备应用开发者还是设备应用的使用者,都可以以更统一、更灵活、更标准化的方式来开展设备相关工作,不拘泥于具体形式,只要能够实现DMI接口,就能够享受KubeEdge边缘计算平台带来的云原生设备管理体验。▍2.1 DMI框架定位图 2 DMI 在 KubeEdge 架构中的定位DMI在KubeEdge架构中的定位如图2所示。DMI类似Kubernetes的CNI、CSI、CRI等接口,定义了一组EdgeCore与Mapper之间的内部API接口以及外部应用访问Mapper的统一的API接口。其中内部接口底层由gRPC结合UDS的方式来实现,外部API接口支持mqtt和REST两种接入方式。Mapper不论是何种承载、实现方式,只要实现了DMI中所定义的上行、下行数据接口,即可接入KubeEdge云原生边缘计算平台,使用云原生的方式对设备进行管理。▍2.2 DMI设备管理与数据管理DMI框架架构设计如图3所示,其中黄色线条为设备管理面数据流管理,蓝色部分为业务面数据流管理。在DMI的架构设计中,将设备的管理面数据与业务面数据进行分离。其中管理面数据主要包括设备的元数据、设备属性、配置、状态、生命周期等,其特点是相对比较稳定,创建后除状态上报外的信息更新较少,更贴近Pod类型资源所产生的数据,在保证用户可以通过云端Kubernetes API像访问Pod一样维护Device的生命周期的同时,尽量减少设备管理产生的额外数据传输开销。图 3 DMI设备管理与数据管理架构在DMI框架设计下,设备不再是单纯的数据源,而是被抽象为微服务,以云原生的方式为设备数据消费者提供数据服务。DMI框架下的设备数据访问支持多种场景,更加灵活。图3中列出了几种主要的数据访问方式,包括推数据和拉数据等,具体情况如下:1. 边缘侧应用通过REST Service访问设备数据2. 云侧应用通过REST Service访问设备数据3. Mapper通过配置REST目的地址,将数据推送到边缘侧应用4. Mapper通过配置REST目的地址,将数据推送到云侧应用5. Mapper通过配置目的地址,将数据推送到边缘侧数据库6. Mapper通过配置目的地址,将数据推送到mqtt broker7. 边缘侧应用通过mqtt broker topic订阅设备数据8. 云侧应用通过mqtt broker topic 订阅设备数据9. 边缘侧应用处理数据后将处理结果传上云▍2.3 DMI工作流程图 4 DMI设备管理工作流程示例在DMI框架下,设备管理工作的流程有一定的变化。如图4所示,在安装KubeEdge的时候,云端CloudCore会注册DeviceController组件用于监听Device和DeviceModel的CRD资源。DeviceController中存在两个模块,Downstream Controller和Upstream Controller,其中Downstream Controller用于监听云端的Device、DeviceModel事件,并通过Cloudhub下发至边缘,Upstream Controller用于接收从Cloudhub转发来的EdgeHub上报的Device状态和消息,并更新Kubernetes中的Device状态。在边缘侧,Mapper初始化的时候,需要调用DMI中的Mapper注册接口,将Mapper的相关信息注册至Device Manager,并接收接口返回的已下发至该节点的且协议匹配的设备信息。EdgeHub在接收到云端下发的设备消息时,会将其转发到DeviceManager组件,DeviceManager会根据该设备的协议选择对应的Mapper驱动程序,发送创建设备的请求,并且本地数据库也会存储该设备的信息,后续Mapper会将设备孪生消息转化为设备协议格式,跟实际的物理设备进行通信。三、DMI接口定义▍3.1 DMI 接口分类DMI接口实现了EdgeCore与Mapper之间的通信,支持REST和mqtt的通信方式,并以标准化的形式呈现,降低了Mapper开发、适配难度。在数据访问方面,DMI可以实现边缘侧和云侧的应用都可以通过REST Service的方式访问设备数据。图 5 DMI接口定义如图5所示,DMI有六类接口,Mapper管理是针对边缘侧各类设备协议驱动程序,Device管理和Device数据管理对管理面和业务面进行了数据拆分,Device升级管理和Device命令管理为具有升级和命令执行功能的设备提供相关的接口,Device事件管理可以监控Mapper及其纳管的各个设备的运行状态。▍3.2 DMI 接口定义示例图 6 DMI设备管理部分接口定义示例如图6所示,为DMI设备管理部分接口定义,v1版本以gRPC proto的方式定义,可使用make dmi命令创建对应的gRPC-go代码。 ▍3.3 DMI 设备相关 CRD 定义如图7所示,是DMI设备相关CRD定义,主要分为Device和DeviceModel。其中DeviceModel与设备型号是一一对应的关系,代表同一类设备型号的共有属性,主要包含设备产生数据属性Properties和设备支持命令属性Commands。Device为设备实例,与真实的物理设备为一对一的关系,每个DeviceModel可以对应统一型号的多个Device实例。Device类型资源主要包含设备型号对应关系信息、设备协议配置信息、设备部署节点信息、设备状态信息以及设备数据Property采集配置信息。图 7 DMI 设备相关 CRD 定义 四、发布计划 四、发布计划DMI发布计划分为三个版本,Alpha版本提供设备管理相关功能实现,以及提供一个支持DMI接口的Mapper Demo。Beta版本支持设备命令管理、设备升级管理以及设备数据管理的能力,此外还会对接第三方平台,并提供相关对接Demo。GA版本会对多平台、多协议进行对接支持,另外会把设备安全以及事件管理的功能补全。图 8 DMI发布计划目前 KubeEdge Device IoT SIG 专注于第一阶段的设备管理和 Mapper Demo 的开发工作。欢迎大家通过下方联系方式联系我们,一起参与到方案设计和特性开发的工作当中本文作者:华为云 赵然 ;DaoCloud 道客 王梓龙附:KubeEdge社区贡献和技术交流地址网站: https://kubeedge.ioGithub地址: cid:link_1地址: https://kubeedge.slack.com邮件列表: https://groups.google.com/forum/#!forum/kubeedge每周社区例会: https://zoom.us/j/4167237304Twitter: https://twitter.com/KubeEdge文档地址: https://docs.kubeedge.io/en/latest/
-
【功能模块】华为鲲鹏920 Robox【操作步骤&问题现象】1、将robox 搭配的安卓7自己升级到安卓9,请问下,转码程序需要升级吗?【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
8月18日,华为云TechWave云原生数据库峰会在深圳举办。华为云与中国信通院云计算与大数据研究所共同发布了业界首个《云原生数据库白皮书》,梳理云原生数据库全流程概念及方法。华为云还与沃趣科技、明源云发布基于华为云云原生数据库GaussDB的联合解决方案,助力客户激活数据价值。会上,华为云CTO张宇昕表示:“数据库经历了线下部署和云化部署阶段,进入到云原生时代,云原生数据库已成为云上数据库使用的标准范式。华为云GaussDB践行云原生思维,将围绕Serverless、Regionless、Modeless三大方向构建核心能力,实现极致弹性、全域可用和极简体验,以满足企业上云和智能升级对时效性、可用性、混合负载等方面的诉求,打造企业核心业务云化的智能数据基座。1、云原生数据库持续演进 支撑客户随时、随地、随心使用如今,企业数字化已经进入深水区,业务数据总量呈现爆发式增长,新业务、新场景对数据库的时效性、可用性、混合负载以及性价比等提出了新的挑战。中国信通院云计算与大数据研究所副所长魏凯表示:“为应对上述挑战,数据库技术正朝着降低成本提升易用性、保障数据安全可信、提升功能增强性能、满足新兴业务需求四大目标演进,云原生数据库则是数据库技术发展的主要方向之一。”云原生数据库是为云架构而设计和构建的数据库,具备更高的扩展性,支持多租户、分布式部署等能力。张宇昕指出:“云原生数据库Serverless的特性增强了弹性、降低了成本,Regionless特性提高了可用性和扩展性,而Modeless特性提升了易用性和效率,在新场景和新应用中能够支撑企业业务的高效运转。Serverless让资源极致弹性传统的烟囱式建设模式会导致响应慢、资源利用率低、系统能力缺乏弹性等问题,难以应对业务突发情况及满足业务快速上线需求。华为云云原生数据库GaussDB具备存算分离、资源池化能力,能够提供多维度的弹性服务,将资源弹性速度从分钟级缩短至秒级,随时响应业务需求。Regionless让数据库全域可用随着出海趋势的到来,中国企业正蓄势跳跃到一个全新发展阶段,跨区域访问和7*24小时线上化成常态。在该背景下,客户存在时延高、体验差、投入成本大等问题,且数据安全与业务连续性面临挑战。华为云云原生数据库GaussDB支持跨AZ、跨Region的全球部署,业务可以在任意地方进行接入和访问,同时带来跨地域的高可用。Modeless带来数据库极简体验传统的数据库只能支持单一负载(TP 或者AP)或者单一模式(KV、文档、时序、宽表等),难以做到一体化的数据处理分析,在线化、实时化地发挥数据价值。华为云云原生数据库GaussDB分别采用HTAP和多模数据库技术,一个入口处理多样负载、一个入口处理多种数据类型,实现一站式处理,业务接入效率可从数月缩短至数天。华为云数据库服务产品部总经理苏光牛表示:“云原生数据库能够让客户更高效地使用数据库,从而构建起敏捷智能的企业数字化业务。特别是进入云原生2.0时代,新应用、新场景驱动数据库实现三大转变,即从以资源为中心到以应用为中心、从以地域为中心到以流量为中心、从以负载为中心到以数据为中心。云原生数据库与生俱来的优势与特征,促使越来越多的用户更加坚定地选择云原生数据库。”为加速企业拥抱云原生数据库,华为云与中国信通院云计算与大数据研究所联合撰写《云原生数据库白皮书》,系统阐述了云原生数据库的发展趋势与现状,从云原生数据库应用场景、技术架构、关键技术以及不同场景下的生产实践,详细介绍了云原生数据库的技术模式,并结合当前应用现状及问题,指明未来云原生数据库的技术方向,力求梳理云原生数据库全流程概念及方法。2、联合生态伙伴发布创新解决方案 让云原生数据库走进千行百业目前华为云已与80多家数据库领域的ISV建立合作关系。华为云与沃趣科技联合打造的QFusion平台在能源、机场等多个行业为客户创造价值。华为云与明源云联合打造的行业ERP解决方案,以数据库为抓手,盘活数据资产,让数据成为血液流动,加速不动产工程数字化。在落地实践中,华为云云原生数据库GaussDB已在2500多家客户规模商用,覆盖金融、政企、游戏、互联网、制造、电商等行业。在游戏行业,华为云为迷你创想成本降低60%,数据库承载量提升3倍,轻松应对1亿多月活;在音视频行业,华为云凭借超高性能和极致弹性能力,提升了多多视频用户的观看体验,为2.6亿用户打开新视界;在互联网行业中,华为云高效支撑华为终端7.3亿月活用户的日常使用,万亿级数据记录,百万级QPS,数据库资源与运维成本整体下降30%。数字化转型是一项复杂的长期工程,不仅需要多方技术力量的配合,更需要大胆创新。华为云践行“一切皆服务”的理念,持续深耕数据库技术和解决方案创新,推动更多企业安心上云、轻松用云,为企业数字化转型提供无限可能。
-
过去五十年里,数据库产品形态经历漫长的变迁与更迭。从大型机集成、封闭的数据库服务,到小型机时代经典的IOE数据库架构,再到互联网带来的MySQL开源数据库浪潮,直至云计算兴起开启了云数据库的时代。究其原因,数据库的发展始终与用户需求变迁紧密相关。如今,云原生数据库又脱颖而出,不仅成为AWS、华为云等一众厂商们力推的数据库发展方向,更有望书写数据库市场的新格局。从云数据库到云原生数据库,其中产生了哪些关键变化?为何数据库厂商们纷纷瞄准云原生数据库?云原生数据库会是用户们的真命天子么?面对种种疑问,华为云数据库服务产品CTO庄乾锋直言:“从用户商业应用需求的变化角度看,云原生数据库会成为用户必然的选择。”01云原生数据库为何备受关注要了解云原生数据库为何备受关注,首先需要知道云原生近年来巨大的影响力。云原生,被认为是以容器、微服务和DevOps等技术为基础而建立的一套云技术产品体系,可以充分发挥云计算弹性、分布式等优势,实现快速部署、按需伸缩和灵活交付。可以说,云原生被认为是云计算最重要的发展方向,也是企业数字化转型和上云的必经之路。如今,云原生技术已从单一容器技术发展到庞大的全栈化云原生技术体系。以CNCF社区(云原生计算基金会)为例,经过六年发展,其已经囊括了数据库、中间件等20多类的技术群。那么,从云数据库到云原生数据库,数据库到底有哪些不同?对此,庄乾锋表示道,“云原生数据库不再是简单的资源供给,而是在架构和技术上能感知应用特征。云原生数据库的一切设计围绕用户应用需求出发,目标是让应用能更智能、更高效地使用数据库。”事实上,云数据库更像是传统数据库按照云模式来提供的数据库服务,存在诸如存储空间浪费、系统性能有限、业务应用受限等缺点,并且这些缺点往往会在当前新的业务场景中得到放大。以保险行业为例,随着互联网保险的兴起,保险公司的业务迅速从线下转向线上,业务场景走向规模化、碎片化和实时化,保险公司业务随时需要经受考验,“水滴筹的一个热点事件,可能就会瞬间给保险公司巨大的业务量。因此,从商业上考虑,用户也在逼着自己走向云原生数据库。”随着企业上云成为大势所趋,各大云服务商们最早意识到云原生数据库的重要性,并且近年来纷纷推出相应的云原生数据库服务。其中,中国各大云服务商在市场中颇为抢眼,其中华为云又尤为表现突出。早在2019年,华为云就推出了云原生数据库GaussDB for MySQL,并且进行多项技术变革,使之成为市场的优秀代表。从2020年开始,华为云结合自身的经验总结与行业实践,又提出了云原生2.0理念,从理念层面、技术层面来推动包括云原生数据库在内的云原生服务在传统行业落地。据悉,针对用户在电商秒杀大促、爆款游戏、政务核心业务、实时供应链扥新业务场景带来的各种诉求,华为云云原生数据库GaussDB再次进行架构升级,以满足各行各业数字化转型的新需求。02架构升级带来什么如今,业务应用的变化一日千里。以大促为例,几年前还是互联网巨头的专属,如今则成为零售、垂直媒体、银行等客户的核心业务,这些业务不可预测性强、极端流量峰值高,相比于互联网巨头丰富的资源与人才配置,很多传统企业并无太多经验,面对时效性、可用性、混合负载、成本等一系列新挑战而“捉襟见肘”。在庄乾锋看来,很多新的业务跟大促类似,真正从需求的角度推动数据库的转变,具体而言就是以资源为中心到应用为中心、从地域为中心到流量为中心,以及从负载为中心到数据为中心,“云原生数据库一能够带来极致弹性,让用户按需使用,二则安全可靠和易可扩展,保障业务规模化的安全运行;三则是降低企业门槛,应用在架构设计、业务处理与切换等方面透明,满足企业多元化需求。”不仅如此,华为云GaussDB在几大关键技术进行了迭代升级,包括NDPQ、ALT、HTAP和多模架构等在业界中具备核心竞争力的技术,全面满足用户各种应用场景的需求。首先是NDPQ(Near-Data Parallel Query)近数据并行查询。云原生数据库的存算分离架构随着业务规模的提升,计算与存储节点通过网络通信,往往会存在网络带宽和延迟的制约。为此,华为云GaussDB NDPQ采用近数据计算下推的设计,避免在分布式系统中移动数据和大量网络流量的产生,并让数据处理在其所存储的地方进行,极大节约了网络带宽资源。“目前NDPQ是华为云数据库所独有的特性,通过近数据计算下推+并行查询,不仅可以将数据查询性能发挥到极致,更可以极大提升数据库的资源利用率。”庄乾锋补充道。其次是ALT(应用无损透明倒换)。在数据库日常进行的主备倒换、小版本升级和规格变更时,可能会造成实际业务中用户会话中断,对于业务连续性造成一定的影响,而ALT则以用户连接为颗粒度,当用户进行主备切换、小版本升级或者规格变更时,系统可以打包用户的会话上下文状态,在达到安全的事务边界后,确保会话上下文状态被完整重放至目标节点并与原会话一一关联保证业务持续性,不受各种操作的影响。第三则是HTAP。众所周知,随着数据驱动型场景的井喷,数据产生方式、规模、速度与过去大不同,数据消费的人群、规模和场景丰富场景迅速增加,数据库OLTP场景和OLAP场景开始加速融合,也推动了数据库HTAP架构的崛起。与SAP HANA这种混合负载的内存数据库不同,新一代的HTAP架构数据库具备显著的特点就是分布式+云原生。以华为云GaussDB的HTAP架构为例,将OLAP和OLTP能力深度融合、统一入口和自动分流,达到数据准实时一致,支持各种混合负载的应用场景。庄乾锋表示:“当前HTAP存在着各种技术路线,华为云则根据当前用户实际需求,打造了HTAP架构,实现统一入口和应用透明,架构在业界云厂商中具有领先性。”最后则是多模态。当前在很多业务场景中,用户除了使用关系型数据库能力之外,还会用到诸如图数据库、时序数据库等能力,如果数据需要转换、导出,不仅容易产生安全问题,多套数据库的维护和开发还将提升成本。因此,多模数据库架构统一数据访问和维护接口,可以大幅简化运维和开发人员的工作,还能确保安全性。以华为云云原生数据库GaussDB的多模架构为例,用户既可以使用MySQL、PostgreSQL等SQL接口访问数据库,还可以使用Redis、MongoDB等NoSQL接口访问,支持KV模型、时序模型和文档存储模型等,用户可以自由地在不同的云数据库之间迁移,满足业务的多样性需求和数据的自由流动。“华为云希望通过GaussDB架构的升级,第一、Serverless化,真正让用户实现以应用为中心,按需使用,TCO更低;第二、Regionless化,通过Global Database、全域分层式索引、全域一致性集群等技术,帮助数据自动流动,满足用户因为业务地域性发展的需求,业务流量在哪里,GaussDB就能部署在哪里,迅速响应客户的业务需求;第三、Modeless化,简化业务的复杂度,通过一个入口,实现应用的透明,以及数据自由流动。”庄乾锋总结道。03全栈技术创新华为云数据库后劲十足放眼全球,在开源和云的驱动下,云原生数据库正在迅速颠覆传统的数据库市场。在中国市场,数据库云化的趋势正在加速。IDC最新数据显示,2021全年中国关系型数据库市场规模达到27.7亿美元,同比增长36%;其中,公有云关系型数据库规模达15.4亿美元,同比增长49%,公有云模式占比提升至55.6%。面向未来,云原生数据库将成为市场竞争的持续焦点。Gartner 预测,到2025 年,基于云原生平台的数字化业务比例将达到95%,将带来云原生数据库市场的快速增长。面对潜力如此巨大的市场,除了华为云等云服务商之外,亦有传统老牌数据库巨头、各种初创数据库公司加入竞争之中。那么,华为云如何看待未来的市场机会,自身的竞争优势在哪里?对此,庄乾锋认为,云原生数据库将成为云上数据库使用的标准模式,华为云在从用户需求、全栈技术创新和开放生态三个角度发力,持续构筑自身的核心竞争力,引领云原生数据库市场的发展。华为云首先会持续聚焦数据库的主流生态,以用户业务需求为导向进行产品/服务的创新。“无论环境或者业务如何发展,全球用户一定会走向云原生的时代。华为云核心思路就是打造符合市场发展规律和需求的具有竞争力的云原生数据库。”另外,华为云会聚焦数据库全栈技术的创新。事实上,数据库作为三大根技术之一,与其他技术紧密联系。比如ARM服务器的兴起、处理器走向多核化、SCM新介质的兴起、AI技术的融入等,进一步要求厂商能够具备全栈技术的创新能力,打造出更加优秀的云原生数据库产品。不同于其他厂商,华为云正是业界少有的具备全栈技术能力的厂商。例如,基于内存池的HTAP是一个重要的创新方向,它需要将内存池技术和HTAP进行结合,充分发挥软硬件协同的能力,彻底解决内存池化的各种数据挑战,而华为云云原生数据库GaussDB已经在该领域走在业界的前列;又如,利用AI技术来实现数据库的自动驾驶也是业界重要的方向,华为云GaussDB融入AI技术,数据库管理智能高效,具备自动检测、自诊断、自调优和自运维等功能。第三则是开源开放,华为云携手合作伙伴实现共赢。华为云将GaussDB单机主备核心能力开源,打造openGauss开放生态,积极同时对主流开源数据库提供广泛的支持,与合作伙伴一起为客户提供创新数据库解决方案,满足用户不同场景的数据库应用需求。信通院调研数据显示,80%以上的企业认为云原生数据库是未来的发展方向。可以说,云原生数据库已经成为燎原之势,受到多个行业用户的关注和使用。面向未来,随着各行各业用户数字化转型的深入,新场景、新应用所迸发出来的新需求,将会推动云原生数据库市场持续壮大,也会驱动云原生数据库成为数据库市场的创新高地,而像华为云这种具备全栈创新能力、聚焦主流生态和用户需求导向的厂商,有望迎来更大的舞台。
-
《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》(简称“十四五”规划)中提出要加快推动数字产业化,年初发布的《“十四五”数字经济发展规划》中再次提出要大力推进产业数字化转型。数据作为生产要素在企业数字化转型的进程中扮演着重要的角色。激活数据要素价值,是促进我国发展数字经济、优化领域资源配置、驱动企业降本增效的关键一招。云原生数据湖支持异构数据灵活存储、计算资源弹性伸缩,能够帮助企业应对当前数据结构愈发复杂、数据处理分析时效性要求不断提高的业务环境,进而加速数据价值变现。云原生数据湖目前仍处于发展初期,技术路线不统一,业内产品能力良莠不齐。为进一步规范云原生数据湖技术体系,中国信通院依托中国通信标准化协会大数据技术标准推进委员会(CCSA TC601),联合腾讯云、阿里云、华为、星环、百度、海康威视、亚信、中国移动云能力中心等企业的二十余位专家共同参与编制完成了《云原生数据湖技术要求与测试方法》,旨在帮助大数据产品供应商及用户方评估云原生数据湖的技术能力和研发方向。云原生数据湖首批评测已于2022年上半年展开,并于6月份的“大数据产业峰会”上颁发了证书。本次评测涉及云原生数据湖的存储能力、计算能力、安全能力、数据管理能力、兼容能力、运维能力、湖应用能力和高可用能力,共计28个必选项和18个可选项。首批共有7款产品参与评测(详见:中国信通院公布第十四批“可信大数据”评估评测结果,34家企业完成),从测评中可以发现,云原生数据湖容器化、Serverless能力有待提升。目前,第二批云原生数据湖评测正式启动! 报名网站:http://databench.cn/index来源:中国信通院
-
感谢大家对本次直播的支持与参与,恭喜以下获奖的童鞋,请于8月29日前反馈您邮寄信息,以便准时收到奖品,我们将于15个工作日左右寄出。邮寄信息填写地址:cid:link_0逾期未反馈信息则视为自动放弃获奖资格,请知悉。有疑问可咨询蛋花(微信号:Huawei-danhua)<优质提问获奖公示>:评选以下3个优质问题送华为定制无线鼠标。<视频号观看top3获奖公示>:关注视频号,且观看直播时长top 3(≥20min)用户送华为定制T恤。<直播观后有感获奖公示>:评选以下3个最有价值内容送华为定制T恤。直播简介【专家简介】茆正华 派拉软件研发总监、CZTP零信任专家程泽 华为云DTSE技术布道师【直播简介】本期直播分享云原生架构下的身份管理平台,为企业、机构、开发者构建云安全数字身份入口,赋能用户全场景下的数字身份治理与链接服务。参与互动交流还有华为周边好礼等你领!【直播时间】2022年8月25日 19:00-20:30直播链接:cid:link_1活动介绍【互动方式】您可以在本帖分享直播观后感(直播收获或直播感受),结束后讲师会评选3个最有价值内容。【活动时间】8月25日 19:00—8月26日 24:00【奖励说明】评奖规则:8月25日 19:00开始,您可以在本帖分享300字以上直播观后感(直播收获或直播感受),评选3个最有价值内容送华为定制T恤。奖品:更多有奖活动:cid:link_3【注意事项】1、为保证您顺利领取活动奖品,请您在活动公示奖项后2个工作日内私信提前填写奖品收货信息,如您没有填写,视为自动放弃奖励。2、活动奖项公示时间截止2022年8月29日,如未填写视为弃奖。本次活动奖品将于奖项公示后15个工作日内统一发出,请您耐心等待。3、活动期间同类子活动每个ID(同一姓名/电话/收货地址)只能获奖一次,若重复则中奖资格顺延至下一位合格开发者,仅一次顺延。4、如活动奖品出现没有库存的情况,华为云工作人员将会替换等价值的奖品,获奖者不同意此规则视为放弃奖品。5、其他事宜请参考【华为云社区常规活动规则】。
-
zhangwei0721+邀请者账号hw21098757
-
云原生数据库峰会获奖公示本次活动因前期论坛升级等原因,导致统计数据有误,8月25日15点之前给各位发的收货问卷链接作废,给大家带来不便,深感不安和抱歉。中奖名单最新公示时间为2022年8月25日晚6点50分,公示时间至8月29日0点,以此版本为准。用户无疑议后,8月30日进行收货问卷链接发放,9月2日12点停止收集问卷,过期不候,望周知。获奖活动获奖回帖ID获奖奖品盖楼打卡活动yd_270337844折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)Erik_long折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)这个地方是昵称折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)DragonCurry折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)ziyuwei折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)mayingjdzx折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)huaweiqiujie折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)上帝之眼折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)hwzhaoyuhua折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)zgx1636964790折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)xuexiaozhaoyh折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)wangyuyanhw折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)王毛毛折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)xiexinlian折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)hwwangyuy折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)天意不可违、折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)yd_54817690折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)Gezelligheid折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)shao1112折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)ty32折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)home520折叠支架/罗技鼠标/公牛电源/帆布袋(4选1)以上中奖名单中,使用微信抽奖重新随机抽取一个中奖用户加赠Hlink保温杯,恭喜Erik_long,想查看抽奖过程的用户,请联系微信:zhangyuxiao6012,以示公正邀请报名活动yd_270337844 折叠支架hw21098757罗技鼠标M275linshan6408折叠支架suifeng1324折叠支架yaoyao15折叠支架zero766 25HiLink智能保温杯ziyuwei 50HUAWEI FreeBuds 4i 无线耳机活动时间:2022/8/10-8/18活动内容:活动1 峰会"预约报名",回帖盖楼奖励奖励及规则:盖楼层数X中奖用户数中奖楼层奖品名称XX/10所有楼层尾数6的楼层的用户 1.折叠支架/罗技鼠标/公牛电源/帆布袋(随机发)X≥50X/10+1所有楼层尾数8的楼层的用户 2.在1奖品基础上,随机抽1位加赠GaussDB纪念T恤一件X≥100X/10+1所有楼层尾数2的楼层的用户 3. 在1奖品基础上,随机抽1位加赠HiLink智能保温杯1个参与方式:完成《华为云TechWave云原生数据库峰会》预约报名,将报名成功截图进行回帖盖楼,>>>峰会报名入口回复格式:华为云账号+报名成功截图(重复盖楼不超过3次) 活动2 呼朋引伴,回帖盖楼奖励奖励与规则:相互填写对方的华为云账户不算邀请哦!有效邀请人数X奖品礼品数量X≥2价值29元手机支架200X≥10价值79元罗技鼠标M275/纪念T恤(随机发)100X≥20价值139元HiLink智能保温杯20X≥50价值499元HUAWEI FreeBuds 4i 无线耳机 3X≥200价值1488元华为WATCH GT2运动款1参与方式:分享活动海报,邀请好友报名参会,好友完成报名,参与盖楼回帖回复格式:华为云账号+邀请者华为云账号+报名成功截图
-
在上一篇基于docker的安装中,我们使用enmotech的最新镜像完成了安装和启动。容器部署非常方便,卸载更是简单。但是这个特点如同一柄双刃剑,带来便利的同时,也会有一些缺点。容器一旦删除,容器内的所有数据和配置都会丢失。即使重新运行一个新的容器,得到的不过是一个崭新的初始状态的数据库。所以,对于数据库这种需要持久化的数据来说,还需要看下如何才能防止因为容器的删除或损坏导致数据的丢失。在openGauss数据库中,通过指定相关参数来实现此功能。数据库持久化启动我们本次持久化测试的环境基于上一篇在docker部署openGauss。我们先把上次启动的容器实例删掉。[root@pekphisprb70593 docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 573ea1edffb8 enmotech/opengauss:3.0.0 "entrypoint.sh gauss…" 3 days ago Up 3 days 5432/tcp opengauss [root@pekphisprb70593 docker]# docker stop 573ea1edffb8 573ea1edffb8 [root@pekphisprb70593 docker]# docker rm 573ea1edffb8 573ea1edffb8以下命令使用原opengauss镜像启动一个容器:docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 -v /enmotech/opengauss:/var/lib/opengauss -p 15432:5432 enmotech/opengauss:3.0.0其余参数的解释可以参考上一篇安装。这里我们主要关注下 -p -v两个参数。-p参数:openGauss的默认侦听启动在容器内的5432端口上,如果想要从容器外部访问数据库,则需要在docker run的时候指定-p参数。比如以上命令将允许使用15432端口在容器外访问数据库。上述命令正常启动容器数据库之后,可以通过外部的gsql进行数据库访问。-v 参数:指定Docker中openGauss的所有数据文件,容器内是/var/lib/opengauss目录 ,宿主机是/enmotech/opengauss目录。如果宿主机的/enmotech/opengauss如果不存在,docker会自动创建,但是必须是绝对路径。Docker对其拥有读写权限。在容器内部查看数据库目录。如下图,已在容器内/var/lib/opengauss创建了data目录。[root@pekphisprb70593 docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89747134cd4d enmotech/opengauss:3.0.0 "entrypoint.sh gauss…" About a minute ago Up About a minute 0.0.0.0:15432->5432/tcp, :::15432->5432/tcp opengauss [root@pekphisprb70593 docker]# docker exec -it 89747134cd4d /bin/bash root@89747134cd4d:/# cd /var/lib/opengauss/data/ root@89747134cd4d:/var/lib/opengauss/data# ls asp_data gs_gazelle.conf pg_audit pg_errorinfo pg_location pg_notify pg_snapshots PG_VERSION postmaster.opts undo base gs_profile pg_clog pg_hba.conf pg_log pg_perf pg_stat_tmp pg_xlog postmaster.pid gaussdb.state gswlm_userinfo.cfg pg_csnlog pg_ident.conf pg_logical pg_replslot pg_tblspc postgresql.conf postmaster.pid.lock global mot.conf pg_ctl.lock pg_llog pg_multixact pg_serial pg_twophase postgresql.conf.lock sql_monitor 我们在宿主机上查看下数据库目录。如下图,已在宿主机上/enmotech/opengauss创建了data目录。可以看到容器中的数据已存储到操作系统中。数据持久化验证下面我们通过建表、插入数据查看是否可以完成数据的持久化存储。进入容器,登录数据库。[root@pekphisprb70593 docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89747134cd4d enmotech/opengauss:3.0.0 "entrypoint.sh gauss…" About a minute ago Up About a minute 0.0.0.0:15432->5432/tcp, :::15432->5432/tcp opengauss [root@pekphisprb70593 docker]# docker exec -it 89747134cd4d /bin/bash root@89747134cd4d:/var/lib/opengauss/data# su - omm omm@89747134cd4d:~$ gsql omm=# 是个新的数据库实例,看下我之前安装时测试创建的用户wxx在不。不出所料,就是不存在的。因为之前操作的时候并没有进行持久化的启动。创建表test1,然后插入数据。create table test1(id int,name varchar(20)); INSERT INTO test1 VALUES (1, 'oligei');关闭数据库。omm@89747134cd4d:~$ gs_ctl stop -D /var/lib/opengauss/data/ [2022-07-19 02:46:25.253][423][][gs_ctl]: gs_ctl stopped ,datadir is /var/lib/opengauss/data waiting for server to shut down....[root@pekphisprb70593 docker]#启动数据库。[root@pekphisprb70593 docker]# docker start 89747134cd4d 89747134cd4d [root@pekphisprb70593 docker]# docker exec -it 89747134cd4d /bin/bash root@89747134cd4d:/# su - omm omm@89747134cd4d:~$ gsql验证一下容器重启后,原来的数据还在。只是重启的话,那数据没丢一点都不意外。我们更多关注的是容器删除这种情况。[root@pekphisprb70593 docker]# docker stop 89747134cd4d 89747134cd4d [root@pekphisprb70593 docker]# docker rm 89747134cd4d 89747134cd4d [root@pekphisprb70593 docker]# docker exec -it 89747134cd4d /bin/bash Error: No such container: 89747134cd4d可以看到原容器已删除成功。现在重新启动,看下是否持久化成功。这里还是需要使用之前指定的存储路径的。[root@pekphisprb70593 docker]# docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 -v /enmotech/opengauss:/var/lib/opengauss -p 15432:5432 enmotech/opengauss:3.0.0 [root@pekphisprb70593 docker]# docker ps [root@pekphisprb70593 docker]# docker exec -it 74b94a7bda80 /bin/bash root@74b94a7bda80:/# su - omm omm@74b94a7bda80:~$ gsql omm=# select * from test1;结果上个图。由上图也可以看出,原来的表记录依然存在,数据库持久化成功。
-
Docker是一个开源的应用容器引擎,让开发者可以把应用及依赖包打包到一个可移植的容器中,然后发布到流行的Linux或Windows机器或虚拟机上。openGauss是一款高性能、高安全、高可靠、高智能的企业级开源关系型数据库。openGauss 3.0.0 发布后,云和恩墨制作了docker版本。基于此, 我们可以不需要使用原始安装包和一系列安装配置,可以直接运行docker镜像的版本。本文主要介绍通过Docker安装openGauss 3.0.0,方便DevOps用户的安装、配置和环境设置。1.安装Docker首先准备一台x86_64已安装了CentOS 7.6的服务器。我用的还是上次centos安装时找小伙伴申请的华为云ECS服务器,不过卸载掉了已安装的openGauss。(可选)配置yum源。yum是centos下更新、管理软件的命令,yum源是yum命令去哪里取安装包的地图,yum命令查询yum源也就是repo文件上配置的地址去取相应的rpm包进行安装。常见的yum源:华为云、网易、阿里云等。我使用的是华为云的镜像 https://mirrors.huaweicloud.com/home ,需要先注册。然后按照图片指示和网站描述的步骤和命令进行操作,注意换一下CentOS的版本。执行wget 获取repo的时候,如果执行失败, 可以尝试把https 换成http。如果你可以直接执行 yum search zlib-devel 而没有报错的话就说明无需额外配置,可以直接下一步了。有些公司内无法连接公网的需要自己配置相应的公司内部的yum源。然后下载需要的安装包。yum install -y yum-utils等待下载完成。设置镜像的仓库 。这里我还是使用的是华为云的镜像,然后按照图片指示和网站描述的步骤和命令进行操作,注意根据OS切换页签到Fedora/CentOS/RHEL这里。 PS: 这个也可以是其他网站的源,网上有很多,这里我就不再赘述。这里第2步执行wget 获取repo的时候,如果执行失败, 可以尝试把https 换成http。执行 sudo yum install docker-ce 的时候要根据提示输入y ,等到提示Complete ! 就安装好了。启动Docker,状态为active(running)就OK。systemctl enable docker systemctl start docker systemctl status docker2. 配置Docker设置docker加速。由于国内直接访问docker hub网速很慢,拉取镜像的时间很长。通常我们使用镜像加速或者从国内的一些平台镜像仓库上拉取。创建 /etc/docker/daemon.json 新增内容 。cd /etc/docker/ vi daemon.json配置几条国内的加速地址。我这分别是Docker中国区的、网易的和中国科技大学的。{ "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"] }重启docker。systemctl daemon-reload service docker restart执行 docker info 命令查看最后是否有新加的registry-mirrors部分。拉取hello world验证下,如图所示表示成功。docker pull hello-world3 拉取openGauss镜像openGauss 3.0.0 有企业版和轻量版。轻量版定位是在软硬件资源受限场景下仍可使用openGauss,但是保留了企业版大部分的特性,轻量版通过参数默认关闭的特性:Ustore、Asp、增量检查点、双写、列存、段页式存储等,还有些不支持的特性如ORC文件访问、Kerberos安全校验、AI、全密态数据库、CM、OM。工具也进行了精简,保留了用户常用的gsql、gs_ctl、gs_guc、gs_dump、gs_restore等工具,和安装部署、升级的工具liteom。但是对于个人或者实验环境也足够了。前两部稍微繁琐一丢丢,但是配置好了一劳永逸,可以随意拉镜像了。openGauss镜像这里我们用的云和恩墨的镜像。从3.0.0版本开始(包括3.0.0版本)容器使用Lite版安装包,基础镜像的大小进一步降低到100MB以下;默认启动后的空载内存占用小于200MB;在容器内部的操作系统级别添加vi,ps等基础命令。因为3.0.0是最新版本,所以latest就是3.0.0。这里,直接用的指定版本。docker pull enmotech/opengauss:3.0.0执行docker images查看下我们的已有镜像,enmotech/opengauss:3.0.0 也在此列。4. 开启实例镜像拉取后就可以一条命令启动实例。GS_PASSWORD=Enmo@123 可以修改成自己熟悉的密码。docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 enmotech/opengauss:3.0.0GS_PASSWORD:设置openGauss数据库的超级用户omm以及测试用户gaussdb的密码。如果要从容器外部(其它主机或者其它容器)连接则必须要输入密码。GS_NODENAME:数据库节点名称,默认为gaussdb。GS_USERNAME:数据库连接用户名,默认为gaussdb。GS_PORT:数据库端口,默认为5432。除了GS_PASSWORD外都可以使用默认值。若要设定非默认值,和GS_PASSWORD一样使用 -e 设定。进入容器,测试连接[root@pekphisprb70593 dockerfiles]# docker ps --获取CONTAINER ID [root@pekphisprb70593 dockerfiles]# docker exec -it 1d54ee4a5f40 /bin/bash --把这个命令里的 1d54ee4a5f40 修改为实际的ID然后就和在普通服务器一样操作了。openGauss镜像配置了本地信任机制,因此在容器内连接数据库无需密码。root@1d54ee4a5f40:/# su - omm omm@1d54ee4a5f40:~$ gsql使用docker安装确实简单又快捷。5. Q&A.Q:docker 启动实例的时候报错“docker: Error response from daemon: Conflict. The container name "/opengauss" is already in use by container”,但是docker ps又查不到,而且也连不上 ?A:先执行docker ps -a 查看所有进程,看到处于Exited 状态。之前已经启动过opengauss这个名字的实例了,再次执行的话就会报冲突。至于查不到,原因很可能是启动后重启了docker。解决办法有两个,一是创建实例的时候修改实例名,如opengaussNew;二是删除原来的opengauss实例,然后重新启动实例。docker rm 实际的CONTAINER IDQ:如果不需要了,要怎么卸载?A:如果不需要了,就可以不需要卸载啊后处理,直接通过删除容器的方式删除数据库。−删除容器docker ps -a docker rm 实际的CONTAINER ID−删除镜像docker rmi -f 镜像ID
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签