1.1. 故障场景
状态变化类故障包括机器重启、掉电、意外关机、kernel panic、应用意外停止、进程被杀,进程hang死,时间漂移等。
1.2. 演练目标
是否能监控发现
应用是否支持故障自动恢复&资源转移,是否有对应的预案
故障恢复的时长
1.3. 模拟手段
1.3.1. 机器重启
直接在shell中执行reboot
reboot
1.3.2. 机器掉电
拔掉机器电源(VMware虚拟机在控制终端执行关机操作,ESXI虚拟机在控制终端执行关闭电源操作)
1.3.3. 机器关机
直接在shell中执行init 0
init0
1.3.4. kernel panic
kernel panic用于模拟系统崩溃,在shell中执行如下命令
echo c > /proc/sysrq-trigger
其他用法
# 立即重新启动计算机
echo "b" > /proc/sysrq-trigger
# 立即关闭计算机
echo "o" > /proc/sysrq-trigger
# 导出内存分配的信息 (可以用/var/log/message 查看)
echo "m" > /proc/sysrq-trigger
# 导出当前CPU寄存器信息和标志位的信息
echo "p" > /proc/sysrq-trigger
# 导出线程状态信息
echo "t" > /proc/sysrq-trigger
# 故意让系统崩溃
echo "c" > /proc/sysrq-trigger
# 立即重新挂载所有的文件系统
echo "s" > /proc/sysrq-trigger
# 立即重新挂载所有的文件系统为只读
echo "u" > /proc/sysrq-trigger
1.3.5. 应用意外关闭
Kingbase意外停止,bin目录下手动执行
./sys_ctl –D xxx/data stop
1.3.6. 进程被杀死
kill pid:
发送TERM(Terminate,终止)信号
Kill -9 pid:
该信号信号不会被发送到目标程序,而是通过内核立即终止这个进程。当一个进程以这种方式终止的时候,它没有机会去做些“清理”工作,或者是保存工作。
killall processname:
给匹配特定程序或用户名的多个进程发送信号
推荐工具:
blade create process kill --process processname
1.3.7. 进程hang住
#注入
kill -s SIGSTOP pid
killall -s SIGSTOP processname
#恢复
kill -s SIGCONT pid
killall -s SIGCONT processname
推荐工具:
blade create process stop --process processname
1.3.8. 磁盘只读
立即重新挂载所有的文件系统为只读
echo "u" > /proc/sysrq-trigger
1.3.9. 时间漂移
date –s 修改系统时间
date -s "2020-09-08 10:40:40"