混沌工程如何控制爆炸半径?掌动智能为你揭秘!
在数字化时代,IT系统成为业务发展的主要载体,其可靠性直接影响业务的可持续性。随着系统架构逐渐向微服务架构演化、开发效率以及系统扩展性的答复提高,系统的复杂性随之增长。传统的测试方法已经不能全面覆盖系统所有的行为,测试的有效性也随之大打折扣。
为了保障系统稳定运行,很多企业都上了“容灾方案”以及各种“监控告警手段”。但都是“被动响应”,并且没有任何一个团队或个人,可以保障自己的“容灾方案”、“监控告警手段”在任何情况下都能够正常生效。同时,业务规模的不断增长使得服务之间的依赖性带来的不确定性也呈指数级增长。在这种复杂的服务调用网中,任何一个环节出现异常变化,都有可能导致整个业务无法运行。SRE(Site Reliability Engineering/Engineer,站点可靠性工程师)发现“混沌工程”是非常有效的“主动预防”手段。
混沌工程
混沌工程是一门对系统进行实验的学科,旨在了解系统应对生产环境中混乱状况的能力,建立对系统的信心,其目的是在系统缺陷导致中断等危机发生前,发现系统缺陷。
混沌工程的基础是经验主义,但实验高于测试,验证高于清查。混沌工程原则中的高级原则首次描述了混沌工程的黄金标准。高级原则如下:
●建立关于稳态行为的假说
●多样化地引入现实世界的事件
●在生产环境中进行实验
●持续运行自动化实验
●最小化爆炸半径
最小化爆炸半径
在实际的混沌工程实验操作中,最小化爆炸半径目标与所面对的复杂系统的上下文高度相关。在某些系统中这可能意味着使用影子流量,也可能是将对业务有重大影响的请求排除在实验之外。因此,如何精准的控制/测量爆炸半径已经成为混沌工程实验的核心。
下文将为您揭示掌动智能实施团队是如何在混沌工程的实验中控制爆炸半径的。
爆炸半径控制
由于混沌工程实验可能会给业务系统带来风险,所以对于爆炸半径的控制要始终贯穿于整个实验过程:从实验设计阶段、实验执行阶段、到结束实验阶段,在整个实验生命周期中,我们应该时刻牢记“最小化爆炸半径”这一点。下文将分阶段为大家展示各时延阶段常见的爆炸半径控制方法。
一、实验设计阶段
“凡事预则立,不预则废”,在实验设计阶段,最重要的是要讨论清楚实验的范围,并跟相关团队做好沟通,调整每个人的思维模式以保持对实验认知的一致性。
在实验设计阶段,常见的“最小化爆炸半径”控制方法有如下几种:
1、确定合理的实验范围
明确实验范围是在混沌工程实验生命周期中控制爆炸半径最基础的手段。在确定实验范围时,我们要根据“实验假设”进行充分考虑,为满足“实验假设”,我们要注入故障的目标对象到那个级别,比如:节点、node、pod、或者是进程。一般情况下,我们会在满足“实验假设”的情况下,选择最小的故障注入级别。
2、设置准确的观测指标
准确的观测指标,有助于混沌工程时延过程中控制爆炸半径。观测指标的设计一般会从如下三个方面进行考虑:
●业务性指标:能否反映业务状况的关键指标,比如:每秒内成功打开重要活动页面的用户数、每秒内关键业务交易成功率、关键业务的用户停留时长等。
●应用健康指标:能够反映应用健康状况的指标,比如:平均用户操作时延,数据库连接池可用连接数量等。
●其他系统指标:能否反应基础设施和系统运行状况的指标,比如:应用服务器和数据库服务器的CPU利用率,内存利用率等、JVM可用内存大小等。
3、明确系统处于不良状态的定义
在明确混沌工程实验的范围和“观测指标”后,还要明确系统“处于不良状态”的定义,比如:平均用户响应时间超过10秒、应用服务器或数据库服务器CPU使用率达到95%以上等。当出现这种情况时,预示着系统即将处于失效状态或不可用状态,要及时终止实验或者调整实验参数。
二、实验执行阶段
由于混沌工程实验相较于传统的测试工作有着更强的不确定性,为了避免影响太多用户正常使用,一般会在实验进行时进行用户分流,让很少一部分用户参与到实验中作为实验组,剩余的用于作为对照组,并且在实验的执行的过程中,密切关注系统的各项指标反馈,及时调整实验的参数或者终止实验。
1、用户分流
在实验执行阶段,精准的用户分流是一个重要的控制爆炸半径的手段。这种模式需要前后端配合,比如前端在发送请求时可以带上一个特殊的标识(可以是,特殊的版本号,或者其他标识),后端根据前端发送请求时带的标识,进行分流。详见下图:
用户分流后在实验过程中实时关注“实验组”和“对照组”的数据,根据实际观测数据进行实验参数的调整或终止实验操作,以达到在实验执行过程中控制爆炸半径的目的。
2、指标采集监控
由于混沌工程实验相较于传统的测试工作有着更强的不确定性,需要对系统运行状态有更好的把控,除了实验前进行用户分流外,还需要在实验执行的过程中密切关注在实验设计阶段,设计的“观测指标”的变化,关注系统是否出现告警或业务异常。如果发现系统失效,可以随时终止实验执行。
3、调整实验参数
实验执行的过程中,可以根据“观测指标”的波动情况,随时调整实验参数,改变实验的影响范围和强度,如指标波动不明显,可适当增加实验强度。如系统发生大范围失效,难以定位故障原因,则可适当降低实验强度或终止实验。
一般我们在创建实验的时候,对实验“添加防护策略”,在实验的过程中,根据监控指标进行实验参数的调整,或者终止实验。
三、结束实验阶段
在实验终止后,需要确保没有残留的进程,并且需要对系统在实验结束后,继续观测一段时间,确保各项关键指标(业务指标、应用健康指标、系统资源指标等)都恢复正常。
结 语
随着IT技术的更新以及业务发展,IT系统的复杂度也随之提高,传统的IT系统稳定性保障技术也需要随之更新以解决新架构下面临的新问题。而混沌工程通过向系统注入随机和不可预知行为的受控实验来识别系统的脆弱点,大大地提升了IT系统的稳定性。在我们实际进行混沌工程实验时,除了将“最小爆炸半径”贯穿于整个实验过程中,还需要配合使用“可观测性平台”、“业务压测工具”等工具或技术,组合搭建系统稳定性保障平台,全方位保障系统的可靠性和连续性。有兴趣的朋友,欢迎关注广州掌动智能官网具体了解“三位一体超级混沌工程解决方案”。