10935336

明星成鸟
2020-08-07
306
195
思考时间
9 天 3 小时 10 分钟
48
Mars
非常抱歉!

48 小时 21 分钟。这是我们此次服务不可用的时间。
对互联网行业来说,SLA(服务等级协议) 即为生命。
SLA & Uptime calculator: How much downtime corresponds to 99 % uptime

那么为什么我们最近老是出现服务不可用呢?

“没电”

了解相关行业的小伙伴应该知道,对于数据中心来说,断电是几乎不可能的。
但,我们的主服务器并不在某某星级数据中心,而是在一个普通的小机房。
为什么?因为我们无法支付数据中心托管带来的高昂的成本。


那么,没电是怎么一回事呢?
这几天发生的事故其实是不一样的。

2022-05-09 机房更换了新的 UPS。

事件 1
2022-05-23 21:16:27 漏电保护器跳闸。
2022-05-24 09:23:26 电力恢复。
晚上并没有人值班,第二天上班才恢复供电。

事件 2
2022-05-31 09:38:44 南方电网计划维护。
2022-05-31 21:18:22 电力恢复。
南方电网计划维护,没有办法。

事件 3
2022-06-05 10:03:15 更换空开。
2022-06-05 14:42:33 电力恢复。
什么?电力不是 4 个小时就恢复了吗?
为什么服务没有恢复。

除了这 3 个事件外,还有几个小跳闸,但是没有影响到服务。
于是就出现了 2 个疑问

为什么老跳闸?
好吧,机房之前用的 UPS(不间断电源) 是后备式 UPS,这种 UPS 只会在市电中断时切换到电池供电。
9 号的时候,机房更换了双变换 UPS,这种 UPS 无论市电状态如何,总是会进行 2 次转换(交流 → 直流、直流 → 交流)。
当时我们不知道双变换 UPS 前端并不能接漏电保护器。
因为 UPS 会进行滤波等操作,造成零线火线电流不相等,或是向地线放电造成漏电保护器跳闸。
嗯,事件 3 的时候已经换成了普通的空气开关,应该没问题了。


为什么电力恢复了服务没有恢复?
我们给服务器设置了电源中断再恢复时恢复之前状态。
事件 3 中为了保护 UPS 设置了 UPS 提前关机,于是在电量快要耗尽时,UPS 通知了服务器进行关机。
但这次 UPS 并没有耗尽电量,于是服务器就没有开机。
Gen1 服务器通过 IPMI(智能平台管理接口)进行了开机。
但是 Gen2 服务器并没有 IPMI,我们之前留下的开机装置在某一次维护中失效了。
恰逢端午节,机房没有人值班,于是……

数据安全吗?
安全,UPS 一直在正常工作,在电力耗尽前会通知服务器进行正常关机的。

之后,我们会将网站服务部署到多台服务器上,尽可能保证服务高可用。
但相关游戏服务由于数据量大、需要的处理量高,没办法进行高可用。