3. 变更冻结闸口定义:什么是变更冻结、冻结窗口期、闸口触发条件
变更冻结闸口是蓝绿发布流程中最高优先级的风险控制机制。当系统进入冻结窗口期,所有非紧急变更必须停止,蓝绿发布流量切换操作被锁定,直到窗口期结束或紧急审批通过。本节从三个层次拆解闸口定义:变更冻结(What)、冻结窗口期(When)、闸口触发条件(How)。
3.1 变更冻结:概念与范围
变更冻结(Change Freeze)是指在特定时间段内,禁止对生产环境执行任何非紧急的配置修改、代码部署、基础设施变更或流量调度操作。冻结的目的是在关键业务窗口(如大促、财报季、重大节日)前锁定环境状态,降低因变更引入故障的风险。
| 维度 | 说明 | 示例 |
|---|---|---|
| 冻结对象 | 生产环境所有非紧急变更 | 应用发布、配置修改、数据库DDL、网络策略调整 |
| 例外通道 | 紧急修复(P0/P1故障)需特批 | 安全漏洞修复、核心链路阻断性故障 |
| 冻结范围 | 蓝绿集群、灰度环境、金丝雀集群 | 禁止流量切换、禁止新版本部署 |
| 冻结时长 | 由窗口期定义,通常为小时级到天级 | 双11前7天进入全量冻结 |
关键原则:变更冻结不是“停止所有操作”,而是“将变更风险收敛到零”。蓝绿发布在冻结期间,已部署的蓝/绿版本保持运行,但禁止切换流量、禁止滚动更新、禁止回滚操作(除非紧急审批)。
3.2 冻结窗口期:时间维度定义
冻结窗口期(Freeze Window)是变更冻结生效的时间区间。窗口期通常由业务日历、发布日历或风险事件驱动。在蓝绿发布场景中,窗口期直接决定了闸口的开关状态。
- 固定窗口:按日历预定义,如每月最后3天、每季度末、重大节日前7天。适用于可预测的业务高峰。
- 动态窗口:由监控指标或事件触发,如错误率突增、延迟飙升、依赖服务故障。适用于异常检测驱动的自动冻结。
- 混合窗口:固定窗口 + 动态延长。例如:固定窗口为双11前7天,若期间出现P1故障,则自动延长24小时。
实践建议:冻结窗口期应至少覆盖“业务峰值前24小时 + 峰值期间 + 峰值后2小时”。蓝绿发布闸口在窗口期内默认关闭,任何流量切换操作必须经过“紧急变更审批委员会”电子签批。
3.3 闸口触发条件:自动化判定逻辑
闸口触发条件(Gate Trigger Condition)是自动化系统判断“是否进入冻结状态”的规则集合。在蓝绿发布流水线中,闸口通常部署在流量切换步骤之前,作为最后一道安全屏障。
3.4 闸口触发条件分类表
根据触发来源,闸口条件分为三类:时间条件、指标条件、事件条件。蓝绿发布闸口引擎会按优先级依次评估,任一条件满足即触发冻结。
| 条件类型 | 判定依据 | 典型阈值 | 冻结动作 |
|---|---|---|---|
| 时间条件 | 系统时钟 vs 冻结日历 | 当前时间 ∈ [2025-11-01 00:00, 2025-11-11 23:59] | 自动关闭闸口,拒绝所有非紧急变更 |
| 指标条件 | 实时监控指标 vs 基线 | 错误率 > 1% 持续5分钟 或 P99延迟 > 500ms | 自动触发冻结,锁定蓝绿流量切换 |
| 事件条件 | 外部事件或人工指令 | P0故障告警、安全事件、合规冻结指令 | 强制关闭闸口,已进行的发布立即暂停 |
避坑提示:不要将闸口触发条件写死在代码中。应使用配置中心(如 Apollo、Nacos)动态管理冻结日历和指标阈值,避免因代码发布导致闸口逻辑无法热更新。蓝绿发布闸口本身应具备“熔断”能力——当配置中心不可用时,默认进入冻结状态(Fail-Close),而非开放状态(Fail-Open)。
3.5 闸口与蓝绿发布的集成点
在自动化蓝绿发布流水线中,变更冻结闸口通常部署在以下三个关键位置:
- 前置闸口(Pre-Gate):在构建镜像、生成版本号之前检查。若处于冻结窗口,直接阻断流水线启动。
- 切换闸口(Switch-Gate):在流量从蓝集群切向绿集群之前检查。这是最关键的闸口,防止在冻结期内误切流量。
- 回滚闸口(Rollback-Gate):在自动回滚触发前检查。若冻结窗口已开启,回滚操作需人工审批,避免回滚引入二次故障。
3.6 闸口触发后的自动化动作
当闸口触发冻结时,自动化系统应执行以下标准动作序列,确保变更操作安全停止:
- 阻断流水线:立即暂停当前正在执行的蓝绿发布步骤,标记为“冻结阻断”状态。
- 发送告警:通过钉钉/企微/邮件/PagerDuty 通知变更负责人、SRE 值班人员、审批委员会。
- 记录审计日志:将触发条件、触发时间、当前发布版本、冻结窗口信息写入审计数据库。
- 锁定操作界面:在蓝绿发布控制台禁用“流量切换”、“回滚”、“继续发布”按钮,仅保留“查看日志”权限。
- 启动计时器:若为动态窗口,启动自动解冻倒计时;若为固定窗口,等待窗口期结束。
自动化冻结检查清单:
✅ 闸口引擎每30秒轮询一次冻结日历和指标阈值
✅ 冻结状态变更时,通过 Webhook 通知下游系统(如监控、CMDB、发布平台)
✅ 紧急审批通道独立于普通变更流程,审批人必须为 SRE 总监或以上级别
✅ 每次冻结/解冻事件生成唯一事件ID,用于事后复盘和合规审计
✅ 闸口引擎每30秒轮询一次冻结日历和指标阈值
✅ 冻结状态变更时,通过 Webhook 通知下游系统(如监控、CMDB、发布平台)
✅ 紧急审批通道独立于普通变更流程,审批人必须为 SRE 总监或以上级别
✅ 每次冻结/解冻事件生成唯一事件ID,用于事后复盘和合规审计