高可用系统要求发布过程不影响在线用户。蓝绿发布(Blue-Green Deployment)能在版本切换时实现零停机升级。
1. 基本原理
- 同时运行两套环境:蓝(当前生产) 与 绿(新版本) 。
- 新版本部署到绿环境后,通过流量切换替换蓝环境。
- 验证无误后下线旧版本。
2. 流程步骤
- 构建新版本并部署到绿环境。
- 进行健康检查与灰度流量验证。
- 切换负载均衡器指向绿环境。
- 观察指标(QPS、错误率、延迟)。
- 稳定后销毁蓝环境。
3. 关键要点
- 数据库变更需向后兼容。
- 保证蓝绿版本共享缓存、消息队列等公共资源。
- 切换应可回滚:若监测异常,快速回指蓝环境。
4. 实践方案
- Nginx / HAProxy:修改upstream实现切流。
- Kubernetes:通过Deployment滚动更新或双版本Service切换。
- CI/CD集成:发布流程自动执行蓝绿替换与验证。
结论:蓝绿发布让系统升级从“中断操作”变为“流量切换”。稳定上线的关键在于切换前的充分验证。