近日,国内多家网站同时发生短期服务不可用现象,一夜冲上圈内热搜。据官方答复,是由于部分服务器机房发生故障,导致网站无法访问。为了避免这种情况,提高系统架构的可靠性,保障业务的连续性,希望能在故障之前找到导致 “崩盘” 的缺口。
十多年前,国外的互联网公司就已经在云化、分布式、微服务等前沿技术的使用过程中,遇到了类似的问题,并由此诞生了混沌工程。
什么是混沌工程?
混沌工程即 Chaos Engineering[1],被定义为在分布式系统上进行实验的学科,目的是建立对系统抵御生产环境中失控条件的能力以及信心。混沌工程属于一门新兴的技术学科,是一种提高技术架构弹性能力的复杂技术手段。最早由 Netflix 技术部门创建了名为 Chaos Monkey 的项目,通过随机性测试,来检测系统架构的健康情况,并设计足够的预案来应对可能到来的新一轮故障。
随着云化技术的发展和云原生(Cloud Native)的概念的提出,混沌工程的反脆弱哲学思想,也引入了云原生体系,可简单高效地为系统提高容错能力。
什么是 ChaosBlade Operator?
ChaosBlade[2] 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。
而 ChaosBlade Operator[3] 是 Kubernetes 平台实验场景的实现,将混沌实验通过 Kubernetes 标准的 CRD 方式定义,很方便的使用 Kubernetes 资源操作的方式来创建、更新、删除实验场景,包括使用 kubectl、client-go 等方式执行,而且还可以使用上述的 chaosblade cli 工具执行。
把实验定义为 Kubernetes CRD 资源,将实验模型中的四部分映射为 Kubernetes 资源属性,完美将混沌实验模型与 Kubernetes 声明式设计结合在一起(依靠混沌实验模型便捷开发场景,并结合 Kubernetes 设计理念)。
-
通过 kubectl 或者编写代码直接调用 Kubernetes API 来创建、更新、删除混沌实验,可清晰获取资源模拟实验的执行状态,实现 Kubernetes 故障注入的标准化。
-
通过 Chaosblade cli 方式可非常方便的执行 Kubernetes 实验场景,查询实验状态等。
-
ChaosBlade 混沌实验模型与 Kubernetes CRD 的结合,实现基础资源、应用服务、Docker 容器等场景复用,方便 Kubernetes 场景的扩展。
支持的场景
目前支持的实验场景有以下三大类(持续更新中):
部署 ChaosBlade Operator
执行 Kubernetes 实验场景前,需提前部署 ChaosBlade Operator。