混沌工程实践
混沌工程概念
在软件开发中,一个给定的软件系统在容忍故障的同时仍能确保服务质量(系统性能弹性)的能力通常被定义为需求。然而开发团队由于开发期限短或缺乏该领域的知识等而无法满足这一要求。混沌工程是一种满足系统性能弹性要求的技术。
混沌工程目标
- 把系统面临的不确定因素变成确定因素
- 培养处理生产环境各种失控情况的能力和信心
混沌工程的效用
- 稳定的使用体验,提前发现隐患,降低故障发生率,提升故障应急效率,增强故障应急能力
- 完善故障治理体系,从被动发现故障到主动发现故障;同时验证告警有效性和及时性,以及应急预案的可行性。
- 提升系统容错容灾能力
混沌工程实践
一、关机演练
控制维度:机房、应用、机器
技术:openstack API、saltstack
二、应用演练
控制维度:对所有应用选择多策略故障注入
注入工具技术选型:ChAP、Chaosblade、Chaos Mesh
三、依赖演练
控制维度:对应用层外部依赖进行多策略演练,并断言强弱依赖
四、全链路演练