学习路径 05课程 7 / 8

为自愈设置安全边界

在明确权限、验证和停止条件下,自动执行已知恢复操作。区分运行时恢复与软件修改。

进阶12 分钟已审查

发布者 我们如何编写内容

检验理解控制器已经重启任务处理进程两次。队列继续增长,数据库也无法访问。策略应该怎么处理?完成练习
控制器已经重启任务处理进程两次。队列继续增长,数据库也无法访问。策略应该怎么处理?

你将学到什么

  • 区分自愈与永久软件修复。
  • 定义有边界的恢复策略和独立成功检查。
  • 识别自动化何时必须停止并升级处理。

恢复已知状态

自愈会自动检测已定义故障,并尝试获授权的恢复操作。例如,重启故障进程或替换不健康实例。操作必须适合故障和服务的状态模型。

Kubernetes 可以替换失败的工作负载实例,并使实际状态符合声明状态。但这不能修正错误的应用逻辑,也不能解决所有存储故障。基础设施恢复与软件正确性需要不同检查。参见 Kubernetes 自愈。

先定义目标,再选择机制。恢复导出意味着符合条件的工作能够正确完成。容器正在运行,只是一个前提。

区分三类修改

修改类型示例所需决定
运行时恢复替换一个失败的无状态任务处理进程可由预先批准的恢复策略授权
软件修复修复导致任务处理进程停止的内存泄漏审查、测试、发布控制和生产验证
策略修改提高允许的重启频率或扩大访问范围策略负责人的明确批准

智能体可以在恢复后提出修复,但这个提议是新的软件变更,不能从恢复控制器继承无限权限。

检查失败时,控制器也不得修改自己的成功标准。否则,系统可能报告改善,却没有改善服务。

启用前写明恢复策略

以下策略是虚构的。数字用于说明设计选择,不是推荐默认值。

策略字段虚构导出任务处理进程规则
触发条件任务处理进程心跳缺失 90 秒,且存在排队工作
前提条件另一个任务处理进程健康;依赖检查通过;不存在疑似入侵或完整性故障
允许操作使用当前获批制品替换一个任务处理进程
状态保护任务使用持久存储和经过验证的幂等键
限制15 分钟内最多替换两次;任何时候最多同时替换一个
冷却期替换后,须等待五分钟才能再次尝试
成功条件合成测试任务正确完成,受影响队列开始缩短
停止并升级处理任意前提不成立、达到上限,或无法验证成功

使用最小权限身份。记录策略版本、触发证据、操作、资源和结果。提供独立禁用控制器的方法。明确接收升级请求的人工负责人。

既测试成功恢复,也测试失败路径

重试可能重复副作用。任务处理进程可能保存文件后,在确认任务之前停止。允许再次执行前,验证幂等性。参见云原生故障示例。

重试也可能加重依赖过载。限制尝试次数,使用超时和适当退避。避免所有实例同步重试。AWS 解释了退避和抖动为何有助于减少这种放大效应。参见重试指南。

用三种情况测试虚构策略。单个任务处理进程停止时,应能恢复。数据库不可用时,应阻止重复替换。完整性故障尚不明确时,应停止自动化,并请求响应决定。

也检查遥测缺失。没有心跳,可能是任务处理进程故障,也可能是采集路径故障。控制器需要足以支持操作的证据,而不是对 AI 解释的信心。

衡量策略是否有帮助

记录已验证恢复、失败尝试、升级处理、重复工作,以及用户受影响的时长。在相似条件下,将它们与先前运维方式比较。

将底层缺陷保留为工程工作。反复重启内存泄漏进程,可以减少当前影响,但泄漏仍然存在。继续学习持续自我改进,将观察转化为持久修复。

完成练习

为本课虚构导出任务处理进程设计恢复策略。规定触发条件、排除项、允许操作、重试上限、冷却期、成功检查和升级处理负责人。测试它面对数据库不可用和原因未知的数据完整性故障时的行为。

下载工作表(Markdown)
检验理解 ↑

继续学习

来源与延伸阅读

Taiga 相关阅读

上一课: 将软件交付与 SOC、SIRT 衔接