蓝绿回切是什么
蓝绿发布出问题时的回切:把流量切回旧环境;回切速度取决于旧环境的保持时间、健康状态与数据兼容性。旧环境在观察期保持可用(含配置与版本),回切动作由负载均衡或网关把流量切回旧环境组;共享库需确认结构兼容,独立库需处理写入差异。
基本信息
| 前提 | 旧环境在观察期保持可用 |
|---|---|
| 动作 | 负载均衡或网关把流量切回旧环境组 |
| 数据 | 共享库确认结构兼容,独立库处理写入差异 |
| 观察期 | 长度按业务风险设置 |
| 回收 | 回切后处理问题版本环境 |
| 切换粒度 | 按流量比例或全量切换 |
| 验证 | 切换后核对核心指标与日志 |
| 时间预算 | 回切应能在分钟级完成 |
回切检查项
| 检查项 | 目的 | 风险 |
|---|---|---|
| 旧环境健康 | 确认可承接流量 | 停放期依赖已变化 |
| 数据兼容 | 确认双向读写可行 | 结构变更导致报错 |
| 证书配置 | 确认未过期 | 回切后握手失败 |
| 流量验证 | 切换后核对指标 | 部分流量未切回 |
切换示意
切换示意
# 切换示意:改 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典型使用场景
- 切换后发现异常:快速回切到旧环境止损
- 回切演练:观察期内安排一次回切验证通道可用
- 数据库兼容确认:回切前核对两版本读写路径
- 部分回切:按流量比例先切回一部分再扩大
- 问题版本回收:确认稳定后下线并分析问题版本
- 演练常态化:把回切纳入发布演练计划,定期验证一次
回切前确认旧环境健康:停放期间其依赖、证书与配置可能已变化。
回切不等于事故结束:问题版本保留给复盘,环境回收与根因分析并行推进。回切速度是演练出来的,不是设计出来的。