云服务器内容精选

  • 操作步骤 准备单节点配置文件和数据目录,以单节点方式启动进程。 配置文件如下(restoreconfig/single_40303.yaml)。 net: bindIp: 127.0.0.1 port: 40303 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg1/configsvr.pid} storage: dbPath: /compile/cluster-restore/cfg1/data/db/ directoryPerDB: true engine: wiredTiger wiredTiger: collectionConfig: {blockCompressor: snappy} engineConfig: {directoryForIndexes: true, journalCompressor: snappy} indexConfig: {prefixCompression: true} systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/cfg1/log/configsingle.log} 准备数据,将解压后的configsvr文件拷贝到单节点dbPath目录下。 cp -aR /compile/download/backups/cac1efc8e65e42ecad8953352321bfeein02_41c8a32fb10245899708dea453a8c5c9no02/* /compile/cluster-restore/cfg1/data/db/ 启动进程。 ./mongod -f restoreconfig/single_40303.yaml 连接单节点,执行配置命令。 连接命令:./mongo --host 127.0.0.1 --port 40303 执行如下命令,修改副本集配置信息。 var cf=db.getSiblingDB('local').system.replset.findOne(); cf['members'][0]['host']='127.0.0.1:40303'; cf['members'][1]['host']='127.0.0.1:40304'; cf['members'][2]['host']='127.0.0.1:40305'; cf['members'][0]['hidden']=false; cf['members'][1]['hidden']=false; cf['members'][2]['hidden']=false; cf['members'][0]['priority']=1; cf['members'][1]['priority']=1; cf['members'][2]['priority']=1; db.getSiblingDB('local').system.replset.remove({}); db.getSiblingDB('local').system.replset.insert(cf) 执行如下命令,清理内置账号。 db.getSiblingDB('admin').dropAllUsers(); db.getSiblingDB('admin').dropAllRoles(); 执行如下命令,更新dds mongos和shard信息。 db.getSiblingDB('config').mongos.remove({}); 先查询config.shards表中的多个shard的_id信息,用于下面语句的_id的查询条件。逐个更新每条记录。 db.getSiblingDB('config').shards.update({'_id' : 'shard_1'},{$set: {'host': 'shard_1/127.0.0.1:40306,127.0.0.1:40307,127.0.0.1:40308'}}) db.getSiblingDB('config').shards.update({'_id' : 'shard_2'},{$set: {'host': 'shard_2/127.0.0.1:40309,127.0.0.1:40310,127.0.0.1:40311'}}) db.getSiblingDB('config').mongos.find({}); db.getSiblingDB('config').shards.find({}); 执行如下命令,关闭单节点进程。 db.getSiblingDB('admin').shutdownServer(); 搭建configsvr副本集。 准备副本集配置文件和目录,将configsvr1节点的dbPath文件拷贝到其他两个节点目录下。 cp -aR /compile/cluster-restore/cfg1/data/db/ /compile/cluster-restore/cfg2/data/db/ cp -aR /compile/cluster-restore/cfg1/data/db/ /compile/cluster-restore/cfg3/data/db/ 修改configsvr-1节点配置文件,增加副本集配置属性(restoreconfig/configsvr_40303.yaml)。 net: bindIp: 127.0.0.1 port: 40303 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg1/configsvr.pid} replication: {replSetName: config} sharding: {archiveMovedChunks: false, clusterRole: configsvr} storage: dbPath: /compile/cluster-restore/cfg1/data/db/ directoryPerDB: true engine: wiredTiger wiredTiger: collectionConfig: {blockCompressor: snappy} engineConfig: {directoryForIndexes: true, journalCompressor: snappy} indexConfig: {prefixCompression: true} systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/cfg1/log/configsvr.log} 启动进程。 ./mongod -f restoreconfig/configsvr_40303.yaml 修改configsvr-2节点配置文件,增加副本集配置属性(restoreconfig/configsvr_40304.yaml)。 net: bindIp: 127.0.0.1 port: 40304 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg2/configsvr.pid} replication: {replSetName: config} sharding: {archiveMovedChunks: false, clusterRole: configsvr} storage: dbPath: /compile/cluster-restore/cfg2/data/db/ directoryPerDB: true engine: wiredTiger wiredTiger: collectionConfig: {blockCompressor: snappy} engineConfig: {directoryForIndexes: true, journalCompressor: snappy} indexConfig: {prefixCompression: true} systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/cfg2/log/configsvr.log} 启动进程 ./mongod -f restoreconfig/configsvr_40304.yaml 修改configsvr-3节点配置文件,增加副本集配置属性(restoreconfig/configsvr_40305.yaml)。 net: bindIp: 127.0.0.1 port: 40305 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg3/configsvr.pid} replication: {replSetName: config} sharding: {archiveMovedChunks: false, clusterRole: configsvr} storage: dbPath: /compile/cluster-restore/cfg3/data/db/ directoryPerDB: true engine: wiredTiger wiredTiger: collectionConfig: {blockCompressor: snappy} engineConfig: {directoryForIndexes: true, journalCompressor: snappy} indexConfig: {prefixCompression: true} systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/cfg3/log/configsvr.log} 启动进程。 ./mongod -f restoreconfig/configsvr_40305.yaml 等待选主成功。 ./mongo --host 127.0.0.1 --port 40303 执行命令rs.status(),查看是否已存在主节点Primary。
  • 准备目录 rm -rf /compile/cluster-restore/cfg* mkdir -p /compile/cluster-restore/cfg1/data/db mkdir -p /compile/cluster-restore/cfg1/log mkdir -p /compile/cluster-restore/cfg2/data/db mkdir -p /compile/cluster-restore/cfg2/log mkdir -p /compile/cluster-restore/cfg3/data/db mkdir -p /compile/cluster-restore/cfg3/log
  • 约束与限制 非细粒度灾备集群在数据同步期间,无法提供读写服务。 灾备集群在容灾任务停止或者异常但灾备集群正常的情况下,可以提供读服务,灾备切换成功后可以提供读写服务。 容灾创建后,生产集群快照功能正常使用,但是灾备集群禁用快照功能,以及生产、灾备集群均禁用恢复功能。 不支持逻辑集群。 不支持资源池。 使用冷热表后,冷数据同步依赖OBS。 容灾不支持同步配置的外部数据源数据。 容灾管理为同一租户下的双集群容灾。 创建容灾需要生产集群与灾备集群类型、版本号一致且逻辑同构。 Region内容灾生产集群和灾备集群需要在同一个VPC内。 Region内容灾在生产集群与容灾集群切换后绑定的弹性负载均衡(ELB)会自动切换到新的生产集群,过程中会有短暂的连接中断,请注意在变更时间窗内尽量避免业务语句写入。 Region内容灾在生产集群与容灾集群,原生产集群所在的EIP和内网 域名 ,连接IP地址不会自动切换,业务系统中如果有使用EIP、域名或者IP方式连接,需要切换到新集群。
  • 概览 容灾,即在另一个可用分区(Region内)部署一个同构的 GaussDB (DWS)灾备集群,如果生产集群所处的地理位置发生自然灾害,或者集群内部出现了故障从而导致生产集群无法正常对外提供读写服务,那么灾备集群可以切换为生产集群,从而保障业务连续性。架构图如下所示: Region内容灾特性仅8.1.1及以上集群版本支持。 实时数仓(单机部署)不支持容灾功能。 DWS 3.0集群和多AZ集群暂不支持容灾功能。 若用户灾备集群使用包周期套餐,则会在包周期到期冻结一段时间后自动删除,请用户及时续费,以免删除灾备集群导致容灾异常。
  • 使用本地集群KubeConfig文件 拿到ucs-ctl生成的KubeConfig之后,还需要使KubeConfig在节点上生效,步骤如下: 复制KubeConfig到节点上。 scp /local/path/to/kubeconfig user@remote:/remote/path/to/kubeconfig 如果当前节点添加过EnableSecretEncrypt环境变量,需要先取消。 unset EnableSecretEncrypt 使KubeConfig生效,可选方法: 方法一:复制到默认位置。 mv /remote/path/to/kubeconfig $HOME/.kube/config 方法二:环境变量指定。 export KUBECONFIG=/remote/path/to/kubeconfig 方法三:命令行参数指定。 kubectl --kubeconfig=/remote/path/to/kubeconfig 上述操作之后,就可以访问本地集群的API server了。关于KubeConfig更详细的用法可参考:使用kubeconfig文件组织集群访问Kubernetes。
  • 获取本地集群KubeConfig文件 KubeConfig是Kubernetes集群中组织有关集群、用户、命名空间和身份认证机制信息的配置文件,Kubectl使用KubeConfig来获取集群的信息并与API server进行通信。 获取本地集群的KubeConfig需要使用ucs-ctl工具,获取步骤如下: 使用ucs-ctl获取集群名称。 ./ucs-ctl get cluster 使用ucs-ctl导出指定集群的KubeConfig。 ./ucs-ctl get kubeconfig -c test-redhat86 -o kubeconfig 可以使用ucs-ctl get kubeconfig -h查看获取KubeConfig所使用到的参数。 -c, --cluster:指定待导出KubeConfig的集群名。 -e, --eip:指定API server的eip。 -o, --output:指定KubeConfig导出文件名。
  • 上传配置文件 登录U CS 控制台,单击待接入集群栏的“点击接入”进入集群接入界面,可选择“公网接入”和“私网接入”。 选择接入方式并下载代理配置文件。 若选择“公网接入”,直接在界面单击“下载文件”,下载本地集群代理配置文件“agent-[集群名称].yaml”。 若选择“私网接入”,需要先选择项目,再选择安装前准备(私网接入)中创建的终端节点,然后单击“下载文件”,下载本地集群代理配置文件“agent-[集群名称].yaml”。 集群代理配置文件存在私有秘钥信息,每个集群仅能下载一次,请您妥善保管。 输入集群安装所需参数并下载集群配置文件“cluster-[集群名称].yaml”。 若集群为1.28.5及之后版本,此处可选择“集群架构”X86 或者 ARM类型。 图1 下载集群配置文件 当前集群的节点CPU架构暂不支持异构混部。若本地集群安装失败,请参考本地集群安装失败怎么办? 1.28.5及之后集群版本,支持集群架构选择。 通过远程传输工具,使用root用户将下载的“agent-[集群名称].yaml”和“cluster-{集群名称}.yaml”文件上传到执行机的“/root/”目录下。 若您需要使用L4或L7负载均衡能力,则需要将集群网络类型配置为BGP,具体操作请参见Cilium。 执行机如果出现SSH连接超时,请参考虚拟机SSH连接超时处理方法处理。 选择集群架构后,请确认ucs-ctl的执行机与集群架构一致。
  • 外部依赖 表5 外部依赖项 依赖项 功能解释 DNS服务器 DNS服务器需要能够解析OBS、SWR、 IAM 、DNS等服务的域名,这些服务的域名请参见地区及终端节点。 公网接入情况下,节点可自动识别默认DNS配置,需提前将DNS服务器上游设置为公网DNS,接下来无需再手动进行DNS服务器配置。 私网接入情况下,节点无法识别默认DNS配置,因此需提前配置VPCEP解析能力,详情请参考安装前准备。若您还未搭建DNS服务器,可参考DNS进行搭建。 apt源或yum源 确保有可用的apt源或yum源,因为在本地集群执行纳管节点时(纳管节点是指待添加到本地集群管理的服务器),部分安装组件如ntp等,需要从apt源或yum源中获取依赖包。 须知: apt源操作适用于操作系统为Ubuntu的节点,yum源操作适用于操作系统为HCE或Redhat。 NTP服务器 可选,用于保证集群各节点时间同步,如果使用,推荐用户提供外置NTP服务器。
  • 磁盘挂卷 表6 磁盘挂卷 节点类型 磁盘挂载点 可用大小(GB) 用途 集群管理节点 /var/lib/containerd 50 存放containerd镜像目录 /run/containerd 30 containerd运行时目录 /var/paas/run 50 etcd数据目录(推荐使用ssd盘) /var/paas/sys/log 20 存放日志目录 /mnt/paas 40 容器运行挂载目录 /tmp 20 临时文件目录 集群计算节点 /var/lib/containerd 100 存放containerd镜像目录 /run/containerd 50 containerd运行时目录 /mnt/paas 50 容器运行挂载目录 /tmp 20 临时文件目录
  • 用户规划 表9 用户规划 用户 用户组 用户ID 用户组ID 密码 用途 root root 0 0 - UCS本地集群安装时使用的默认用户,也可以指定其他用户来安装本地集群。安装用户要求满足如下条件: 规划的所有集群管理节点密码一致。 用户具有完全的root用户权限。 说明: 安装完成后用户可以自行修改该用户密码或限制该用户root权限。 paas paas 10000 10000 - UCS本地集群服务进程的运行用户、用户组,在安装过程中创建。该用户和用户组对应名称为paas:paas,用户ID和用户组ID对应为10000:10000,因此安装前需要保证用户名、用户组名、用户ID和用户组ID不被占用。若发生冲突,需提前删除对应的用户或者用户组。
  • 资源规格 UCS所安装的本地集群为HA版,适用于商用场景,以满足容灾高可用需求。商用版资源规格如下所述: 表2 容器平台基础能力资源规格 节点类型 数量 CPU (Cores) Mem (GiB) Disk (G)-系统盘 Disk (G)-高性能盘 Disk (G)-数据盘 备注 集群管理节点 3 8 16 100 50 300 需要提供一个VIP用于高可用。 集群计算节点 按需 2 4 40 - 100 数量按需可扩展。 表3 容器智能分析节点资源规格 节点类型 CPU (Cores) Mem (GiB) 监控prometheus Requests:1 Limits:4 Requests:2 Limits:12 事件log-agent Requests:0.5 Limits:3 Requests:1.5 Limits:2.5 表4 云原生服务中心计算节点资源规格 类型 数量 CPU (Cores) Mem (GiB) Disk (G)-系统盘 Disk (G)-高性能盘 Disk (G)-数据盘 operator-chef 1 Requests:0.5 Limits:2 Requests:0.5 Limits:2 不涉及 不涉及 10(日志) helm-operator 1 Requests:0.3 Limits:1.5 Requests:0.3 Limits:1.5 不涉及 不涉及 10(日志) ops-operator 1 Requests:0.3 Limits:1.5 Requests:0.3 Limits:1.5 不涉及 不涉及 10(日志)
  • 防火墙规划 防火墙的规划需符合表1中要求。 表1 防火墙规划 源设备 源IP 源端口 目的设备 目的IP 目的端口(侦听) 协议 端口说明 侦听端口是否可更改 认证方式 加密方式 ucsctl执行机 源设备所在节点IP ALL 所有节点 目的设备所在节点IP 22 TCP SSH 否 证书/用户名密码 TLS v1.2 所有节点 源设备所在节点IP ALL NTP server 目的设备所在节点IP 123 UDP ntp 否 无 无 所有节点 源设备所在节点IP ALL DNS server 目的设备所在节点IP 53 UDP dns 否 无 无 所有节点 源设备所在节点IP ALL 自建APT源 目的设备所在节点IP 80/443 TCP http 否 无 无 所有节点 源设备所在节点IP ALL 集群负载均衡/VIP 目的设备所在节点IP 5443 TCP kube-apiserver 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP 1024-65535 所有节点 目的设备所在节点IP 1024-65535 ALL 无 否 无 无 所有节点 源设备所在节点IP ALL 所有节点 目的设备所在节点IP 8472 UDP vxlan端口 否 无 无 需要访问ingress的节点 源设备所在节点IP ALL 网络节点 目的设备所在节点IP 80/443/按需指定端口 TCP http 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP ALL 3台master节点 目的设备所在节点IP 5444 TCP kube-apiserver 否 https+证书 TLS v1.2 ucsctl执行机 源设备所在节点IP ALL 华为云OBS服务 obs.cn-north-4.myhuaweicloud.com 443 TCP http 否 https+证书 TLS v1.2 3台master节点 源设备所在节点IP ALL 华为云UCS服务 124.70.21.61 proxyurl.ucs.myhuaweicloud.com 30123 TCP grpc 否 https+证书 TLS v1.2 3台master节点 源设备所在节点IP ALL 华为云IAM服务 iam.cn-north-4.myhuaweicloud.com 443 TCP http 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP All 华为云SWR服务 swr.cn-north-4.myhuaweicloud.com 443 TCP http 否 https+证书 TLS v1.2 所有节点 源设备所在节点IP ALL Ubuntu官方源/国内代理源 按需配置 80/443 TCP http 否 无 无 监控节点 源设备所在节点IP ALL 华为云 AOM 域名对应IP地址 443 TCP http 否 https+证书 TLS v1.2 监控节点 源设备所在节点IP ALL 华为云LTS 域名对应IP地址 443 TCP http 否 https+证书 TLS v1.2
  • 功能对比 以上各种弹性伸缩功能的对比如下。 表2 功能对比 功能 伸缩对象 伸缩范围 业务影响 试用范围 弹性磁盘扩容 磁盘容量调整。 原集群的所有ECS挂载的EVS盘。 通常会在5-10分钟内完成,也不涉及服务重启,不影响业务,但建议业务低峰期进行。 集群版本:8.1.1.203及以后 产品形态:标准数仓、实时数仓 弹性变更规格 算力调整。 原集群的所有ECS规格(CPU核数,内存大小)。 通常会在5-10分钟内完成,但是过程中会重启一次,涉及业务分钟级别中断,建议业务低峰期进行。 集群版本:8.1.1.300及以后 产品形态:标准数仓、实时数仓 集群扩容 磁盘容量调整、算力调整。 分布式架构扩展对等同构的ECS节点。 支持在线,在线扩容过程中,DWS服务不重启,持续对外提供服务。 耗时与用户的数据库对象数量和数据量正相关。 集群版本:所有版本,8.1.1开始支持在线 产品形态:标准数仓、实时数仓 集群缩容 磁盘容量调整、算力调整。 分布式架构收缩部分ECS节点。 支持在线,在线缩容过程中,DWS服务不重启,持续对外提供服务。 耗时与用户的数据库对象数量和数据量正相关。 集群版本:8.1.1.300 产品形态:标准数仓、实时数仓 集群调整大小 磁盘容量调整、算力调整、集群拓扑结构。 使用新规格(硬件规格调整),新拓扑(集群规模调整)新建集群,再做新老集群数据重分布。 数据库只读,耗时与用户的数据库对象数量和数据量正相关。 集群版本:agent8.2.0.2及以后版本 产品形态:标准数仓 增删CN 数据库CN实例。 增加CN扩展业务并发度提升,删除CN快速恢复DDL业务。 支持在线,增删CN过程中,DWS服务不重启,持续对外提供服务。 集群版本:8.1.1版本,8.1.3开始支持在线 产品形态:标准数仓、实时数仓
  • 弹性伸缩应用场景 不同的弹性伸缩功能应用在不同的业务场景下,具体参见表3。 表3 应用场景 分类 弹性伸缩诉求 推荐弹性伸缩方式 业务影响评估 预估耗时评估 存储 存储空间不够, CPU,内存,磁盘IO非瓶颈。 磁盘扩容。 在线。 不涉及数据搬迁,5-10分钟。 存储空间太大,降本 CPU,内存,磁盘IO非瓶颈。 创建同规格、小存储容量集群,通过容灾方式把主集群迁移到备集群。 容灾切换过程中集群只读,一般30分钟内。 耗时与数据量正相关。 算力 CPU或内存存在瓶颈。 弹性规格变更。 重启一次集群。 不涉及数据搬迁,5-10分钟。 磁盘IO存在瓶颈。 创建同规格、小存储容量集群,通过容灾方式把主集群迁移到备集群。 容灾切换过程中集群只读,一般30分钟内。 耗时与数据量正相关。 分布式算力 & 存储 节点数不足导致分布式能力弱。 集群扩容。 在线(部分限制)。 涉及数据搬迁,耗时和数据量与元数量正相关。 节点数多导致成本高。 集群缩容。 在线(部分限制)。 涉及数据搬迁,耗时和数据量正相关。 拓扑结构 同时修改拓扑和规格诉求(DN数不一致)。 调整集群大小。 只读。 涉及数据搬迁,耗时和数据量与元数量正相关。 同时修改拓扑和规格诉求(DN数一致)。 集群容灾迁移。 在线(部分限制)。 涉及数据搬迁,耗时和数据量正相关。 并发度不够。 增删CN。 在线(部分限制)。 涉及数据搬迁,耗时和元数据量正相关。
  • 集群调整大小 集群调整大小也叫集群resize,是一个非常全面的功能,它能满足你所有的弹性伸缩需求,它既支持集群规模的Scale out、Scale in,也支持硬件规格的Scale up,Scale down,同时支持集群拓扑结构的重组。 DWS resize基于多nodegroup和数据重分布实现,resize过程中会按照新的资源诉求(硬件升降配)和集群规划(集群规模扩缩)部署一套新集群,然后和老集群做数据重分布,数据迁移完成后,会把业务迁移到新集群,然后释放老集群。 集群resize涉及数据搬迁,会把老集群节点上的数据重分布到新集群节点上(老集群节点上数据还在),因此集群resize耗时与用户的数据库对象数量和数据量正相关。 DWS标准数仓支持集群resize功能,需agent升级到8.2.0.2版本后支持。目前resize期间老集群只支持只读业务。后续会提供在线能力。 具体操作参见经典变更规格。 图9 集群调整大小