← 返回首页
🚀

混沌工程:故障注入与Chaos Mesh实战

📂 architecture ⏱ 2 min 290 words

混沌工程:故障注入与Chaos Mesh实战

混沌工程原理

混沌工程是通过主动注入故障来验证系统韧性的实践。核心理念是在生产环境中可控地制造混乱,发现系统弱点并改进。

混沌实验流程:
假设 → 实验设计 → 注入故障 → 观察行为 → 分析结果 → 改进
 │        │          │          │          │         │
 └ 系统  └ 定义    └ 执行    └ 监控    └ 度量    └ 修复
   应该    范围和     混沌      系统      偏差      弱点
   有韧性  安全边界   实验      响应      分析

Chaos Mesh架构

核心组件

Chaos Mesh架构:
├── Chaos Dashboard(控制台)
├── Chaos Controller Manager
│   ├── PodChaos控制器
│   ├── NetworkChaos控制器
│   ├── IOChaos控制器
│   ├── TimeChaos控制器
│   └── StressChaos控制器
├── Chaos Daemon(节点代理)
│   ├── 进程注入
│   ├── 网络控制
│   ├── IO延迟
│   └── 时间偏移
└── etcd(状态存储)

安装部署

# Helm安装Chaos Mesh
helm repo add chaos-mesh https://charts.chaos-mesh.org
helm install chaos-mesh chaos-mesh/chaos-mesh \
  --namespace chaos-mesh \
  --create-namespace \
  --set chaosDaemon.runtime=containerd \
  --set chaosDaemon.socketPath=/run/containerd/containerd.sock

故障注入实验

Pod故障注入

apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
  name: pod-kill
  namespace: default
spec:
  action: pod-kill
  mode: one
  selector:
    namespaces:
      - production
    labelSelectors:
      app: myapp
  scheduler:
    cron: '@every 5m'
---
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
  name: pod-failure
spec:
  action: pod-failure
  mode: fixed
  value: "3"
  duration: "5m"
  selector:
    labelSelectors:
      app: myapp

网络故障注入

apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
  name: network-delay
spec:
  action: delay
  mode: all
  selector:
    labelSelectors:
      app: myapp
  delay:
    latency: "100ms"
    jitter: "10ms"
    correlation: "50"
  direction: to
  target:
    selector:
      labelSelectors:
        app: database
    mode: all
---
apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
  name: network-partition
spec:
  action: partition
  mode: one
  selector:
    labelSelectors:
      app: myapp
  direction: both
  target:
    selector:
      labelSelectors:
        role: replica
    mode: all

IO与CPU故障

apiVersion: chaos-mesh.org/v1alpha1
kind: IOChaos
metadata:
  name: io-delay
spec:
  action: latency
  mode: one
  selector:
    labelSelectors:
      app: myapp
  volumePath: /data
  delay: "100ms"
  duration: "5m"
---
apiVersion: chaos-mesh.org/v1alpha1
kind: StressChaos
metadata:
  name: cpu-stress
spec:
  mode: one
  selector:
    labelSelectors:
      app: myapp
  stressors:
    cpu:
      workers: 4
      load: 80
  duration: "10m"

混沌实验最佳实践

# 实验安全边界
experiment-safety:
  blast_radius:
    - 限制受影响Pod数量
    - 设置最大故障持续时间
    - 配置自动停止条件
  
  rollback:
    - 监控系统健康状态
    - 超过阈值自动回滚
    - 保留快照用于恢复
  
  observability:
    - 实验前/中/后监控
    - 记录系统行为变化
    - 生成实验报告

混沌工程成熟度模型

  1. 初始阶段:手动执行简单Pod删除实验
  2. 基础阶段:自动化网络延迟、CPU注入实验
  3. 进阶阶段:多故障组合、全链路混沌
  4. 成熟阶段:生产环境常态化、自动化实验平台