1. 蓝绿发布基础概念

1.1 什么是蓝绿发布

蓝绿发布(Blue-Green Deployment)是一种零停机的应用发布策略,通过维护两套完全独立的生产环境(蓝环境与绿环境),实现流量的平滑切换与快速回滚。在任意时刻,只有一套环境承载全部生产流量,另一套环境保持空闲或用于部署新版本。

核心定义:蓝绿发布 = 两套独立环境 + 流量瞬间切换 + 快速回滚能力。它不是灰度发布,而是全量切换的原子操作。

1.2 蓝绿发布的核心思想

蓝绿发布的设计哲学围绕三个关键原则展开:

  • 环境隔离:蓝、绿两套环境在基础设施层面完全独立,包括计算资源、网络配置、数据库连接等,避免相互干扰。
  • 流量路由:通过负载均衡器或网关层实现流量的瞬间切换,切换粒度可以是全量(100% 流量)或按比例(结合灰度策略)。
  • 快速回滚:一旦新版本出现故障,只需将流量切回旧环境即可完成回滚,回滚时间通常在秒级,无需重新部署。
蓝绿发布核心架构 用户流量 负载均衡器 / 网关 蓝环境(当前生产) 应用版本 v1.0(稳定) 数据库 / 缓存 / 中间件 绿环境(新版本) 应用版本 v2.0(待切换) 数据库 / 缓存 / 中间件 流量切换:蓝 → 绿(秒级)

1.3 蓝绿发布与传统发布的区别

传统发布(如滚动更新、停机发布)与蓝绿发布在多个维度存在本质差异。下表从关键指标维度进行对比:

对比维度 蓝绿发布 滚动更新 停机发布
停机时间 零停机(切换瞬间) 接近零停机(逐实例替换) 分钟级停机
回滚速度 秒级(流量切回) 分钟级(逐实例回滚) 分钟级(重新部署旧版本)
环境成本 高(需两套完整环境) 低(单套环境) 低(单套环境)
数据库兼容 需向前/向后兼容 需向后兼容 无特殊要求
流量控制粒度 全量切换 / 按比例 逐实例(Pod/VM) 全量一次性
测试验证 可在生产环境预验证 需在预发环境验证 需在预发环境验证
适用场景 核心服务、高可用要求 无状态服务、资源受限 低频维护、非关键系统
SRE 视角:蓝绿发布并非银弹。当数据库 schema 变更无法做到向前兼容时,蓝绿切换可能导致数据不一致。此时需要配合 并行运行 或 扩展的蓝绿模式(如蓝绿数据库代理)来解决。

1.4 蓝绿发布的关键组件与流程

一个标准的蓝绿发布流程包含以下核心组件与步骤:

  1. 环境准备:部署两套独立环境(蓝/绿),确保网络、存储、配置完全隔离。
  2. 版本部署:将新版本部署到空闲环境(如绿环境),执行自动化测试与健康检查。
  3. 流量切换:通过负载均衡器或 DNS 将流量从蓝环境切换到绿环境。
  4. 验证与监控:在绿环境上运行冒烟测试,监控错误率、延迟、吞吐量等黄金指标。
  5. 回滚决策:若新版本异常,立即将流量切回蓝环境;若正常,保留蓝环境作为回滚备份。
蓝绿发布标准流程 1. 环境准备 蓝/绿环境隔离 2. 部署新版本 部署到空闲环境 3. 流量切换 负载均衡切换 4. 验证监控 黄金指标检查 5. 决策 回滚/保留 异常 → 回滚 正常 → 保留
常见误区:蓝绿发布不等于灰度发布。蓝绿发布是全量切换,灰度发布是逐步放量。实践中常将两者结合:先在绿环境进行内部灰度验证,再执行蓝绿全量切换。