ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。
Chaosblade 是内部 MonkeyKing 对外开源的项目,其建立在阿里巴巴近十年故障测试和演练实践基础上,结合了集团各业务的最佳创意和实践。
ChaosBlade 不仅使用简单,而且支持丰富的实验场景,场景包括:
将场景按领域实现封装成一个个单独的项目,不仅可以使领域内场景标准化实现,而且非常方便场景水平和垂直扩展,通过遵循混沌实验模型,实现 chaosblade cli 统一调用。目前包含的项目如下:
chaosblade 工具是开箱即用的,只需要下载并解压缩其 release 文件,就可以调用其中的可执行文件来进行故障注入。
# 创建chaosblade
mkdir -p /home/work/chaos/bin && cd /home/work/chaos/bin
# 下载release文件
curl https://chaosblade.oss-cn-hangzhou.aliyuncs.com/agent/github/1.2.0/chaosblade-1.2.0-linux-amd64.tar.gz -o chaosblade-1.2.0-linux-amd64.tar.gz
# 解压缩
tar -zxvf chaosblade-1.2.0-linux-amd64.tar.gz && rm chaosblade-1.2.0-linux-amd64.tar.gz
# 给当前会话新增blade命令
$ alias blade="/home/work/chaos/bin/chaosblade-1.2.0/blade"
针对特定ip、端口配置丢包率99%,丢包持续时间120s
blade create network loss --percent 99 --interface eth0 --destination-ip ip1,ip2,ip3,ip4 --remote-port port1,port2 --timeout 120
blade create jvm delay --time 10000 --classname=com.xxx.ContractFacade --methodname=queryContract --pid 18020
blade create jvm throwCustomException --exception java.lang.Exception --exception-message this-is-a-mocked-exception --classname=com.xxx.InstallmentContractServer --methodname=queryContract --pid 18020
blade create cpu fullload
blade create disk burn --write --read --size 10 --timeout 300
blade create network drop --local-port 80 --remote-port 80
blade create network delay --interface eth0 --time 3000 --local-port 6483 --remote-port 6483
blade status --type create
blade status --type destroy
blade create network dns --domain staging.ipay.com --ip 192.10.10.1
blade create network delay --time 6000 --offset 100 --interface eth0 --remote-port 80 --destination-ip 192.0.2.11
blade destroy uuid
3.1