混沌工程测试流程

2,958 阅读3分钟

混沌工程是什么?

混沌工程(Chaos Engineering)是一种提高技术架构弹性能力的复杂技术手段。是在分布式系统上进行实验的学科,目的是建立对系统承受生产环境中湍流条件能力的信心。混沌工程会将故障注入系统以测试系统对其的响应。这使组织能够为宕机做准备,并在宕机发生之前将其影响降至最低。

图片1.1.png

混沌工程旨在将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。

例如,业务应用服务器意外宕机或用户流量突然激增,将整个系统产生什么影响?能否在风险到来之前提前规避,或是把损失控制在最小范围内。

 

混沌工程测试原理和步骤

混沌工程通常通过故障注入的方式、编排化的场景、自动化的实验流程,来学习如何在大型分布式系统和网络中降低业务风险,下面是进行混沌工程的一般流程:

1.确认实验对象

实验对象的选择通常来源于软件类资源与硬件类资源,选择实验的对象,控制“最小爆炸半径”,本次实验将针对常用的中间件Tomcat,来进行故障测试。

2.实验环境选择

混沌工程测试建议在生产环境进行实验,对于非生产环境的混沌工程实验,可采用模拟生产流量的方式,尽量和生产流量相似,来验证实验场景和工具的可靠性。

.2.png

3.实验工具使用

实验不仅仅是对于实验结果的验证,也反映出了系统相关人员对于实验工具的熟悉程度,以及真实故障发生后对于问题处理的应变能力,实验基于同创永益CNBR云原生业务韧性平台进行混沌工程测试

 

4.  实验原理说明

通过同创永益CNBR云原生业务韧性平台纳管节点,接入agent,通过故障pod注入OS停止服务故障,杀掉tomcat服务进程,同时通过jmeter脚本模拟流量访问,验证服务访问状态是否收到影响。

5.设定故障场景

某业务系统,后端使用Tomcat群集,共两个Tomcat节点;前端web采用Nginx搭建,并向后端负载分发,与其它服务互相有依赖关系,上线一个版本运行大概24小时后后台tomcat服务突然崩溃,通过注入故障,模拟流量的方式验证服务的可用性。

设定故障场景

.3.png

新增演练计划

.4.png

 

配置故障指标

.5.png  

配置稳态指标

.6.png

6.场景故障注入

通过故障pod 注入故障kill掉其中一台Tomcat的服务,同时通过稳态指标模拟用户流量循环访问服务。

执行演练计划

.7.png

 

查看服务访问指标

.8.png  

 

7.故障恢复验证

实验注入故障后,监控指标能快速恢复至预期,故障注入停止后,验证其恢复能力,web端服务是否访问正常,后端进程状态验证

查看演练结果

.9.png

 

查看指标概览

.10.png  

Web访问验证

.11.png

.12.png

8.实验结果总结

通过实验结果显示,服务访问未受影响,符合预期情况。

不同故障的注入,带来不同的业务风险,通过模拟故障场景,验证服务的稳定性,同时,通过实地现场操作,掌握各环节所需要的具体操作时间,为后期的改善、提高和领导决策提供基础数据,对这些未知问题提前发现并解决,防止在生产环境中造成不可挽回的损失。