混沌工程——从捣乱的视角看系统稳定性

发布于:2024-06-29 ⋅ 阅读:(10) ⋅ 点赞:(0)

概念

混沌工程是通过捣乱实验探究系统稳定性的实践过程,其作战武器是风险因子,即在健康的运行环境中引入风险变量来验证系统对风险的抵抗能力,它的作用是推动系统容错能力建设、验证监控告警及时性、提升研发问题排查能力。

混沌工程的工作内容

  1. 推动基础设施建设:DevOps系统建设、监控告警系统建设、日志系统建设。
  2. 推动系统容错能力建设:业务系统需要针对特定故障做好必要的保障措施,比如数据库连不上时如何保障业务操作能够继续而不被终止。
  3. 提升研发的事故处理能力:系统预案建设、系统事故快速响应建设。
  4. 实施混沌实验:实验中引入风险变量验证以上建设是否有效,比如kill实例进程后实例是否能够自动重启以保障继续提供服务。

混沌实验与测试的区别

它与测试方法不同的是专注点不同,其它测试方法关注的是功能正确性,混沌实验关注的是系统稳定性。

混沌实验实施条件

混沌实验以破坏系统运行环境来探究系统稳定性,因此,如果系统本身没有应对异常的基本能力,就没有必要实施混沌实验。团队中要实施混沌实验,则必须具备一下连个条件:

  1. 完善的监控体系:接口监控、实例监控、服务器监控等
  2. 系统具备对异常的处理能力

如何降低实验带来的风险?

团队为系统稳定性安全性做了很多保障性措施,那如何验证这些措施的有效性呢,如果直接实施混沌工程,可能会引发系统宕机、业务数据不一致等生产事故,而如果不进行混沌实验,就没法验证这些保障性措施是否可靠,这就像埋了一颗定时炸弹在身边,混沌实验就好比拆解炸弹,在拆解炸弹的过程中随时都可能发生爆炸。
既然存在炸弹,就必须得进行拆除,那如何降低拆除时炸弹爆炸带来的风险?这里就要引入混沌实验的实施原则——把影响范围控制在最小爆炸半径内,即

  1. 最短时间: 故障发生能够短时间内恢复。
  2. 最小流量: 受影响的请求尽量最少,比如流量低峰期在集群中某个实例上实施混沌实验。
  3. 最小上下游系统: 尽量使事故只影响上游或下游系统。
  4. 最小实验环境: 可以先在测试环境实施混沌实验,最后才在生产环境实施实验。

开源工具

Chaosblade:是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。

Chaos Mesh : Chaos Mesh是云原生计算基金会(CNCF)的孵化项目,是一个云原生混沌工程平台,它提供了各种类型的故障模拟,并具有编排故障场景的巨大能力。

Awesome Chaos Engineering:这个github仓库中收集了许多混沌工程相关的资源文档。