首页/数据/备份与容灾速查/故障注入演练(混沌工程)

故障注入演练(混沌工程)

主动注入故障验证系统的自动恢复能力:与人工切换演练互补,用受控实验发现『以为有冗余、实际不生效』的隐患。

备份与容灾速查数据更新于 2026-10-13

故障注入演练(混沌工程)

主动向系统中注入故障,验证自动恢复能力是否真的生效:杀掉进程、断开节点、注入网络延迟或丢包。它和人工切换演练互补——人工演练验证流程,故障注入验证系统自身的容错设计,专门用于发现『以为有冗余、实际不生效』这类隐患。前提是先有可观测的稳态指标,否则无法判断系统是在正常降级还是已经出事。

基本信息

适用平台Chaos Mesh(Kubernetes)、ChaosBlade、litmus 等
核心原则稳态假设、模拟真实事件、在生产或类生产验证、持续运行、控制爆炸半径
常见实验杀进程或节点、网络延迟与丢包、磁盘 IO 故障、时钟偏移
安全要求实验可中止、可回滚,全程有观察人

典型使用场景

  • 验证数据库主从切换是否真的自动完成
  • 验证负载均衡摘除故障节点的实际耗时
  • 验证应用重试与降级逻辑在断网时的行为
  • 验证监控与告警能否在故障发生后第一时间触发
  • 验证多可用区部署是否真的做到容量冗余

Chaos Mesh 注入示例(Pod 终止)

Chaos Mesh 注入示例(Pod 终止)
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
  name: pod-kill-demo
spec:
  action: pod-kill        # 终止 Pod 验证重建与流量摘除
  mode: one               # 只影响一个实例,控制爆炸半径
  duration: '30s'         # 实验时长,到期自动恢复
  selector:
    namespaces: [prod]
    labelSelectors:
      app: web            # 只命中带该标签的实例
  scheduler:              # 可按 cron 周期执行,形成持续验证
    cron: '@every 1h'

实验设计要点

要点说明风险
稳态指标实验前先定义正常范围无稳态定义就无法判断结果是正常还是事故
爆炸半径命中的实例或比例一次命中多个关键服务,观察人来不及中止
中止机制随时可停止的开关缺少中止手段时实验可能演变成真实故障
观察人实验期间有人在看无人观察则异常被发现得太晚
混沌实验先从类生产环境与『关闭自动继续』的受控模式开始;没有建立稳态指标、没有中止手段、没有观察人之前,不要对生产注入故障。

易错点

  • 没定义稳态就注入:无法判断系统行为是『正常降级』还是已经出事
  • 爆炸半径失控:一个实验同时命中多个关键服务,观察人来不及中止
  • 在生产直接开跑:缺少预授权与通知,团队把实验当真实故障处理
  • 只做一次性实验:没有周期性注入,容错能力会在版本迭代中悄悄退化

数据来源与参考

  • Principles of Chaos Engineering(principlesofchaos.org)
  • Chaos Mesh 官方文档(PodChaos)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌