混沌工程是什么?
混沌工程(Chaos Engineering)是一种提高技术架构弹性能力的复杂技术手段。是在分布式系统上进行实验的学科,目的是建立对系统承受生产环境中湍流条件能力的信心。混沌工程会将故障注入系统以测试系统对其的响应。这使组织能够为宕机做准备,并在宕机发生之前将其影响降至最低。
混沌工程旨在将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。
例如,业务应用服务器意外宕机或用户流量突然激增,将整个系统产生什么影响?能否在风险到来之前提前规避,或是把损失控制在最小范围内。
混沌工程测试原理和步骤
混沌工程通常通过故障注入的方式、编排化的场景、自动化的实验流程,来学习如何在大型分布式系统和网络中降低业务风险,下面是进行混沌工程的一般流程:
1.确认实验对象
实验对象的选择通常来源于软件类资源与硬件类资源,选择实验的对象,控制“最小爆炸半径”,本次实验将针对常用的中间件Tomcat,来进行故障测试。
2.实验环境选择
混沌工程测试建议在生产环境进行实验,对于非生产环境的混沌工程实验,可采用模拟生产流量的方式,尽量和生产流量相似,来验证实验场景和工具的可靠性。
3.实验工具使用
实验不仅仅是对于实验结果的验证,也反映出了系统相关人员对于实验工具的熟悉程度,以及真实故障发生后对于问题处理的应变能力,实验基于同创永益CNBR云原生业务韧性平台进行混沌工程测试
4. 实验原理说明
通过同创永益CNBR云原生业务韧性平台纳管节点,接入agent,通过故障pod注入OS停止服务故障,杀掉tomcat服务进程,同时通过jmeter脚本模拟流量访问,验证服务访问状态是否收到影响。
5.设定故障场景
某业务系统,后端使用Tomcat群集,共两个Tomcat节点;前端web采用Nginx搭建,并向后端负载分发,与其它服务互相有依赖关系,上线一个版本运行大概24小时后后台tomcat服务突然崩溃,通过注入故障,模拟流量的方式验证服务的可用性。
设定故障场景
新增演练计划
配置故障指标
配置稳态指标
6.场景故障注入
通过故障pod 注入故障kill掉其中一台Tomcat的服务,同时通过稳态指标模拟用户流量循环访问服务。
执行演练计划
查看服务访问指标
7.故障恢复验证
实验注入故障后,监控指标能快速恢复至预期,故障注入停止后,验证其恢复能力,web端服务是否访问正常,后端进程状态验证
查看演练结果
查看指标概览
Web访问验证
8.实验结果总结
通过实验结果显示,服务访问未受影响,符合预期情况。
不同故障的注入,带来不同的业务风险,通过模拟故障场景,验证服务的稳定性,同时,通过实地现场操作,掌握各环节所需要的具体操作时间,为后期的改善、提高和领导决策提供基础数据,对这些未知问题提前发现并解决,防止在生产环境中造成不可挽回的损失。