初识混沌工程

什么是混沌工程?

混沌工程(Chaos Engineering)是指在生产环境的分布式系统中进行一些试验,用以考验系统在动荡环境下的健壮性,从而增强对系统稳定运行的信心。

Netflix工程师创建了Chaos Monkey,使用该工具可以在整个系统中在随机位置引发故障。正如GitHub上的工具维护者所说,“Chaos Monkey会随机终止在生产环境中运行的虚拟机实例和容器。”通过Chaos Monkey,工程师可以快速了解他们正在构建的服务是否健壮,是否可以弹性扩容,是否可以处理计划外的故障。

2012年,Netflix开源了Chaos Monkey。今天,许多公司(包括谷歌,亚马逊,IBM,耐克等),都采用某种形式的混沌工程来提高现代架构的可靠性。Netflix甚至将其混沌工程工具集扩展到包括整个“Simian Army(中文可以译为猿军)”,用它攻击自己的系统。

混沌工程属于一门新兴的技术学科,行业认知和实践积累比较少,大多数IT团队对它的理解还没有上升到一个领域概念。阿里电商在2010年左右开始尝试故障注入测试的工作,希望解决微服务架构带来的强弱依赖问题。去年3月底,阿里把六年来在故障演练领域的创意和实践浓缩而成的工具进行开源,命名为 “ChaosBlade”。混沌工程工具 ChaosBlade 自开源以来,由于其操作简洁、无侵入、扩展性强的特点,不少开发者将它用来测试自身系统的容错能力和健壮性,还将它用来验证容器编排配置是否合理。

混沌工程,是一种提高技术架构弹性能力的复杂技术手段。Chaos工程经过实验可以确保系统的可用性。混沌工程旨在将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。

它也可以视为流感疫苗,故意将有害物质注入体内以防止未来疾病,这似乎很疯狂,但这种方法也适用于分布式云系统。混沌工程会将故障注入系统以测试系统对其的响应。这使公司能够为宕机做准备,并在宕机发生之前将其影响降至最低。

如何知道系统是否处于稳定状态呢?通常,团队可以通过单元测试、集成测试和性能测试等手段进行验证。但是,无论这些测试写的多好,我们认为都远远不够,因为错误可以在任何时间发生,尤其是对分布式系统而言,此时就需要引入混沌工程(Chaos Engineering)。

故障演练:目标是沉淀通用的故障模式,以可控成本在线上重放,以持续性的演练和回归方式运营来暴露问题,不断推动系统、工具、流程、人员能力的不断前进。


混沌工程实施原则

混沌工程并不意味是”混乱”,它的实施过程涉及到系统,设施,场景,人员等各方面资源,必须是有原则,有序的,才能组织和协调各方资源来实现最终的目的。

它的实施原则有:

①一个目标,即实施整机房宕机。混沌工程作为新兴领域学科,包含的场景和内容非常丰富,我们需要结合目标进行取舍。方案和实施都必须围绕目标,避免过度设计。

②最小爆炸半径。生产试验过程中,必不可少的会对线上系统造成影响,造成用户投诉,最小爆炸半径就是结合方案和目标,减少对用户的影响。

                        图 1:爆炸半径影响范围

爆炸半径越小,越容易得到控制,但是暴露问题会较少;爆炸半径越大,影响就越大,暴露的问题会更多,爆炸半径的选择与各阶段的目标以及实施能力是相匹配的。

③循序渐进,分解目标。围绕最终目标,进行目标分解,由简入繁,由小到大。

                            图 2:实施目标分解

该过程既能积累经验,又能给予团队以信心,信心非常重要:

单系统应用节点,单个系统的应用层,如 Jboss,Tomcat 节点故障。单系统分库节点,单个系统的数据层分库,如 Redis,MySQL 的分库节点故障。单个系统的全库节点,单个系统的数据层全库,如 Redis,MySQL 的全库节点故障。组件节点,主要是指 Paas 的能力节点,如网关,消息分发,服务注册等节点故障。控制节点,是指集群控制节点,如 etcd,Zookeeper,Sentinel 等故障。接入/汇聚/核心网,是指接入/汇聚/核心网断网故障。物理机/机柜断电,是指某台物理机或者某台机柜断电故障。DCI 网络,是指 DCI(Data Center Interconnection)网络故障。机房断电,是指整个机房断电。

将以上各目标组合,形成以下阶段性目标:

单系统故障,是指某个应用系统故障,是单系统应用和全局故障的组合。全链路故障,是所有系统故障组合。机房内基础设施故障,是接入/汇聚/核心网络以及设备断电故障组合。整机房基础设施故障,是指 DCI 故障以及机房断电组合。整机房故障,是指所有故障的整合。通过各个阶段故障的组合,最终达到整机房的目的。

混沌工程总结

混沌工程是个非常强大的工程实践,它已经在世界上一些大规模项目中改变着软件的设计和实现。在分布式系统领域,其他的工程实践正追逐着快速化和灵活性,然而混沌工程却特别地处理着系统不确定性。混沌原则不仅增强了大规模快速创新的信心,同时也为保证了客户应有的良好体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值