首页 / 业界 / 正文

灾备演练从来不是走流程的纸面作业

上周跟做运维的老周喝冰美式,他把杯子往桌上一墩,说刚结束的季度灾备演练,把自己干吐了。

没人信。老周做了十二年运维,见过凌晨三点的机房,处理过数据库主库宕机的紧急故障,什么大风大浪没见过,能把他干吐的演练,肯定不是走流程的那种。

演练的第一个坑是没人敢真的断网

之前跟不下二十个不同行业的运维聊过,大部分公司的灾备演练,说穿了就是一场排演过无数次的汇报演出。提前两周发正式通知,每个部门提前领好任务,连哪一秒该切流量、哪一秒该发报警短信,都标得明明白白。

没人敢真的动核心链路的开关。

怕出问题。怕切了流量回不来,怕影响正在跑的真实用户请求,怕最后要自己扛锅。到最后,所谓的演练,就是把预案上的步骤挨个走一遍,所有的时间节点都卡得漂漂亮亮,交上去的报告写得滴水不漏,好像真的把整个系统的容灾能力测了个遍。

运维团队在机房执行灾备切换操作实拍

老周说之前三次演练,他们全是这么走的。每次结束,他都觉得没什么意思,像演给领导看的小品。

真正的演练要算的是没写在预案里的代价

这次不一样。CTO在演练开始前半小时,把所有人叫到会议室,说这次不提前发通知,不提前标开关,九点半整,直接把核心数据库主节点的网线拔了。

老周当时正坐在工位啃肉包,耳机里突然炸了三声最高级别的报警,抬头看监控屏幕,全黑了。

谁能想到啊。

手都抖了。第一反应是真出故障了,伸手去摸鼠标想查日志,才反应过来——哦,是演练开始了。

后面的过程根本没按预案走。先是三个运行了八年的老接口,之前做灾备同步的时候,根本没把这几个接口算进去,因为它们的流量占比连1%都不到,结果切换到备用节点之后,这几个接口直接报连接超时,卡了整整二十分钟。更麻烦的是,这几个接口的供应商,现在对接人都换了两拨,老周翻了半小时通讯录,才找到现在负责的人。

然后是备用机房的带宽。之前预案里写的是,备用节点能扛住全量用户的请求,真切流量的时候才发现,平时为了省带宽成本,备用机房只留了30%的冗余,用户请求直接堵在网关,连登录页面都刷不出来。后来临时给运营商打电话开应急通道,又花了四十分钟。

大部分企业的灾备预案,只覆盖了核心业务的80%,剩下的20%边缘链路、老接口、第三方依赖,才是演练里最容易炸雷的地方。这些东西平时不出问题,没人愿意花时间去测,真到了主系统挂掉的时候,全是能卡住整个流程的硬骨头。

灾备切换过程中流量调度拓扑示意图
灾备切换过程中流量调度拓扑示意图

老周说整个切换过程,前前后后花了两个小时,远超过预案里写的二十分钟目标。换做以前,演练没达标,肯定要开复盘会骂人的,结果这次CTO在复盘会上,第一句话就是“这两个小时的时间,比我们之前三年的演练报告都值”。

老周说他当时在会议室里,后背的衬衫全湿了。不是累的,是后怕。要是那天不是演练,是真的主库因为硬件故障挂了,那这两个小时的服务中断,足够把攒了好几年的用户信任,耗掉大半。

别把演练的目标定成零故障

好多公司对灾备演练的考核标准特别奇怪——要全程零报错,所有流程顺顺利利,没有任何意外,才算圆满完成。

这根本是搞反了。

演练的目的不是走流程,是找问题。要是全程顺得像开了绿灯,那说明你根本没碰真的故障场景,全在自己的舒适圈里打转,等真的故障砸到头上,该慌还是慌,该卡还是卡。

之前碰到个做金融行业的运维朋友,说他们之前连续四次演练都拿了满分,结果去年真的碰到机房断电,去启动备用机房的服务器,才发现三年没开过机的设备,一开机就烧了两块电源——因为机房上个月刚换了新的空调系统,温度比之前低了五度,服务器长期处于低温待机状态,电容直接失效。等换好电源把系统拉起来,已经过去了三个多小时。

好的灾备演练,结束的时候应该攒着一整页的问题清单,而不是一份写着“圆满完成”的漂亮报告。那些在演练里暴露出来的窟窿,现在补只需要花几百块钱换个电源、加两兆带宽、补个接口的同步配置,真到了生产环境出问题的时候,可能就是几百万的损失。

不过话说回来,现在好多公司的灾备预算,砍得比什么都狠。每年拿出来做演练的钱,还不如市场部办一次线下沙龙多。你让运维真的把备用机房的所有服务器跑一遍,把所有链路全测一遍,根本没人批钱。之前碰到个创业公司的运维,说他们的灾备预案,就是把数据库备份存在同事的移动硬盘里,上次演练找那个同事要硬盘,他说上个月带回家,被儿子当玩具摔了,硬盘早就坏了。

老周最后说,下次演练,他打算直接把核心交换机的线给拔了,不提前打招呼。反正预案里写的那点东西,早就摸得滚瓜烂熟了。

要找的,就是那些没写在纸上的窟窿。