【来论】facebook系统故障的经验传承

2021-11-17 00:00

facebook、WhatsApp、Instagram,以及facebook旗下子公司及应用,在香港时间十月四日凌晨开始,相继陷入无法连结状态,最后要到早上六时许七时,才陆续恢复正常运作。facebook其后在Twitter发文道歉。

事故原因据facebook工程部门事后报告,问题是由一个管理全球骨干网络容量的系统所触发。这个骨干网络由数万英里的光纤电缆组成,把facebook的所有数据中心连接起来。每次当你打开facebook时,数据请求会从你的设备,传输到最近的设施,然后通过这个骨干网络,分发到不同的数据中心;而当中的数据流量,是由路由器管理的。

与其他电脑设施一样,这些平日处理大量工作的基础设施,也需要定时维护。这时候部分的骨干会离线,以便进行维护工作。事发当时,在其中一项日常维护工作中,发布了一项命令,旨在评估全球骨干网容量的可用性。此举无意中切断了骨干网络中的所有连接,从而断开了与facebook全球数据中心的连接。虽然系统已经审核此类命令,以防止出现类似错误,但审核工具中,出现了错误,使其无法正确地停止命令。

由于完全失去连接,也导致了第二个问题。由于互联网地址簿(DNS),无法与数据中心通讯,这个地址转换器,会停止告诉互联网它是可用,结果就是纵使互联网地址簿在运行当中,但互联网其他部分,却无法找到它们。

至于为何需时那么长,才能恢复服务?其中一个原因,也是因为失去了DNS,令工程师不能在远端访问数据中心去解决问题,最后唯有派出工程人员,到数据中心现场调试问题,再重新启动系统。以上的工作和程序需时,因为这些设施的设计,考虑了高水平的物理和系统安全性,令它们很难进入。一旦你进入内部,即使你可以物理访问它们,硬件和路由器,也被设计到很难被修改。因此,就需要额外的时间来激活,让工程师到达现场,并能在服务器上安全访问。

看了事故报告后,个人觉得网站可依靠工程的一些实践,而可以对事件恶化,作出一些预防性功用,以及事发后的改善。

首先,可以加设断路器及自动化。相信大家都会认同,无论系统怎样设计良好,人为的错误,始终是很难完全避免的。facebook今次事件,和以前其他大公司的大型事故,都证明了这一点;而发生与否,只是时间问题而已。

反而,相对变得重要的,就是如何设计一些断路器(Circuit Breaker),去堵截不良。facebook似乎已做了这一步,但明显要加强的,是确保这些断路器能正常运作。此外,企业亦可实施事后剖析及原因分析、减少单点故障,以及去中心化架构等。

郑颂钿

香港电脑学会企业架构专家小组委员会成员

關鍵字

最新回应

相關新聞

You are currently at: std.stheadline.com
Skip This Ads
close ad
close ad