3. 蓝绿环境架构:蓝环境与绿环境定义、负载均衡器角色、DNS切换原理

蓝绿部署的核心在于维护两套完全独立的生产级环境——蓝环境(Blue)与绿环境(Green)。在任何时刻,只有其中一套环境承载全部在线流量,另一套则处于待命或预热状态。这种架构通过负载均衡器与DNS切换实现流量的瞬间转移,从而达成零停机发布与快速回滚。

3.1 蓝环境与绿环境定义

维度 蓝环境(Blue) 绿环境(Green)
运行状态 当前承载全部生产流量(Active) 空闲或预热中(Standby / Pre-warmed)
应用版本 当前稳定版本(v1.0) 新版本候选(v2.0)
数据库状态 读写生产数据库 通常共享同一数据库,或使用独立只读副本
网络策略 开放公网入口,安全组规则严格 仅允许内部/测试流量,公网入口关闭
回滚能力 切换后即成为回滚目标 切换后即成为新生产环境
关键原则:蓝绿环境在基础设施层面(计算、网络、存储)必须保持配置一致,差异仅体现在应用版本与流量路由上。任何环境漂移都会导致切换后出现非预期行为。

3.2 负载均衡器角色

负载均衡器是蓝绿架构的流量中枢,负责将用户请求精确路由到当前活跃环境。其核心职责包括:

  • 流量分发:根据预设权重(如 100:0 或 0:100)将请求转发至蓝或绿环境的后端实例池。
  • 健康检查:定期探测后端服务的 /health 端点,自动摘除异常实例,确保流量只到达健康节点。
  • 连接耗尽(Connection Draining):在切换前,允许旧环境中的正在处理请求完成,再切断连接,避免用户会话中断。
  • 灰度权重调整:支持从 100:0 逐步过渡到 0:100,实现金丝雀式流量迁移。
实践建议:在云原生环境中,优先使用应用层负载均衡器(如 AWS ALB、GCP HTTP(S) LB、Nginx Plus),它们支持基于路径、主机头、Cookie 的精细化路由,便于蓝绿切换与灰度发布策略组合。
蓝绿环境架构与负载均衡器流量切换 用户请求 DNS / CNAME 负载均衡器 健康检查 · 连接耗尽 · 权重路由 蓝环境(Active) 应用版本:v1.0(稳定) 后端实例池:Web · API · Worker 流量权重:100% 绿环境(Standby) 应用版本:v2.0(候选) 后端实例池:Web · API · Worker 流量权重:0% 切换时:负载均衡器将蓝环境权重从 100% 降至 0%,同时将绿环境权重从 0% 升至 100%

3.3 DNS切换原理

DNS切换是蓝绿部署中最外层的流量控制手段,通常作为负载均衡器切换的补充或备用方案。其工作原理如下:

  1. 记录映射:将业务域名(如 app.example.com)通过 CNAME 或 ALIAS 记录指向当前活跃环境的负载均衡器 DNS 名称。
  2. TTL控制:在切换前将 DNS 记录的 TTL(生存时间)临时降低至 60 秒甚至 30 秒,加速全球 DNS 缓存刷新。
  3. 记录更新:将 CNAME 目标从蓝环境负载均衡器切换为绿环境负载均衡器。
  4. 缓存等待:等待 TTL 过期 + 传播延迟(通常 1~5 分钟),新流量逐渐导向绿环境。
  5. 验证与回滚:确认绿环境运行正常后,将 TTL 恢复为常规值(如 300 秒);若异常,立即将 CNAME 切回蓝环境。
风险提示:DNS 切换存在最终一致性问题——由于客户端和递归解析器的缓存,部分用户可能在 TTL 窗口期内仍访问旧环境。因此,DNS 切换不适合需要毫秒级精确切换的场景,通常与负载均衡器权重切换配合使用,作为兜底回滚手段。
DNS 切换流程与缓存传播 ① 降低 TTL 至 60s app.example.com → 60s ② 更新 CNAME 记录 指向绿环境 LB ③ 等待 TTL 过期 1~5 分钟传播窗口 DNS 缓存传播过程 客户端 → 本地递归解析器 → 权威 DNS → 新记录生效 旧缓存逐步过期,新查询获取绿环境 IP ✅ 流量平滑迁移至绿环境 回滚时重复步骤②,将 CNAME 切回蓝环境 LB

3.4 蓝绿切换决策矩阵

切换方式 切换速度 精确性 回滚速度 适用场景
负载均衡器权重切换 秒级 精确到每个请求 秒级 生产环境主切换、灰度发布
DNS CNAME 切换 分钟级(TTL 依赖) 受缓存影响 分钟级 跨区域容灾、负载均衡器故障兜底
混合策略 秒级 + 分钟级 高(双重保障) 秒级回滚 LB,分钟级回滚 DNS 关键业务、金融、医疗等合规场景
架构总结:蓝环境与绿环境是部署的物理基础,负载均衡器是切换执行者,DNS 是全局流量入口。三者协同工作,才能实现安全、快速、可回滚的蓝绿发布。在流水线集成中,CI/CD 系统应自动编排负载均衡器权重调整与 DNS 记录更新,并将健康检查结果作为切换的准入条件。