【安全与故障排查】07-混沌工程落地:用故障注入提升系统韧性

【安全与故障排查】07-混沌工程落地:用故障注入提升系统韧性
混沌工程落地用故障注入提升系统韧性专栏安全 故障排查难度专家标签混沌工程Chaos Engineering故障注入韧性Chaos Mesh前言最好的故障演练方式是在可控的情况下主动制造故障。混沌工程的核心理念在故障真的来临之前先于它们发现系统的薄弱点。一、混沌工程的步骤1. 定义稳定状态假设系统正常时应该有什么指标 2. 设计故障实验注入什么类型的故障 3. 在生产/预发执行从小范围开始 4. 观察与稳定状态的偏差 5. 修复发现的问题 6. 提高爆炸半径二、Chaos Mesh 安装K8s环境# 安装helm repoaddchaos-mesh https://charts.chaos-mesh.org helminstallchaos-mesh chaos-mesh/chaos-mesh-nchaos-testing --create-namespace# 访问Dashboardkubectl port-forward-nchaos-testing svc/chaos-dashboard2333:2333三、常见故障实验实验1Pod 随机杀死Netflix Chaos MonkeyapiVersion:chaos-mesh.org/v1alpha1kind:PodChaosmetadata:name:kill-random-podnamespace:chaos-testingspec:action:pod-killmode:one# 随机杀1个Podselector:namespaces:-productionlabelSelectors:app:myappscheduler:cron:every 10m# 每10分钟杀一次实验2网络延迟注入apiVersion:chaos-mesh.org/v1alpha1kind:NetworkChaosmetadata:name:add-latencyspec:action:delaymode:allselector:namespaces:[production]labelSelectors:app:payment-servicedelay:latency:500mscorrelation:25# 相关性25%模拟真实网络抖动jitter:100msduration:5m实验3CPU 压力apiVersion:chaos-mesh.org/v1alpha1kind:StressChaosmetadata:name:cpu-stressspec:mode:oneselector:namespaces:[production]stressors:cpu:workers:2load:80# 80% CPU负载duration:10m实验4磁盘IO限速apiVersion:chaos-mesh.org/v1alpha1kind:IOChaosmetadata:name:disk-io-delayspec:action:latencymode:oneselector:namespaces:[production]volumePath:/datapath:**delay:10mspercent:50# 50%的IO操作增加10ms延迟四、游戏日GameDay组织每月一次 GameDay 故障演练 1. 提前1周通知所有相关团队 2. 准备假设如果支付服务挂了订单服务会怎样 3. 准备回滚方案 4. 执行演练 5. 立即回滚 6. 72小时内发布演练报告记录发现的问题 7. 2周内修复所有发现的问题五、混沌工程成熟度评估级别描述Level 0从未做过故障演练靠祈祷Level 1有手动故障演练流程但不频繁Level 2定期 GameDay有组织地演练Level 3自动化混沌实验持续运行Level 4生产环境持续混沌自动修复结语混沌工程不是为了制造混乱而是为了发现在混乱到来之前你还不知道的问题。从小范围、低频率开始逐步提高置信度。