chaosblade的使用

 

1、下载包:

 
  •  

    liunx版本:

    1. https://github.com/chaosblade-io/chaosblade/releases/download/v0.0.3/chaosblade-0.0.3.linux-amd64.tar.gz

     

  •  

    获取最新版本的地址:

    1. 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、故障演练

 
  •  

    禁用网络端口

    1. ./blade create network drop --local-port 端口号 //禁用本地端口
    2. ./blade create network drop --remote-port 端口号 //禁用远程调用端口

     

ps:在容器环境下如需要模拟network的故障,需要安装iptables

yum install iptables -y

 

返回200则故障演练成功,并会生成该故障的uid

  •  

    模拟机器的网络延时

    1. ./blade create network delay --interface eth0 --time 3000 //网卡名称可以通过ifconfig查询

     

ps:在容器环境下需要安装tc才能使用该命令,安装命令: yum -y install iproute

 
  •  

    模拟cpu满负载

    1. ./blade create cpu fullload

     

  •  

    模拟应用连接指定数据库网络延时

    需要通过jvm挂载,通过mysql dirver驱动

    下面模拟APP1应用连接到base库,以及模拟APP1的线程池打满的情况

    1. export JAVA_HOME="/usr/java/jdk1.8.0_151/bin/java" //设定java的执行路径的全局变量,这是虚拟机上的java路径,容器的路径/usr/bin/java
    2. ./blade prepare jvm --process APP1-service //挂载jvm
    3. ./blade create mysql delay --database DB_APP1 --time 5000 //演练挂载的APP1服务器连接到DB_APP1库的延时5000ms
    4. ./blade create dubbo threadpoolfull --process APP1-service --provider//演练APP1应用的线程池被打满的情况

     

  •  

    模拟磁盘io高读写

    1. ./blade create disk burn --read //演练当前机器高读
    2. ./blade create disk burn --write //演练当前机器高写
    3. vmstat 2 5 //查看磁盘读写io状态

     

 
  •  

    恢复故障

    大家在进行故障演练的时候测试完成一定要记得恢复故障

    1. ./blade d uid //故障成功时生成的uid
    2. ./blade status --type create //如果忘记uid可以通过该方式查看

     

 
  •  

    其他

    以上指列出来了功能环境的常用功能,更多功能可以通过每一层级的-h指令来查看有哪些功能