IO高负载是一种常见的故障现象,可能由于过高的业务进程负载、非预期的非业务进程占用、内存资源不足等因素导致。IO高负载可能会导致业务性能受损,数据丢失等风险。因此通过此演练场景验证系统在IO高负载时的告警和恢复情况。
实现原理
本方案使用云助手插件ACS-ECS-HighIo
,内部使用dd工具(data duplicator)实现复制和转换文件以提高磁盘IO负载,具体说明如下:
对于读模式,先写入一个临时文件到目标路径,通过循环读取对应文件模拟读压力。
对于写模式,通过循环写入模拟写入压力。
使用指南
演练准备
请确保您的ECS实例已安装云助手Agent,并且云助手状态为正常。具体操作,请参见查看云助手状态及异常状态处理。
故障注入
登录ECS实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
使用具有sudo访问权限的用户,运行云助手插件
ACS-ECS-HighIo
。sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params inject,[model=paramA],[dir=paramB],[bs=paramC],[count=paramD],[duration=paramE]
[]
内为可选故障注入参数,参数说明:model(可选):读/写模式,取值read/write,默认为read。
dir(可选):目标路径,通过指定路径来实现对不同磁盘的压力测试,默认为系统根目录。
bs(可选):块大小,格式同dd命令中bs块参数格式,用于控制每次读写的块大小,该参数可影响读写速率,为了保证占满IO,默认为1M。
count(可选):一次读取循环的块数量,默认为1024。
duration(可选):持续时间,单位秒,默认为300(秒)。
显示如下所示时,说明云助手插件
ACS-ECS-HighIo
执行成功。执行
iotop
命令,查看故障注入是否成功。显示如下所示时,说明故障注入成功。
故障恢复
在ECS实例中执行故障恢复命令,查看I/O读写是否恢复到故障注入前的水平。
演练完毕后必须执行一次该命令,以删除产生的临时文件。
sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params recover
演练案例
故障注入:对
usr
路径进行读取,持续60s。sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params inject,dir=/usr,duration=60
显示故障注入参数和注入结果,以及存放临时文件的目录文件。
在
usr
目录下,查看当前注入的临时文件,可以看到产生了AliFaultHighio.tmp
临时文件。执行iotop命令,查看磁盘I/O读写情况。
执行故障恢复命令。
sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params recover