1. 蓝绿发布概述

1.1 蓝绿发布定义

蓝绿发布(Blue-Green Deployment)是一种零停机、低风险的软件发布策略。其核心思想是维护两套完全独立的生产环境——蓝环境(当前稳定版本)与绿环境(新版本候选),通过路由层(负载均衡器/网关)的瞬时切换完成版本上线。切换后,旧环境保留为回滚目标,直至新版本被验证稳定。

关键特征: 两套环境在任意时刻只有一套承载生产流量;切换操作本质是路由规则的原子性变更,而非应用实例的滚动替换。

1.2 核心目标

  • 零停机部署: 流量切换在毫秒级完成,用户无感知。
  • 瞬时回滚: 若新版本异常,只需将路由切回旧环境,回滚时间等于一次DNS/负载均衡配置生效时间。
  • 环境隔离: 蓝绿环境在基础设施层(网络、存储、计算)完全独立,避免部署过程中的资源争用与配置污染。
  • 全量验证: 新版本在绿环境上可使用真实流量子集(金丝雀)或完整镜像流量进行验收测试,降低线上风险。

1.3 与传统滚动发布的对比优势

对比维度 蓝绿发布 滚动发布
回滚速度 秒级(路由切换) 分钟级(逐实例回退)
部署期间容量 100% 容量(两套环境并行) 逐步缩容/扩容,存在容量缺口
环境一致性 两套独立环境,配置完全隔离 同一套环境,实例间配置可能漂移
测试充分性 可在切换前对全量新版本做完整测试 仅能测试已更新的部分实例
资源成本 双倍资源(生产+待命) 正常资源 + 少量缓冲
适用场景 关键业务、高频变更、要求快速回滚 资源敏感、低频变更、可接受短暂降级
实践建议: 对于网络配置变更(防火墙规则、负载均衡策略、DNS记录),蓝绿发布比滚动发布更具优势——网络配置的“回滚”本质是路由表的原子切换,滚动方式则可能因配置传播延迟导致部分流量被错误路由。

1.4 蓝绿发布核心流程(SVG)

下图展示了蓝绿发布的标准操作流程:初始状态蓝环境承载流量,绿环境部署新版本并验证,验证通过后路由切换至绿环境,蓝环境进入待命状态。

蓝绿发布核心流程 蓝绿发布核心流程 阶段1:初始状态 用户 负载均衡 蓝环境(活跃) v1.0 生产流量 绿环境(待命) v1.0 空闲 阶段2:部署新版本 绿环境 部署 v2.0 + 验证 阶段3:路由切换 负载均衡 绿环境(活跃) v2.0 生产流量 蓝环境(待命)

1.5 蓝绿发布 vs 滚动发布:切换与回滚对比(SVG)

下图从切换原子性和回滚路径两个维度对比两种策略。蓝绿发布的切换是路由层的瞬间跳转,回滚路径与正向切换完全对称;滚动发布则需逐实例替换,回滚时需逆向遍历所有实例。

蓝绿发布 vs 滚动发布:切换与回滚对比 蓝绿发布 vs 滚动发布:切换与回滚对比 蓝绿发布 蓝环境 v1 绿环境 v2 路由切换(原子操作) 回滚:反向切换(同样原子) 滚动发布 v1 v1 v2 v2 v2 逐实例替换(非原子) 回滚:逐实例逆向替换 关键差异总结 • 蓝绿:切换与回滚均为路由层原子操作,耗时 < 1s,不涉及实例启停 • 滚动:切换与回滚均需逐实例替换,耗时与实例数成正比,期间存在版本混合窗口 • 网络配置场景下,蓝绿发布的原子性可避免配置传播延迟导致的流量错乱