常见的故障注入方法
进程故障
强制终止进程:kill -9 $pid
暂停进程的执行:kill -19 $pid
恢复暂停的进程:kill -18 $pid
容器故障
容器故障直接删除pod:kubectl delete pod $podname -n$ns
主机故障
- 重启 reboot
- 重启 reboot -f:正常情况下,系统在重启时会执行一系列操作,比如通知正在运行的进程、卸载文件系统等,以确保系统数据的完整性和一致性。但使用
reboot -f
时,这些步骤会被跳过,系统会立即重新启动。 - 立即重启 echo ‘b’ > /proc/sysrq-trigger
- crash重启 echo ‘c’ > /proc/sysrq-trigger
网络故障
网络故障注入会导致设备无法连接,从而故障无法恢复。网络故障注入需要通过编写脚本后台运行故障和恢复故障命令。
- 可以使用
tc
(Traffic Control)工具来模拟网络延迟、丢包、带宽。- 网络时延 tc qdisc add dev eth0 root netem delay 300ms
- 网络丢包 tc qdisc add dev eth0 root netem loss 7%
- 重复包 tc qdisc add dev eth0 root netem duplicate 1%
- 取消网络故障注入 tc qdisc del dev eth0 root netem
- ifconfig 模拟网络中断
- 网络故障注入 Ifconfig eth0 down 不要手动执行此命令!
- 网络故障恢复 Ifconfig eth0 up;systemctl restart networking.service 不要手动执行此命令!
- Iptables
- iptables -A INPUT -j DROP
- iptables -D INPUT -j DROP
- 网络io占用:使用iperf、netpef 产生网络压力。
磁盘故障
- 普通盘模拟拔插
- ls -l /sys/block/ //查看磁盘的盘符id
- echo 1 > /sys/block/sdc/device/delete //针对hdd
-
echo “- - -“ sudo tee /sys/class/scsi_host/host*/scan //恢复磁盘
echo 1 > /sys/bus/pci/rescan
- 慢盘模拟
使用 fio
工具模拟慢盘:fio
是一个功能强大的工具,可以用来模拟各种类型的磁盘 I/O 操作。我们可以通过设置延迟和吞吐量来模拟慢盘。
fio –name=mytest –ioengine=rndwrite –size=1G –numjobs=4 –runtime=30m –time_based –rate=5m
模拟写入速度限制为 5MB/s,并且执行写入操作,创建 1GB 大小的文件。
其它故障注入工具
ChaosBlade 是阿里巴巴开源的一款简单易用、功能强大的混沌实验注入工具,旨在帮助开发和运维人员通过故障注入测试系统的稳定性,确保系统能够在遭遇各种故障时自动恢复。它支持多种故障类型,包括 CPU、内存、磁盘、网络等。
!https://user-images.githubusercontent.com/3992234/72340872-eb47c400-3703-11ea-830f-062e117c2e95.png
- 制造内存占用
./blade create mem load –mem-percent 95 –mode ram
- 制造CPU 占用
./blade create cpu load –cpu-percent 85
- 恢复故障
./blade destroy xxxx