该方案针对 global
集群的灾难恢复场景设计。global
集群作为平台的控制平面,负责管理其他集群。为确保在 global
集群故障时平台服务的持续可用性,本方案部署两个 global
集群:主集群和备用集群。
灾难恢复机制基于主集群到备用集群的 etcd 数据实时同步。当主集群因故障不可用时,服务可以快速切换到备用集群。
global
集群内部部署的应用故障;主集群和备用集群的角色是相对的:当前为平台提供服务的集群为主集群(DNS 指向该集群),备用集群为备用集群。故障切换后,角色互换。
本方案仅同步 global
集群的 etcd 数据,不包含 registry、chartmuseum 或其他组件的数据;
为便于排查和管理,建议节点命名采用如 standby-global-m1
的风格,以区分节点所属集群(主集群或备用集群)。
不支持集群内应用数据的灾难恢复;
两个集群之间需保持稳定的网络连接,以确保 etcd 同步的可靠性;
若集群基于异构架构(如 x86 与 ARM),请使用双架构安装包;
以下命名空间不参与 etcd 同步,若在这些命名空间创建资源,需用户自行备份:
若两个集群均使用内置镜像仓库,容器镜像需分别上传;
若主集群部署了 DevOps Eventing v3(knative-operator)及其实例,备用集群需预先部署相同组件。
一个统一域名作为 平台访问地址
,以及该域名的 TLS 证书和私钥,用于 HTTPS 服务;
每个集群专用的虚拟 IP 地址——一个用于主集群,另一个用于备用集群;
80
、443
、6443
、2379
和 11443
的 TCP 流量路由到对应 VIP 后的控制平面节点。安装灾难恢复环境的主集群时,
自建 VIP
选项不可用。平台访问地址
字段必须为域名,集群端点
必须为虚拟 IP 地址。已有证书
(且为同一证书),如有需要请申请合法证书。自签名证书
选项不可用。镜像仓库
设置为平台部署
时,用户名
和密码
字段均不能为空;IP/域名
字段必须设置为用作平台访问地址
的域名。平台访问地址
的HTTP 端口
和HTTPS 端口
必须分别为 80 和 443。高级
)中,其他平台访问地址
字段必须包含当前集群的虚拟 IP。请参考以下文档完成安装:
临时将域名指向备用集群的 VIP;
登录主集群的第一个控制平面节点,将 etcd 加密配置复制到备用集群所有控制平面节点:
按照主集群相同方式安装备用集群
安装灾难恢复环境的备用集群时, 以下选项必须与主集群保持一致:
平台访问地址
字段;证书
的所有字段;镜像仓库
的所有字段;并且务必遵循第 1 步中的灾难恢复环境安装注意事项
。
请参考以下文档完成安装:
如适用,配置负载均衡器将端口 2379
转发至对应集群的控制平面节点。仅支持 TCP 模式,不支持 L7 转发。
通过负载均衡器转发端口非必需。 若备用集群可直接访问活动 global 集群,需通过活动 global 集群 ETCD 端点指定 etcd 地址。
使用备用 global 集群的 VIP 访问 Web 控制台,切换至管理员视图;
进入 Marketplace > Cluster Plugins,选择 global
集群;
找到 etcd Synchronizer,点击安装,配置参数:
2379
,需正确配置活动 global 集群 ETCD 端点;验证同步 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
子命令的详细信息,请参阅 上架软件包。