蓝绿发布:把流量切换与版本部署分开

设计双环境部署、预热验证、原子切流和回退窗口,处理数据库与长连接等共享状态风险。

文章目录 · 4 节

蓝绿发布同时保留当前环境与新环境,在验证后切换入口。它提供快速流量回退,但需要接近双倍容量,并不能自动解决共享数据库的不兼容变更。

保持环境可区分

apiVersion: v1
kind: Service
metadata:
  name: checkout
spec:
  selector:
    app: checkout
    color: green

部署 green 后先通过独立内部 Service 或测试域名验证。检查配置、依赖、缓存预热、探针和业务写入,不要只验证首页状态码。

切流步骤

  1. 冻结会影响两套环境的非兼容变更。
  2. 确认 green 容量与关键 SLI 正常。
  3. 修改 Service selector 或负载均衡目标。
  4. 观察错误率、延迟和业务结果。
  5. 保留 blue 直到回退窗口结束。

状态风险

  • 数据库 schema 采用向前向后兼容迁移
  • Session 不依赖单机内存,或支持粘性迁移
  • 消费者切换避免两个版本重复处理
  • 长连接要设计排空而非立即终止

收尾清单

回退演练必须包含真实入口切换和连接排空。发布完成后再下线 blue,并释放容量、旧配置和过期证书。