回滚预案是什么
回滚预案(Rollback Playbook)把出事怎么退写成可执行的步骤文档:触发条件(什么指标、持续多久、谁判定)、决策人与权限、分步命令(含命名空间与资源名)、恢复验证方法、对外沟通模板。目标很直接:事故现场照单执行,不用临场摸索命令与判断。预案要与回滚机制配套:特性开关关闭是秒级止血手段,镜像与版本回滚是分钟级,数据库迁移这类不可逆变更要在预案里明确向前修复的决策链。文档放代码仓库随服务一起维护,按季度或在重大发布前演练复查,确保它始终可达、可执行。
基本信息
| 内容 | 触发条件、决策链、分步命令、验证方法、通知模板 |
|---|---|
| 载体 | 与代码同仓库管理,随变更更新 |
| 演练 | 按季度或重大发布前复查 |
| 可达性 | 事故时无需额外申请即可获取 |
| 机制配套 | 开关、镜像回滚、数据前滚各自写明 |
典型使用场景
- 值班上手:新成员按预案能独立执行第一轮操作。
- 重大活动前:大促与关键版本发布前复查并演练。
- 通道盘点:梳理开关、镜像回滚、数据修复各自耗时与责任人。
- 多人协作:沟通模板让各方同步状态,不打扰执行人。
- 复盘依据:比对预案与实际执行的差异,迭代文档。
- 演练:定期在预发环境跑一遍回滚全流程。
预案骨架
预案骨架
1. 触发条件: 5xx 比例 > 5% 持续 5 分钟
2. 决策人: 值班 SRE
3. 回滚命令: kubectl rollout undo deploy/web -n prod
4. 备选: helm rollback web 12 -n prod
5. 验证: 健康检查 + 核心冒烟
6. 通知: #incident 频道同步状态回滚通道对比
| 通道 | 耗时量级 | 适用 |
|---|---|---|
| 特性开关 | 秒级 | 新功能止血 |
| 镜像回滚 | 分钟级 | 服务逻辑问题 |
| 数据修复 | 小时级或更长 | 迁移或数据损坏,倾向前滚 |
| 流量切换 | 分钟级 | 多集群与多版本切换 |
命令要写成可复制片段:带上命名空间与资源名,事故中手打命令出错率高。
回滚后要有观察窗口:确认指标恢复再宣布结束,防止随即二次故障。
数据库变更默认不可回滚:预案里写清前滚修复的负责人与方案,避免现场争论。