中午正在跟小伙伴们一起吃午饭,突然手机接到短信报警,说是主数据库Down了。出大事了!!!

这个是很常见的场景吧,如何在这种情况下处理服务器故障呢?基本吃饭的时候是不会携带笔记本的,所有的操作只能在手机上完成了。

如果是iphone手机,装上Serverauditer;如果是android手机,装上juicessh。这两个都是远程ssh的软件(我们的服务器都是Linux,没有Windows)。另外公司是有openvpn的,必须通过vpn才能连接到IDC的服务器,所以也需要装上openvpn软件。

拨通vpn,用ssh连上服务器,然后快速运行实现编写好的ping脚本:

cat 1.ping.sh  
#!/bin/sh
ping 172.8.$1  

这个脚本很奇怪吧,名字叫做1.ping.sh,是因为在手机上操作,一切都要迅速,serverauditer和juicessh都是支持命令补全的{tab}键的,所以只要输入./1{tab} 1.1 就等于执行了ping 172.8.1.1,上面只输入了6个字符,而完整的ping命令则需要输入14个字符,这就是原因了。

ping一下不通,那就赶紧执行脚本,抓一下服务器idrac前面板的信息:

cat 2.idrac.sh  
#!/bin/sh
sshpass -p "xxxxxx" ssh -oStrictHostKeyChecking=no root@10.8.$1 racadm get System.LCD.CurrentDisplay  

上面脚本用dell的radadm来抓取服务器idrac的前面板信息,idrac和网卡的网段只是前面第一段不同,网卡是172,idrac是10,这样很方便记忆。

得到结果:

CPU1 has internal error. (IERR)  

彻底完蛋!CPU出错了,想都不用想,硬件重启:

cat 3.reboot.sh  
#!/bin/sh
sshpass -p "xxxxxx" ssh -oStrictHostKeyChecking=no root@10.8.$1 racadm serveraction powercycle  

从powercycle到Centos完全启动,系统开始记录/var/log/messages,所有时间共花费了7分钟。

注意:有可能在重启的过程中需要按一下F1的按钮继续,这样就需要打开vnc,按那一下子,或者在idrac里设置ErrPrompt disabled,不需要按F1就重启。

sshpass -p "xxxxxx" ssh -oStrictHostKeyChecking=no root@10.8.$1 racadm set BIOS.MiscSettings.ErrPrompt Disabled  

总结:这起故障从接到报警到检查完毕只花费了3分钟,然后重启,7分钟机器系统启动,2分钟oracle备库恢复,3+7+2=12分钟。这真是个极限时间了。

运维能做到的也就这么快了吧。

comments powered by Disqus