1. 蓝绿发布概述

1.1 蓝绿发布定义

蓝绿发布(Blue-Green Deployment)是一种零停机的应用发布策略,通过维护两套完全独立的生产环境(蓝环境与绿环境),实现流量的瞬间切换与版本隔离。其核心思想是:在任何时刻,只有一套环境承载全部生产流量,另一套环境保持空闲或用于新版本验证。

关键术语:蓝环境(当前生产环境)、绿环境(新版本预发布环境)、流量切换、回滚窗口。
蓝绿发布核心架构 用户流量入口 负载均衡器 / 网关 蓝环境(当前生产) 应用版本 v1.0 状态:承载 100% 流量 绿环境(预发布) 应用版本 v2.0 状态:空闲 / 验证中 当前路由 待切换路由 流量瞬间切换:更新负载均衡规则,将流量从蓝环境指向绿环境,实现零停机发布

1.2 与传统发布对比

传统滚动发布(Rolling Update)和灰度发布(Canary Release)在发布过程中会同时存在多个版本混合运行,而蓝绿发布始终保持单一版本承载全量流量。下表从多个维度进行对比:

对比维度 蓝绿发布 滚动发布 灰度发布
环境数量 2 套完整环境 1 套环境,分批替换 1 套环境 + 少量金丝雀实例
停机时间 零停机(切换瞬间) 零停机(滚动替换) 零停机(流量分流)
回滚速度 秒级(切回旧环境) 分钟级(反向滚动) 分钟级(调整流量比例)
版本混合 无混合,单一版本服务 短暂混合(替换窗口) 持续混合(分流期间)
资源成本 高(双倍资源) 低(按需扩容) 中(少量额外实例)
测试充分性 全量验证后切换 边发布边验证 小比例验证后全量
适用场景建议:蓝绿发布最适合关键业务系统、数据库 schema 向后兼容、需要快速回滚的场景;对于资源敏感或数据库变更不兼容的场景,建议结合滚动发布或灰度策略。

1.3 核心优势与挑战

核心优势

  • 零停机发布:流量切换在负载均衡层瞬间完成,用户无感知。
  • 秒级回滚:一旦新版本出现问题,只需将流量切回旧环境,回滚时间通常在秒级。
  • 全量验证:新版本在绿环境上可以运行完整的自动化测试、性能测试和预生产验证,无需担心影响线上用户。
  • 环境隔离:两套环境完全独立,新版本故障不会波及当前生产环境。
  • 发布流程简单:核心操作只有“切换流量”一个动作,易于自动化和标准化。

主要挑战

  • 资源成本翻倍:需要维护两套完整的生产级环境,包括计算、存储、网络和中间件资源。
  • 数据一致性问题:数据库、缓存、文件存储等有状态组件需要支持双向读写或共享访问,否则切换后可能出现数据不一致。
  • 环境漂移:长时间运行后,蓝绿两套环境的配置、依赖版本、中间件状态可能产生差异,导致切换后出现意外行为。
  • 自动化校验复杂度:切换前需要对绿环境进行全面的配置校验、健康检查和功能验证,自动化脚本的覆盖面和可靠性要求极高。
  • 长连接/会话保持:WebSocket、SSE 等长连接在切换时可能中断,需要额外的会话迁移或重连机制。
蓝绿发布:优势 vs 挑战 ✅ 核心优势 零停机发布,用户无感知 秒级回滚,故障快速止损 全量验证,环境完全隔离 发布流程简单,易于自动化 ⚠️ 主要挑战 资源成本翻倍(双环境) 数据一致性与有状态组件 环境漂移与配置偏差 自动化校验复杂度高
自动化校验的关键性:蓝绿发布的优势(秒级回滚、零停机)高度依赖切换前的自动化配置校验。如果绿环境的配置校验不充分,切换后可能引发严重故障,此时即使回滚,也会造成短暂的服务中断。本课程后续章节将深入讲解如何通过 Automation 驱动蓝绿发布的配置自动校验,确保每一次切换都安全可靠。