chaosblade的使用
1、下载包:
-
liunx版本:
https://github.com/chaosblade-io/chaosblade/releases/download/v0.0.3/chaosblade-0.0.3.linux-amd64.tar.gz
-
获取最新版本的地址:
https://github.com/chaosblade-io/chaosblade/releases
2、安装
上传到对应需要进行混沌实验的机器上or容器里面
拷贝到容器里的命令
kubectl cp chaosblade-0.0.3.linux-amd64.tar qa1-f5-web-vendor-cd97d5956-g9q5h:/home
解压缩
tar -xf chaosblade-0.0.3.linux-amd64.tar
进入目录下可以看到
3、故障演练
-
禁用网络端口
./blade create network drop --local-port 端口号 //禁用本地端口
./blade create network drop --remote-port 端口号 //禁用远程调用端口
ps:在容器环境下如需要模拟network的故障,需要安装iptables
yum install iptables -y
返回200则故障演练成功,并会生成该故障的uid
-
模拟机器的网络延时
./blade create network delay --interface eth0 --time 3000 //网卡名称可以通过ifconfig查询
ps:在容器环境下需要安装tc才能使用该命令,安装命令: yum -y install iproute
-
模拟cpu满负载
./blade create cpu fullload
-
模拟应用连接指定数据库网络延时
需要通过jvm挂载,通过mysql dirver驱动
下面模拟APP1应用连接到base库,以及模拟APP1的线程池打满的情况
export JAVA_HOME="/usr/java/jdk1.8.0_151/bin/java" //设定java的执行路径的全局变量,这是虚拟机上的java路径,容器的路径/usr/bin/java
./blade prepare jvm --process APP1-service //挂载jvm
./blade create mysql delay --database DB_APP1 --time 5000 //演练挂载的APP1服务器连接到DB_APP1库的延时5000ms
./blade create dubbo threadpoolfull --process APP1-service --provider//演练APP1应用的线程池被打满的情况
-
模拟磁盘io高读写
./blade create disk burn --read //演练当前机器高读
./blade create disk burn --write //演练当前机器高写
vmstat 2 5 //查看磁盘读写io状态
-
恢复故障
大家在进行故障演练的时候测试完成一定要记得恢复故障
./blade d uid //故障成功时生成的uid
./blade status --type create //如果忘记uid可以通过该方式查看
-
其他
以上指列出来了功能环境的常用功能,更多功能可以通过每一层级的-h指令来查看有哪些功能
本着资源共享的原则,欢迎各位朋友在此基础上完善,并进一步分享,让我们的实现更加优雅。如果有任何疑问和需要进一步交流可以留言沟通
Testner创始人(testner.club) Sea