混沌工程-Netflix的捣蛋猴

前言:

混沌工程这一工程学理念已慢慢被人所接受,称它为工程学是因为虽然是由国外互联网巨头netflix提出并应用到IT技术中,但是它的思想和应用场景远远超过了互联网领域,可以独立成为一个很有价值的学科。关于它理念上的介绍,网上有大量的资料,我这边就不再搬砖了,我这里只想跟大家分享实战中的一些实践经验和混沌工程架构过程中真实的感悟。

核心理念:

第一,混沌工程依赖优秀的系统架构

混沌工程是系统架构高阶形态,它的落地需要很扎实的系统架构和配套设施,包括Devops、持续集成平台、监控、统一网关等,否则就是空中楼阁,分分钟有倒塌的危险。关于为什么要有这些系统建设,它们在混沌工程里起到什么作用,我将会在第二章节做详细介绍。

第二,混沌实验一定要基于生产环境

这也混沌工程一直在强调的,否则混沌结果没有任何意义。只有基于生产的混沌实验才能反映出真实的风险和缺陷,才能提高产品的稳定性和团队的信心。

第三,混沌工程和混沌实验是两个概念

“不就是在系统中想办法捣蛋么”,这可能是对混沌工程第一印象。很多企业和团队,包括我自己初期阶段,对混沌工程体系理解的不够透彻,把它和混沌实验混为一谈,其实这完全是两个不同的概念。“捣蛋”是混沌实验的动作,代表工具有阿里的chaosblade,它属于混沌工程的一部分,如何触发捣蛋,对谁进行捣蛋,捣蛋的结果如何,捣蛋合适终止,捣蛋后如何回滚,这些都属于混沌工程范畴,所以说混沌工程远比我们想象中的复杂。

第四,混沌不是结果,解决问题才是结果

混沌工程一定要有个闭环的过程,发现的问题需要跟踪落地才是最终的结果,否则混沌没有任何意义。发起混沌和修复问题的往往不是同一个团队,所以两个团队间一定要产生闭环。

混沌工程组成部分:

1 混沌制造--引发混乱的工具

混沌工程的一大特性就是对生产环境进行混沌攻击,也叫混沌实验,那就要依据各种工具来达到目的。目前流行的有阿里的chaosblade、spring家族ChaosMonkey、模拟网络的ToxiProxy、甚至直接调用云平台API随即关闭服务器等,这些都是对系统制造捣蛋的混沌工具。

2 混沌平台--混沌工程核心框架

目前我接触过的混沌平台只有ChaosToolkit(https://github.com/chaostoolkit),这个是开源的框架,据我所知阿里的混沌工程平台也是基于ChaosToolkit的。ChaosToolkit由一系列python项目组成,核心是ChaosToolkit、ChaosToolkit-lib、ChaosToolkit-report和ChaosToolkit扩展,它们可以独立部署也可以容器部署。ChaosToolkit把一次混沌工程拆分为2个type和3个阶段。简介说就是先定义稳定状态,再进行混沌实验,再进行回滚;所有操作都分为action和probe,前者是主动发起的动作,后者是探测结果。一次混沌试验后可以生成html或pdf格式的报告供我们参考。

3 足够敏感的监控--混沌工程的体温计

混沌实验对生产造成了多大的影响,要不要提前结束?混沌过程中我的生产环境是否是健康的?ChaosToolkit中probe如何探测到我某些指标是否正常?混沌发现的问题被改进后再次混沌是否已经修复?这些都离不开多维度的监控系统。至少要覆盖到基础信息(CPU、磁盘、IO、内存、连接数)、七层信息(状态码、访问量)、应用信息(jvm堆、gc、线程数),总之混沌实验可能影响到的部分都需要监控起来。

3 统一接入网关--控制爆炸半径

混沌工程中有一个容易被忽略的概念叫做“爆炸半径”,它的意思是一次混沌实验造成的影响范围要是可控的,可以是把影响限制到具体的某一台机器,限制到具体的某一批客户,限制到具体的某一个服务,这些都是在做实验前需要考虑的爆炸半径。假如说我想要手机号尾号为0的用户参与这次混沌实验,那就有两种做法。方式一:把这批用户的请求路由到一台机器中,然后只对这台机器进行混沌实验。方式二:给这批用户请求头中添加特殊标识触发所有机器上对于这个特殊标识的捣蛋处理。无论哪种方式要限制住爆炸半径都需要一个统一接入网关进行流量调度或报文补充。

4 Devops平台--能否产生成效的基石

有了Devops平台,首先在文化层面上你所在企业的研发、运维、运营是有共识的,其次可以在新版本接入生产时就自动触发混沌实验来验证产品的稳定性,最后可以为ChaosToolkit等混沌框架提供高阶的服务接口,例如关闭某业务服务器、回滚被干掉的服务等。我使用的devops平台是spinnaker,企业版的spinnaker原生支持ChaosToolkit。总之混沌工程要基于Devops文化,混沌并解决问题是所有人的事,而不是具体某个人或某个团队的事情。

总结:

关于Devops平台、足够敏感的监控、混沌框架、混沌制造、统一接入网关这些细节后续会陆续更新他们在混沌工程中更详细的应用,本篇先以一张图再次概括下他们的关系。


混沌工程是一个比较前言的学科,国内落地的公司应该还不多,目前都在摸索阶段,以上内容欢迎大家留言探讨。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值