写点什么

故障演练利器之 ChaosBlade 介绍

作者:心平气和
  • 2020 年 6 月 21 日
  • 本文字数:1352 字

    阅读完需:约 4 分钟

一、什么是 ChaosBlade

      ChaosBlade 是阿里巴巴在其自身故障测试和演练实践基础上,结合自身业务场景而开发的故障注入工具。


       该工具目前已经开源,项目地址:

       https://github.com/chaosblade-io/chaosblade


二、为什么需要故障演练

       在我看来,主要是为了验证在故障场景程序的可靠性和可用性,因为大部分人写代码都有惯性,只喜欢写正向流程,对于一些异常处理往往是非常简单和粗暴的,所以很有可能出现在系统发生故障时可能出现各种问题:如数据丢失、数据对不上等。


故障演练主要是通过模拟一个个故障场景来验证程序的可靠性和可用性,这样也反过来提升系统架构,为后续开发、设计提供一些指导。


三、安装

      如果不想自己修改代码,可以用官方版本:

      https://github.com/chaosblade-io/chaosblade/releases

      我选择的是 v0.6.0,解压后在根目录下有个 blade 的二进制文件。


      如果想自己编译,则需要以下软件,以下是我的环境相关软件版本:

      Java:1.8.1

      Maven:3.6.3

      Go>=1.13

      Git>=1.8.5


      编译步骤:

      git clone  https://github.com/chaosblade-io/chaosblade

      git checkout v0.6.0

      make


四、使用

       官方文档已经介绍的非常详细了,建议仔细阅读:

       https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/


这里介绍一个模拟 CPU Load 高的命令如何使用:


blade create cpu load--返回如下{"code":200,"success":true,"result":"0496e31d8c619016"}
复制代码


其中 result 相当于一个实验,如果想停止试验,执行命令:


1、模拟 CPU 负载高

blade create cpu load


2、模拟磁盘 IO 压力

blade create disk burn

blade create disk fill


3、模块内存负载

blade create mem load


4、模块网络负载

有模块延迟、丢包、重复等场景,这里就不一一详述了


5、模拟进程宕掉

blade create process kill

blade create process stop


6、JVM

blade create jvm

可以指定类,方法注入延迟、返回值、异常故障场景,也可以编写 groovy 和 java 脚本来实现复杂的场景。


7、WEB 服务

后台启动 blade,会暴露出 web 服务,上层可通过 http 调用。

请求格式是 chaosblade?cmd=具体命令,例如执行 CPU 满载,则请求是 chaosblade?cmd=create%20cpu%20fullload


这个是重点,因为前面讲的这些功能都是单机命令行的,实际的场景是希望在一个控制台集中操作所有场景,有了这个远程通信能力,上述需求落地才有了可能。


五、整体感受

ChaosBlade 的功能非常强大,常见的故障场景都能覆盖到,另外还提供了远程控制的能力,美中不足的是目前没有开源相应的控制台,如果需要最终落地并且产品化还需要做进一步开发,不过阿里 的 AHAS 已经集成了 ChaosBlade,如果只是用了一个云厂商可以不用自己开发了,如果使用多个云厂商,像国内阿里云,海外 AWS 的这种情况,就需要自己做进一步的开发了。


真的需要做控制台,细节很多,如何自动化发现 ChaosBlade,并且和自己的业务结合,还是需要自己做进一步的开发,如我在 Mysql 和 Redis 上都部署了 ChaosBlade,如果识别自己操控的是 Mysql 还是 Redis,这就涉及到 ChaosBlade 的管理了,这个可以参考下 ServiceMesh 的设计。


线上故障处理实践

扩展Redis:增加Redis命令

从一次线上故障来看redis删除机制

一次线上Mysql死锁分析



发布于: 2020 年 06 月 21 日阅读数: 500
用户头像

心平气和

关注

欢迎关注公众号:程序员升级之路 2018.03.06 加入

还未添加个人简介

评论

发布
暂无评论
故障演练利器之ChaosBlade介绍_故障演练_心平气和_InfoQ写作社区