Skip to content

Chaosblade Learning Report zaq

Zaq edited this page Nov 2, 2019 · 5 revisions

Chaosblade

1. Chaosblade的简介

​ Chaosbalde是一个故障模拟工具,用于模拟常见的故障场景,帮助提升分布式系统的可恢复性和对故障的容错性,可实现底层故障的注入,特定是操作简洁、无侵入 、扩展性强。

​ 其目前支持的演练场景有操作系统类的CPU、磁盘、进程、网络、Java应用类的Dubbo、MySQL、Servlet和自定义类方法延迟或抛异常等以及杀容器、杀Pod。

​ 本文档模拟Chaosblade的两个使用场景:

模拟服务器磁盘爆满 模拟服务器内存不足

2. Chaosblade的基本使用

2.1 下载安装包

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

2.2 安装

# tar zxvf chaosblade-0.2.0.linux-amd64.tar.gz -C /Data/apps/
# mv /Data/apps/chaosblade-0.2.0 /Data/apps/chaosblade

2.3 基本命令

./blade help
Available Commands:
  create      Create a chaos engineering experiment
  destroy     Destroy a chaos experiment
  help        Help about any command
  prepare     Prepare to experiment
  query       Query the parameter values required for chaos experiments
  revoke      Undo chaos engineering experiment preparation
  server      Server mode starts, exposes web services
  status      Query preparation stage or experiment status
  version     Print version info

Flags:
  -d, --debug   Set client to DEBUG mode
  -h, --help    help for blade

3. cpu

3.1 cpu满载

./blade create cpu fullload

使用top命令查看cpu使用情况:

如果忘记了uid,使用命令:

./blade status --type create

恢复故障:

./blade destroy uid

可以看到,状态恢复原状。

4. disk

4.1 磁盘不足

故障注入 :

填充大小为200G文件:

./blade create disk fill --size 20480

查看当前fileSystem的状态:

df -h

故障恢复:

./blade destroy uid

4.2磁盘IO高

故障注入:

./blade create disk burn --write --read --size 10 --size 1024 --timeout 300

(查看命令dstat)

故障恢复:

./blade destroy uid

5. mem

5.1 内存不足

故障注入:

./blade create mem load --timeout 300 --mem-percent 80

故障恢复:

3. ./blade --help详解

3.1 disk

./blade create disk -h
Usage:
  blade create disk [flags]
  blade create disk [command]

Examples:
disk fill --path /home --size 1000

# You can execute "blade query disk mount-point" command to query the mount points

Available Commands:
  burn        Increase disk read and write io load
  fill        Fill the specified directory path

Flags:
  -h, --help   help for disk

Global Flags:
  -d, --debug   Set client to DEBUG mode

3.1.1 disk fill usage

# 为磁盘注入大容量的文件模拟磁盘不足的故障
blade create disk fill
--flags:
--path string:指定注入的文件的位置,如果未指定,则位置在根目录创建
--size string:指定注入的文件的大小,一般为了表现故障,注入较大的文件来体现效果,单位为MB
--timeout string:指定本次注入故障实验的时间

3.1.2 disk burn usage

# 增加磁盘IO读写操作负载
blade create disk burn 
--flags:
--path string: 指定注入的位置,如果未指定,则位置在根目录创建
--read: 通过增加读操作来占据IO,同时产生600M的读取空间,实验结束后删除
--size string:磁盘块大小,单位是MB,默认值为10
--timeout string:本次注入实验的有效时间,单位为秒
--write:通过增加写操作来占据IO,它将通过size标志的值来创建文件,如果size为默认的10,那么就会创建一个10M*100=1000M的文件进行写入,实验结束之后删除

3.2 mem

./blade create mem -h
Usage:
  blade create mem [flags]
  blade create mem [command]

Examples:
mem load

Available Commands:
  load        mem load

3.2.1 men load usage

blade create mem load
--flags:
--timeout string:实验结束的时间,单位为s
--mem-percent string:占据的内存的百分比(0-100