混沌工程产品模型
混沌工程提倡用一系列实验来真实地验证系统在各类故障场景下的表现,通过频繁地进行大量实验, 既使得系统本身的反脆弱性持续增强,也让开发者对系统越来越有信心
在实际生产实践中,我们形成了下面所示的混沌工程产品模型,由“目标、动作、故障、触发器、执行”五个部分组成
作用目标(Target)
指拥有独立IP的机器端点(Endpoint),例如虚拟机、Pod,也可以是一个特定的集群里的所有节点
动作(Action)
具体的影响点,其类型是系统内部预先定义好的,常见的包括:
- CPU满载
- 网络丢包
- 网络不可达(区分上行和下行)
- 网卡满载(区分上行和下行)
- 磁盘空间写满
- 磁盘IOPS达到上限
- 进程Hang死和退出
- 时间和DNS错误
每个动作可作用于一个或多个作用目标
故障(Incident)
经过编排的、由一个或多个动作组成,对系统性能、稳定性有某种影响的行为实体
触发器(Trigger)
按照配置的时间规则触发某个故障,一般可支持三种时间规则
- 定时,即在未来确定的某个时间点触发
- 循环,每间隔一段时间触发,总共循环N次
- 随机,在未来随机某个时间点触发,总共N次,混乱猴子在此基础上实现
触发器负责跟踪执行过程、维持执行状态、记录执行结果
执行(Execution)
触发器实际在目标上执行动作的过程,因此一个触发器可能会关联多次执行