实验室指南
混沌工程不是一个新概念自从网飞工程师创造出混沌猴子以来,它已经被悄悄地开发了好几年伴随着最近几年来云诞生的兴起,混沌工程开始频繁出现在我们面前作为提高技术架构灵活性的复杂技术手段,混沌工程在分布式系统上进行随机故障注入实验,完美匹配了云原生规模大,结构复杂,可靠性要求高的特点,为云原生的发展提供了强有力的辅助
:单元中国移动智能家居运营中心。
云原生时代,混沌工程
在今年的云诞生中,混沌工程也应该考虑。
听说XXX公司搭建了一个混乱的工程平台。
最近也在学习混沌工程。
你最近经常听到这样的对话吗。
什么是混沌工程。
为什么要实施混沌工程。
如何实施。
如果不太了解# 10067,
那我给你介绍一下# 128071,
第一部分
什么是混沌工程。
有一只猴子非常调皮,到处跳来跳去搞破坏他不知道什么时候挂掉系统里的哪个服务可是,IT人不仅不想破坏它,还非常欢迎它,甚至让它的团队成长发展,建立了猴子军!是不是特别奇怪其实这就是混沌工程的鼻祖,网飞开发的混沌猴子让我们来看看
根据这只猴子的特性,我们可以猜测几分钟,随机破坏系统,制造一些正常手段难以设计的故障,验证系统的弹性,提高系统的可靠性如果给定一个定义,混沌工程是一种提高技术架构灵活性的复杂技术手段感觉像不像我们常说的故障注入有点喜欢没错,故障注入是混沌工程最重要的部分疑难解答混沌工程和混沌工程确实有一些重叠,但混沌工程的内涵更丰富,有自己的一般准则在实现层面,混沌工程更像是一个实验,并不预设实验结果
第二部分
为什么要实施混沌工程。
根据云原生时代流行的持续测试概念,测试人员参与到软件生命周期的需求分析阶段,自动化测试,向左/向后移动的测试等更多那么会不会有找不到的bug呢需要引入混沌工程吗答案是肯定的因为目前的测试方法都是基于已建立的测试用例,所以测试结果是预期的对于复杂的系统,尤其是在频繁使用数千台服务器的云环境下,我们很难预测系统会出现哪些故障,更不用说一个小小的故障会对整个系统产生多大的影响混沌工程就是为了解决这一问题而产生的,它可以尽可能地产生随机故障,监控系统的性能,为加强系统提供参考和建议,从而不断提高系统的鲁棒性
第三部分
如何实施混沌工程
作为混沌工程的基础,首先要了解故障注入事实上,行业已经有了一个相对普遍的按等级划分的断层画像
有了断层图像,混沌工程的实现就有了基础网飞还给出了混沌工程的实现步骤和设计原则经过多年的发展,阿里巴巴,亚马逊等巨头公司都有了自己的混沌工程平台,同时也开放了很多故障注入工具站在巨人的肩膀上,我们再实施混沌工程就容易多了
目前比较流行的开源工具如下表所示,大部分都是混沌猴衍生的:
我们研究了一些开源工具,并在项目中付诸实践无论是在虚拟机环境还是容器环境中,这些工具的使用都非常简单,涵盖的故障场景也相对全面从底层服务器级到代码方法级,可以模拟常规故障当然目前支持的故障场景比较简单,很多常用的中间件暂时不支持,给我们留下了很大的二次开发空间
这些开源工具的一般问题分类如下:
1.功能分散且单薄每个工具在功能上都有局限性,只能模拟一些故障
2.重点是故障注入,但缺乏混沌工程的其他设计原则不能自动实现,没有可视化管理界面,实验的爆炸半径控制不够
什么是完整的混沌工程平台除了故障类型的支持,权限管理,资源管理,演练推荐,流程安排都是成熟的混沌工程平台的必备组件,甚至可以提供攻防演练等上层能力因此,搭建一个成熟的混沌工程平台并不是一件容易的事情
总结
。