Chaosblade是什么?
Chaosblade是遵循混沌工程(Chaos Engineering)原理的实验工具,用于模拟常见的故障场景
,帮助提升分布式系统的可恢复性和对故障的容错性
。
Chaosblade是建立在阿里巴巴近十年故障测试和演练实践基础上,结合了集团各业务的最佳创意和实践。
目前支持的演练场景有操作系统类的 CPU、磁盘、进程、网络,Java 应用类的 Dubbo、MySQL、Servlet 和自定义类方法延迟或抛异常等以及杀容器、杀 Pod,具体可执行 blade create -h 查看
。
好了,上面的介绍是从Chaosblade的github主页抄的。
github主页地址:https://github.com/chaosblade-io/chaosblade/blob/master/README_CN.md
说白了,Chaosblade是一个故障模拟工具,可以模拟比如服务器CPU满了、磁盘满了、网络慢、Dubbo某个服务响应时间长、jvm中某个方法抛出异常、调用Mysql慢等等。所以这个工具对于大公司来说是非常非常有用的,因为可以提前模拟出各种各样的故障,从而保证系统的高可用与稳定。
Chaosblade怎么用?
用法非常简单,分为两步:
- 下载压缩包并解压:https://github.com/chaosblade-io/chaosblade/releases
- 解压之后的文件中有一个blade的可执行文件,这就是Chaosblade提供的客户端工具,我们主要使用这个工具来进行故障模拟。
关于blade的各种参数详解,大家还是去github主页上去看吧,这里不介绍了,我主要想给大家看一下故障模拟的具体使用以及效果。
接下来会介绍Chaosblade六个使用场景:
- 模拟服务器CPU爆满
- 模拟服务器磁盘爆满
- 模拟调用某个Dubbo服务超时
- 模拟JVM中某个方法抛出异常或者修改方法返回值
- 模拟调用Mysql超时或出现异常
- 模拟服务器网络缓慢
场景一:服务器CPU爆满
故障演练前系统的cpu状态,直接使用top -o CPU
命令查看:
进行故障演练:
$ ./blade create cpu fullload
{"code":200,"success":true,"result":"a0682a98d0d7d900"}
命令执行后返回成功则证明故障演练成功,再查看top -o CPU命令:
我们通过结果可以看出来Chaosblade应该就是让自己去占满cpu从而使服务器的cpu爆满。
场景二:服务器磁盘爆满
如果要模拟磁盘爆满,实际上只需要在某个文件夹中去生成一个很大的文件就行了,所以我们这里创建一个/bladedisk文件夹。
进行故障演练前,/bladedisk文件夹的大小为:
$ du -sh /bladedisk/
0B /bladedisk/
进行故障演练,执行一下命令:
./blade create disk fill -d --mount-point /bladedisk