深色模式
多云/混合云管理
摘要:多云(同时使用多家公有云)和混合云(公有云 + 自建 IDC)能降低锁定风险、满足合规,但复杂度会成倍上升。本文给出四个必须统一的层面:身份、网络、可观测、交付,以及避免为多云而多云的判断标准。
适用环境
bash
# 本地终端,需能同时访问各云厂商 API
aws --version
which terraform kubectl ansible
# 混合云场景还需要专线/VPN 的两端连通性
which ipsec ping mtr1
2
3
4
5
2
3
4
5
操作步骤
一、先判断:真的需要多云吗
| 动机 | 是否成立 | 说明 |
|---|---|---|
| 满足客户/合规要求(数据不出境、必须用某朵云) | 成立 | 硬性需求 |
| 避免单一厂商锁定 | 部分成立 | 用 IaC + 容器抽象比真上两朵云成本低得多 |
| 追求更高可用性 | 需谨慎 | 跨云容灾的复杂度远超收益,除非有专业团队 |
| 单纯压价 | 需谨慎 | 多云带来的运维人力成本常常吃掉折扣 |
注意
多云的真正成本不在账单,而在「每件事都要做两遍、且两遍还不一样」。没有至少 3-5 人的专职平台团队,不建议主动上多云。
二、统一身份:一处登录,多处通行
bash
# 思路:用企业身份源(IdP)做联邦登录,在各云创建对应的 SAML/OIDC 角色
# 1) 在云 A 创建信任 IdP 的角色
aws iam create-saml-provider --name corp-idp \
--saml-metadata-document file://idp-metadata.xml
# 2) 在云 B 复同样操作(GCP 用 Workload Identity Federation,Azure 用 Enterprise App)
# 3) 人员入职/离职只在 IdP 一处操作1
2
3
4
5
6
2
3
4
5
6
好处:离职只需在 IdP 禁用一次,所有云同时失效;避免出现「某人早就离职了,某朵云的账号还开着」。
三、统一网络:打通但不要全通
text
专线/SD-WAN:IDC ↔ 云,稳定低延迟,成本高,签合同周期长
IPsec VPN :快速打通,成本低,带宽与稳定性弱于专线
对等连接 :云与云之间,注意网段不能重叠1
2
3
2
3
bash
# 混合云场景下验证两端连通与质量
ping -c 10 <对端内网IP>
mtr -r -c 20 <对端内网IP>
iperf3 -c <对端内网IP> -t 30 # 测实际带宽1
2
3
4
2
3
4
危险
打通网络不等于放开访问。IDC 与云之间仍要按最小放通原则配置安全组/ACL,否则一次 IDC 侧的安全事件会直接蔓延到云上。
四、统一可观测:指标必须汇聚到一处
各云监控互不相通,出问题时来回切控制台会严重拖慢定位。做法:
yaml
# 各环境统一部署 Prometheus + 统一 remote_write 到中心存储
remote_write:
- url: "https://central-tsdb.example.com/api/v1/write"
basic_auth:
username: ops
password: "${REMOTE_WRITE_PASSWORD}"1
2
3
4
5
6
2
3
4
5
6
bash
# 各云主机统一安装 agent,指标命名保持一致
systemctl status node_exporter
curl -s http://127.0.0.1:9100/metrics | grep -c node_cpu_seconds_total
# 日志统一采集到同一套日志系统
systemctl status filebeat1
2
3
4
5
2
3
4
5
统一的关键是指标名与标签一致:env=prod 在三处都叫 env,而不是一处 environment、一处 Env。
五、统一交付:IaC + 容器是抽象层
bash
# 用同一套 Terraform 代码,通过 provider 参数切换云
terraform workspace select gcp
terraform plan -var-file=gcp.tfvars
# 应用层用容器屏蔽底层差异
kubectl apply -f deployment.yaml # 三处集群使用同一份 manifest1
2
3
4
5
6
2
3
4
5
6
把「云的差异」收敛在 IaC 模块和基础设施层,业务代码只依赖 Kubernetes 或标准化接口。
六、建立跨云资源台账
bash
# 定期把各云资源汇总到一张表,字段统一
# instance_id / region / spec / env / owner / monthly_cost
# 可用脚本定期导出并合并,避免只靠人记
python3 scripts/collect_inventory.py --cloud all --out inventory.csv1
2
3
4
2
3
4
验证
- [ ] 一个身份源禁用账号后,所有云同时无法登录
- [ ] 混合云两端延迟与带宽有基线数据,且异常时能告警
- [ ] 指标在一处面板可查询,标签命名一致
- [ ] 同一份应用 manifest 能在两个环境不加修改地部署
- [ ] 资源台账可自动生成,字段覆盖全部云
常见坑
- 为多云而多云:没有明确收益却承担了双倍复杂度,最后两朵云都做不好。
- 各云各一套监控:排查时反复切换,MTTR 翻倍。
- 网段重叠无法打通:规划时没预留,后期改网段代价巨大。
- 跨云流量费用:跨云数据传输双向收费,同步大量数据时账单惊人。
- 安全策略不一致:一边严格一边宽松,攻击者自然走宽松的那条路。