编排失败的回滚与重入是什么
回滚与重入是编排失败后的两条恢复路径。回滚把已变更的目标恢复到最后一次已知良好状态(配置快照、上一版本制品、备份文件);重入不撤销已完成的步骤,而是让编排从断点继续,前提是每个步骤幂等且编排器记录了完成游标。选哪条取决于失败性质:瞬时失败且状态可收敛时重入更快;已经出现部分生效或不一致状态时回滚更安全。两者都必须在编排设计阶段就准备好,而不是故障现场临时决定。
基本信息
| 回滚粒度 | 单步、单批、整单(视影响面选择) |
|---|---|
| 重入前提 | 步骤幂等 + 断点记录准确 + 目标状态可探测 |
| 状态依据 | 配置快照、制品版本、数据备份 |
| 失败分类 | 可重试、不可重试、需人工介入 |
| 常见实现 | 编排器 resume 与游标、事务式反向操作、蓝绿切换 |
典型使用场景
- 下发中断(会话闪断、设备超时)后,只对剩余目标续跑
- 单台配置被设备语法校验拒绝,仅回退该台而不动整批
- 版本发布失败时切回上一版本制品,恢复时间以分钟计
- 数据库变更失败时用备份或反向脚本恢复结构
- 有人手工改过目标之后如何重新纳管:先对齐现状再重入
恢复动作要点示意
恢复动作要点示意
# 回滚前先固化现场:导出当前配置与日志,便于事后定位根因
# 重入前比对断点记录与目标实际状态,二者不一致不许直接续跑
# 逐台校验再批量:先单台试回滚,成功后再扩到全批
# 回滚同样要过门禁,避免回滚动作本身引入第二次故障
# 超出约定时间未恢复即升级,不要在现场无限重试失败分类与处置建议
| 失败类型 | 建议处置 | 理由 |
|---|---|---|
| 瞬时错误(超时、限流) | 重试或重入 | 状态未变,重试成本最低 |
| 语义错误(参数非法) | 修正后重入 | 重复重试必然再失败,先改内容 |
| 部分生效(多步中途失败) | 回滚到步骤前快照 | 中间态不可预测,前进风险更高 |
| 状态不确定 | 人工介入并先现场取证 | 自动动作可能在错误前提上继续放大 |
| 数据层不兼容 | 评估前进修复 | 回退数据结构常比前进更危险 |
重入依赖幂等:追加式配置、自增编号、每次生成随机凭据这类非幂等步骤,重复执行会产生重复条目或覆盖有效值,必须先探测再执行。
回滚并不总是更快。涉及数据迁移、索引重建、消息格式变更时,回退可能造成数据丢失或双向不兼容,此时应评估前进修复而非机械回退。