Global Cluster 灾难恢复
目录
Overview
该方案针对 global 集群的灾难恢复场景设计。global 集群作为平台的控制平面,负责管理其他集群。为确保在 global 集群故障时平台服务的持续可用性,本方案部署两个 global 集群:主集群和备用集群。
灾难恢复机制基于主集群到备用集群的 etcd 数据实时同步。当主集群因故障不可用时,服务可快速切换至备用集群。
支持的灾难场景
- 主集群发生不可恢复的系统级故障,导致无法正常运行;
- 托管主集群的物理或虚拟机故障,导致无法访问;
- 主集群所在位置的网络故障,导致服务中断;
不支持的灾难场景
global集群内部署的应用故障;- 存储系统故障导致的数据丢失(etcd 同步范围之外);
主集群和备用集群的角色是相对的:当前为平台提供服务的集群为主集群(DNS 指向该集群),备用集群为备用集群。故障切换后,两者角色互换。
注意事项
-
本方案仅同步
global集群的 etcd 数据;不包含 registry、chartmuseum 或其他组件的数据; -
为便于排查和管理,建议节点命名风格如
standby-global-m1,以标明节点所属集群(主集群或备用集群)。 -
不支持集群内应用数据的灾难恢复;
-
两个集群间需保持稳定的网络连接,以确保 etcd 同步可靠;
-
若集群基于异构架构(如 x86 和 ARM),请使用双架构安装包;
-
以下命名空间不参与 etcd 同步,若在这些命名空间创建资源,需用户自行备份:
-
若两个集群均使用内置镜像仓库,容器镜像需分别上传至各自仓库;
-
若主集群部署了 DevOps Eventing v3(knative-operator)及其实例,备用集群需预先部署相同组件。
流程概览
- 准备统一的域名作为平台访问地址;
- 将域名指向主集群的 VIP 并安装主集群;
- 临时将 DNS 解析切换至备用 VIP,安装备用集群;
- 将主集群的 ETCD 加密密钥复制到备用集群后续作为控制平面节点的节点上;
- 安装并启用 etcd 同步插件;
- 验证同步状态并定期检查;
- 发生故障时,将 DNS 切换至备用集群完成灾难恢复。
所需资源
-
一个统一域名作为
Platform Access Address,以及该域名的 TLS 证书和私钥,用于 HTTPS 服务; -
每个集群专用的虚拟 IP 地址——一个用于主集群,另一个用于备用集群;
- 预先配置负载均衡器,将端口
80、443、6443、2379和11443的 TCP 流量路由至对应 VIP 后的控制平面节点。
- 预先配置负载均衡器,将端口
操作步骤
第 1 步:安装主集群
安装 DR 环境的主集群时,
- 首先,记录安装 Web UI 指南中设置的所有参数。安装备用集群时需保持部分选项一致。
- 必须预配置用户自建负载均衡器,将流量路由至虚拟 IP。
自建 VIP选项不可用。 Platform Access Address字段必须为域名,Cluster Endpoint必须为虚拟 IP 地址。- 两个集群必须配置使用
An Existing Certificate(且为同一证书),必要时申请合法证书。Self-signed Certificate选项不可用。 - 当
Image Repository设置为Platform Deployment时,Username和Password字段均不能为空;IP/Domain字段必须设置为用作Platform Access Address的域名。 Platform Access Address的HTTP Port和HTTPS Port均必须为 80 和 443。- 进入安装指南第二页(步骤:
Advanced)时,Other Platform Access Addresses字段必须包含当前集群的虚拟 IP。
请参考以下文档完成安装:
第 2 步:安装备用集群
-
临时将域名指向备用集群的 VIP;
-
登录主集群的第一个控制平面节点,将 etcd 加密配置复制到备用集群所有控制平面节点:
-
按照主集群相同方式安装备用集群
安装 DR 环境的备用集群时,以下选项必须与主集群保持一致:
Platform Access Address字段;Certificate的所有字段;Image Repository的所有字段;- 重要:确保镜像仓库凭据和 管理员用户与主集群设置一致。
并且务必遵循第 1 步中的 DR(灾难恢复环境)安装注意事项。
请参考以下文档完成安装:
第 3 步:启用 etcd 同步
-
如适用,配置负载均衡器将端口
2379转发至对应集群的控制平面节点。仅支持 TCP 模式;不支持 L7 转发。INFO通过负载均衡器转发端口非必需。 若备用集群可直接访问活动 global 集群,需通过 Active Global Cluster ETCD Endpoints 指定 etcd 地址。
-
使用备用 global 集群的 VIP 访问 Web 控制台,切换至 Administrator 视图;
-
进入 Marketplace > Cluster Plugins,选择
global集群; -
找到 etcd Synchronizer,点击 Install,配置参数:
- 若未通过负载均衡器转发端口
2379,需正确配置 Active Global Cluster ETCD Endpoints; - 使用默认的 Data Check Interval;
- 除非排查问题,否则关闭 Print detail logs 开关。
- 若未通过负载均衡器转发端口
验证同步 Pod 在备用集群运行:
出现 “Start Sync update” 后,重建其中一个 Pod 以重新触发带有 ownerReference 依赖的资源同步:
检查同步状态:
输出说明:
LOCAL ETCD missed keys:主集群存在但备用集群缺失的键,通常因同步时资源顺序导致的 GC。重启一个 etcd-sync Pod 可修复;LOCAL ETCD surplus keys:备用集群独有的额外键,删除前请与运维确认。
若安装了以下组件,请重启其服务:
-
Elasticsearch 日志存储:
-
VictoriaMetrics 监控:
灾难恢复流程
-
如有必要,重启备用集群的 Elasticsearch:
-
验证备用集群数据一致性(同 第 3 步 检查);
-
卸载 etcd 同步插件;
-
取消两个 VIP 上的端口
2379转发; -
将平台域名 DNS 切换至备用 VIP,该集群即为新的主集群;
-
验证 DNS 解析:
-
清理浏览器缓存,访问平台页面确认显示为原备用集群;
-
重启以下服务(如已安装):
-
Elasticsearch 日志存储:
-
VictoriaMetrics 监控:
-
cluster-transformer:
-
-
若业务集群向主集群发送监控数据,重启业务集群中的 warlock:
-
在原主集群重复执行启用 etcd 同步步骤,将其转为新的备用集群。
日常检查
定期检查备用集群的同步状态:
若发现缺失或多余键,按输出提示进行处理。
上架软件包
使用 violet 向备用集群上传软件包时,必须指定参数 --dest-repo <备用集群 VIP 地址>。
否则软件包将上传至主集群的镜像仓库,导致备用集群无法安装或升级扩展。
同时,必须提供备用集群镜像仓库的认证信息或使用 --no-auth 参数。
有关 violet push 子命令的详细信息,请参见 Upload Packages。