首页/开发/CI/CD 与发布速查/蓝绿环境回切(Switch Back)
质量门禁与回滚51 条

蓝绿环境回切(Switch Back)

蓝绿发布出问题时的回切:把流量切回旧环境;回切速度取决于旧环境的保持时间、健康状态与数据兼容性。

CI/CD 与发布速查开发更新于 2026-10-13

蓝绿回切是什么

蓝绿发布出问题时的回切:把流量切回旧环境;回切速度取决于旧环境的保持时间、健康状态与数据兼容性。旧环境在观察期保持可用(含配置与版本),回切动作由负载均衡或网关把流量切回旧环境组;共享库需确认结构兼容,独立库需处理写入差异。

基本信息

前提旧环境在观察期保持可用
动作负载均衡或网关把流量切回旧环境组
数据共享库确认结构兼容,独立库处理写入差异
观察期长度按业务风险设置
回收回切后处理问题版本环境
切换粒度按流量比例或全量切换
验证切换后核对核心指标与日志
时间预算回切应能在分钟级完成

回切检查项

检查项目的风险
旧环境健康确认可承接流量停放期依赖已变化
数据兼容确认双向读写可行结构变更导致报错
证书配置确认未过期回切后握手失败
流量验证切换后核对指标部分流量未切回

切换示意

切换示意
# 切换示意:改 Service 选择器指回旧环境
kubectl patch svc web -n prod -p '{"spec":{"selector":{"slot":"blue"}}}'
# 核对端点与流量
kubectl get endpoints web -n prod
# 观察切回后的指标与日志
kubectl logs -n prod -l slot=blue --tail=50

典型使用场景

  • 切换后发现异常:快速回切到旧环境止损
  • 回切演练:观察期内安排一次回切验证通道可用
  • 数据库兼容确认:回切前核对两版本读写路径
  • 部分回切:按流量比例先切回一部分再扩大
  • 问题版本回收:确认稳定后下线并分析问题版本
  • 演练常态化:把回切纳入发布演练计划,定期验证一次
回切前确认旧环境健康:停放期间其依赖、证书与配置可能已变化。
回切不等于事故结束:问题版本保留给复盘,环境回收与根因分析并行推进。回切速度是演练出来的,不是设计出来的。

易错点

  • 旧环境提前缩容:想回切时已无从切换
  • 回切后忘记回收问题版本环境:两套并存,资源与配置漂移
  • 回切后数据不一致:新版本已写入的数据旧版本读不了,切换前须确认兼容
  • 回切无演练:真需要时才发现权限、脚本或通道不可用

数据来源与参考

  • Martin Fowler《BlueGreenDeployment》
  • Kubernetes 官方文档(Service)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌