六年打磨!阿里开源混沌工程工具 ChaosBlade

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。

image

阿里妹导读:减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。

高可用架构是保障服务稳定性的核心。

阿里巴巴在海量互联网服务以及历年双11场景的实践过程中,沉淀出了包括全链路压测、线上流量管控、故障演练等高可用核心技术,并通过开源和云上服务的形式对外输出,以帮助企业用户和开发者享受阿里巴巴的技术红利,提高开发效率,缩短业务的构建流程。

例如,借助阿里云性能测试 PTS,高效率构建全链路压测体系,通过开源组件 Sentinel 实现限流和降级功能。这一次,经历了 6 年时间的改进和实践,累计在线上执行演练场景达数万次,我们将阿里巴巴在故障演练领域的创意和实践,浓缩成一个混沌工程工具,并将其开源,命名为 ChaosBlade。

阿里妹导读:减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。

高可用架构是保障服务稳定性的核心。

阿里巴巴在海量互联网服务以及历年双11场景的实践过程中,沉淀出了包括全链路压测、线上流量管控、故障演练等高可用核心技术,并通过开源和云上服务的形式对外输出,以帮助企业用户和开发者享受阿里巴巴的技术红利,提高开发效率,缩短业务的构建流程。

例如,借助阿里云性能测试 PTS,高效率构建全链路压测体系,通过开源组件 Sentinel 实现限流和降级功能。这一次,经历了 6 年时间的改进和实践,累计在线上执行演练场景达数万次,我们将阿里巴巴在故障演练领域的创意和实践,浓缩成一个混沌工程工具,并将其开源,命名为 ChaosBlade。

ChaosBlade 是什么?

ChaosBlade 是一款遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具,可实现底层故障的注入,特点是操作简洁、无侵入、扩展性强。

ChaosBlade 基于 Apache License v2.0 开源协议,目前有 chaosblade 和 chaosblade-exe-jvm 两个仓库。

chaosblade 包含 CLI 和使用 Golang 实现的基础资源、容器相关的混沌实验实施执行模块。chaosblade-exe-jvm 是对运行在 JVM 上的应用实施混沌实验的执行器。

ChaosBlade 社区后续还会添加 C++、Node.js 等其他语言的混沌实验执行器。

image

为什么要开源?

很多公司已经开始关注并探索混沌工程,渐渐成为测试系统高可用,构建对系统信息不可缺少的工具。但混沌工程领域目前还处于一个快速演进的阶段,最佳实践和工具框架没有统一标准。实施混沌工程可能会带来一些潜在的业务风险,经验和工具的缺失也将进一步阻止 DevOps 人员实施混沌工程。

混沌工程领域目前也有很多优秀的开源工具,分别覆盖某个领域,但这些工具的使用方式千差万别,其中有些工具上手难度大,学习成本高,混沌实验能力单一,使很多人对混沌工程领域望而却步。

阿里巴巴集团在混沌工程领域已经实践多年,将混沌实验工具 ChaosBlade 开源目的,我们希望:

  • 让更多人了解并加入到混沌工程领域;
  • 缩短构建混沌工程的路径;
  • 同时依靠社区的力量,完善更多的混沌实验场景,共同推进混沌工程领域的发展。

ChaosBlade 能解决哪些问题?

衡量微服务的容错能力

通过模拟调用延迟、服务不可用、机器资源满载等,查看发生故障的节点或实例是否被自动隔离、下线,流量调度是否正确,预案是否有效,同时观察系统整体的 QPS 或 RT 是否受影响。在此基础上可以缓慢增加故障节点范围,验证上游服务限流降级、熔断等是否有效。最终故障节点增加到请求服务超时,估算系统容错红线,衡量系统容错能力。

验证容器编排配置是否合理

通过模拟杀服务 Pod、杀节点、增大 Pod 资源负载,观察系统服务可用性,验证副本配置、资源限制配置以及 Pod 下部署的容器是否合理。

测试 PaaS 层是否健壮

通过模拟上层资源负载,验证调度系统的有效性;模拟依赖的分布式存储不可用,验证系统的容错能力;模拟调度节点不可用,测试调度任务是否自动迁移到可用节点;模拟主备节点故障,测试主备切换是否正常。

验证监控告警的时效性

通过对系统注入故障,验证监控指标是否准确,监控维度是否完善,告警阈值是否合理,告警是否快速,告警接收人是否正确,通知渠道是否可用等,提升监控告警的准确和时效性。

定位与解决问题的应急能力

通过故障突袭,随机对系统注入故障,考察相关人员对问题的应急能力,以及问题上报、处理流程是否合理,达到以战养战,锻炼人定位与解决问题的能力。

功能和特点

场景丰富度高

ChaosBlade 支持的混沌实验场景不仅覆盖基础资源,如 CPU 满载、磁盘 IO 高、网络延迟等,还包括运行在 JVM 上的应用实验场景,如 Dubbo 调用超时和调用异常、指定方法延迟或抛异常以及返回特定值等,同时涉及容器相关的实验,如杀容器、杀 Pod。后续会持续的增加实验场景。

使用简洁,易于理解

ChaosBlade 通过 CLI 方式执行,具有友好的命令提示功能,可以简单快速的上手使用。命令的书写遵循阿里巴巴集团内多年故障测试和演练实践抽象出的故障注入模型,层次清晰,易于阅读和理解,降低了混沌工程实施的门槛。

场景扩展方便

所有的 ChaosBlade 实验执行器同样遵循上述提到的故障注入模型,使实验场景模型统一,便于开发和维护。模型本身通俗易懂,学习成本低,可以依据模型方便快捷的扩展更多的混沌实验场景。

image

ChaosBlade 的演进史

EOS(2012-2015):故障演练平台的早期版本,故障注入能力通过字节码增强方式实现,模拟常见的 RPC 故障,解决微服务的强弱依赖治理问题。

MonkeyKing(2016-2018):故障演练平台的升级版本,丰富了故障场景(如:资源、容器层场景),开始在生产环境进行一些规模化的演练。

AHAS(2018.9-至今):阿里云应用高可用服务,内置演练平台的全部功能,支持可编排演练、演练插件扩展等能力,并整合了架构感知和限流降级的功能。

ChaosBlade(2019.3):是 MonkeyKing 平台底层故障注入的实现工具,通过对演练平台底层的故障注入能力进行抽象,定义了一套故障模型。配合用户友好的 CLI 工具进行开源,帮助云原生用户进行混沌工程测试。

image

近期规划

功能迭代:

  • 增强 JVM 演练场景,支持更多的 Java 主流框架,如 Redis,GRPC
  • 增强 Kubernetes 演练场景
  • 增加对 C++、Node.js 等应用的支持

社区共建:

欢迎访问 ChaosBlade@GitHub,参与社区共建,包括但不限于:

  • 架构设计
  • 模块设计
  • 代码实现
  • Bug Fix
  • Demo样例
  • 文档、网站和翻译

原文发布时间为:2019-03-27
本文作者:中亭
本文来自云栖社区合作伙伴“ 阿里技术”,了解相关信息可以关注“ 阿里技术”。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
7月前
|
运维 Cloud Native 安全
阿里平台工程的发展历程与关键实践
什么是平台工程,怎么在企业内落地平台工程,云效负责人陈鑫在2023云栖大会上,结合云效过去在阿里内部十多年的经验和在各大企业的实践,给出了非常详细的解答。
3297 3
|
运维 Devops Java
阿里巴巴DevOps实践指南(十三)| 测试提效
分布式测试为测试速度插上了翅膀,精准测试有效的识别出了测试的范围,增量覆盖率又为测试的不断完备提供了有利的指引,线上覆盖率帮助我们有效的进行应用瘦身。充分利用好这些技术手段进行测试提效,可以让持续交付的过程更加的顺畅
阿里巴巴DevOps实践指南(十三)| 测试提效
|
安全 算法 Java
5种阿里常用代码检测推荐 | 阿里巴巴DevOps实践指南(十二)
随着业务演进和团队扩张,软件规模和调用链路越来越复杂。如若没有良好的代码检测机制,只依靠功能性验证,团队技术债会越累越高,开发团队往往要花费大量的时间和精力发现并修改代码缺陷,最终拖垮迭代进度、协作效率,甚至引发严重的安全问题。
5种阿里常用代码检测推荐 |  阿里巴巴DevOps实践指南(十二)
|
4月前
|
Cloud Native Devops 持续交付
云原生之旅:从混沌到秩序
在数字化浪潮中,云原生技术如同搭建现代软件架构的乐高积木,让企业能够灵活、快速地适应市场变化。本文将通过一个虚构的故事,讲述一家传统企业如何拥抱云原生,实现从技术债务累积的混沌状态到高效、自动化的秩序转变。我们将一探究竟,云原生技术是如何一步步引领这场变革,并为企业带来前所未有的灵活性和创新能力。
|
7月前
|
tengine 算法 安全
ChaosBlade 是阿里巴巴开源的混沌工程工具
【2月更文挑战第23天】ChaosBlade 是阿里巴巴开源的混沌工程工具
146 1
|
消息中间件 Kubernetes Cloud Native
蚂蚁集团自动化混沌工程 ChaosMeta 正式开源
ChaosMeta 介绍ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey 的对外开源版本,凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。经过公司内部多年复杂故障演练场景的驱动,XMonkey 在混沌工程领域沉淀了很多独特经验,是蚂蚁集团研发、测试、质量、SRE 等人员进行历史故障演练和挖掘系统
416 0
蚂蚁集团自动化混沌工程 ChaosMeta 正式开源
|
消息中间件 运维 监控
ChaosBlade 在工商银行混沌工程体系中的应用实践
ChaosBlade 在工商银行混沌工程体系中的应用实践
394 0
|
监控 容灾 Cloud Native
被你质疑价值的混沌工程,阿里巴巴已落地实践了9年
无可讳言,对于混沌工程的价值,目前在业内还没有一个明确的度量标准,但是可以通过简单的例子来有效佐证。据中亭介绍,一方面可以先选定一个场景,从结果上看,混沌工程可以保证场景不劣化;另一方面,如果度量组织进行突袭,不管系统架构和人员架构怎么变,监控结果都在合理的范围内。总体而言,混沌工程的核心就是增强信心,保证系统在某个场景下的能力不退化。只要这个组织有度量“特定场景下能力是否退化”的指标,混沌工程的价值就显而易见了。
774 7
被你质疑价值的混沌工程,阿里巴巴已落地实践了9年
|
容器
|
测试技术 数据库
阿里研究员:测试稳定性三板斧,我怎么用?
如何治理测试稳定性问题?很多人会说:环境、流程管控、监控、工具化、加机器、专人负责、等等。这些都是对的。不过这些都是解决方案层面的,而不是方法论和理论体系层面的。今天,阿里研究员郑子颖来说说测试稳定性的三板斧。据说,阿里同学们都非常认同这三板斧,看完文章感觉很多做的事情有了理论基础。
2737 0
下一篇
DataWorks