关键词:多集群、容灾架构、Failover、备份恢复、热迁移、Go 云原生实战
在前面的《每日一Go》系列中,我们已经完成了 CI/CD → K8s → GitOps(ArgoCD) 的完整工程化闭环。
从这一篇开始,我们把视角再往前推进一步:
当集群真的挂了,你的系统还能活吗?
这正是 多集群部署与容灾 要解决的问题。
一、为什么一定要多集群?
很多团队以为:
-
有 K8s 就够了
-
有 HPA 就够了
-
有 Pod 重启就够了
但现实是:
|
故障级别
|
是否能靠单集群解决
|
| --- | --- |
|
Pod Crash
|
✅
|
|
Node 宕机
|
✅
|
|
集群控制面异常
|
❌
|
|
整个 Region 不可用
|
❌
|
|
误删 Namespace / CRD
|
❌
|
CRD(Custom Resource Definition)= 让你给 Kubernetes 增加"新资源类型"的机制
结论只有一句话:
真正的高可用 = 多集群 + 容灾设计
二、多集群的 3 种主流架构模式
1️⃣ Active-Active(双活 / 多活)
css
User
↓
Global LB
↓
Cluster A ←→ Cluster B
特点:
-
两个集群同时对外提供服务
-
流量按比例分发
优点:
-
切换无感知
-
资源利用率高
难点:
-
数据一致性
-
会话管理
2️⃣ Active-Standby(主备)
css
User
↓
LB
↓
Cluster A (Active)
Cluster B (Standby)
特点:
-
主集群工作
-
备集群随时接管
优点:
-
架构简单
-
成本可控
缺点:
- 切换存在 RTO
RTO = Recovery Time Objective(恢复时间目标)
👉 指的是:系统从故障发生到恢复可用,允许的最长时间
3️⃣ 多区域(Region)灾备
css
Region A (Cluster)
↓ 数据复制
Region B (Cluster)
适合:
- 金融 / 电商 / 全球化业务
三、Failover:真正的"自动切换"
Failover 的核心不是「重启」,而是:
当一个集群不可用,流量要自动切到另一个集群
常见实现方式
- DNS 级 Failover
-
Route53 / Cloudflare
-
健康检查失败 → 切换解析
- Global Load Balancer
- GSLB / 云厂商全局负载均衡
- Service Mesh 跨集群
- Istio / Linkerd Multi-Cluster
四、Backup:你以为的备份 ≠ 真正能恢复
1️⃣ 必须备份的东西
-
Kubernetes 资源(YAML)
-
etcd(核心)
-
持久化数据(PVC / DB)
2️⃣ Velero:事实上的标准方案
Velero 能做什么?
-
集群级备份
-
Namespace 级恢复
-
跨集群恢复
sql
velero backup create full-backup
velero restore create --from-backup full-backup
一句话总结:
Velero = Kubernetes 世界的 Time Machine
五、热迁移:不停机"搬家"
什么是热迁移?
在用户无感知的情况下,把服务从集群 A 迁移到集群 B
常见手段
-
双集群同时部署(GitOps)
-
流量逐步切换(灰度 / 金丝雀)
-
数据提前同步
apache
10% → 30% → 50% → 100%
六、Go 服务在多集群下要注意什么?
1️⃣ 服务必须是无状态的
go
// ❌ 不要依赖本地内存状态
var cache = map[string]string{}
2️⃣ 配置必须外置
-
ConfigMap
-
Secret
-
Env
3️⃣ 优雅下线(非常重要)
css
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()
<-ctx.Done()
log.Println("shutting down gracefully")
七、一张全景图理解多集群容灾
css
Users
↓
Global LB / DNS
↙ ↘
Cluster A Cluster B
(Active) (Standby)
↘ ↙
Shared Storage / DB
八、写在最后
如果你只记住这一篇的 3 句话:
-
单集群没有容灾能力
-
备份的终点是恢复,不是存下来
-
多集群是工程能力,不是云厂商特性
友情链接:加班费计算器(vx小程序"加班计")
*源码地址*
https://pan.baidu.com/s/1B6pgLWfSgMngVeFfSTcPdg?pwd=jc1s
如果您喜欢这篇文章,请您(点赞、分享、亮爱心),万分感谢!