2021 年 10 月 4 日 15:39(UTC),Facebook 和它上面的一切——Instagram、WhatsApp、Messenger、Oculus——在全球陷入黑暗。接下来的六到七个小时里,数十亿人就是访问不了它们。原因不是网络攻击。在一次例行维护中,一名工程师运行了一条本意是评估 Facebook 全球骨干网容量的命令。命令出了错,意外地把 Facebook 所有数据中心一次性从那根骨干网上断开了。

这个设计把一条糟糕的命令变成了一场灾难。Facebook 运行着自己的 DNS 服务器,这些服务器被配置成:一旦与数据中心失去联系,就撤回它们的 BGP 路由——也就是互联网的地址簿条目。所以骨干网一倒,DNS 服务器就尽职尽责地告诉互联网其余部分:Facebook 的地址已经不存在了。Facebook 实际上把自己从互联网上删掉了,而这次撤回级联得如此彻底,连 Facebook 自己的工具都很难够到它去修复。

这场封锁彻底得近乎滑稽。Facebook 的内部系统也倒了:员工发不了外部邮件,访问不了公司通讯录,甚至——一个上了头条的细节——用门禁卡打不开办公楼和会议室的门,因为门禁也依赖同一张网络。恢复需要一个团队物理进入圣克拉拉的数据中心,手动重置服务器。服务在 UTC 大约 21:50 到 22:50 之间逐渐恢复。Facebook 股价当天下跌近 5%,马克·扎克伯格的个人财富缩水逾 60 亿美元。

宕机 6 小时;广告收入损失逾 6000 万美元

一条没有充分防护的维护命令,把 Facebook 所有数据中心一次性从骨干网上断开。

DNS 服务器被设计成一旦失去数据中心就撤回 BGP 路由——于是这场故障自动把 Facebook 从互联网的路由表里抹掉了。

恢复工具和访问权限 (包括实体门禁卡) 都依赖那张已经故障的网络,把工程师锁在了修复之外。

没有一条带外路径能触及系统、快速撤销这次变更。

恢复路径不能依赖那个刚刚坏掉的东西。当你的 DNS、认证和门禁卡全都跑在你刚刚搞垮的那张网上,你就把自己关在门外了。

Facebook 的工程团队第二天发布了一篇详细说明,公司也道了歉。这次宕机——2008 年以来最严重的一次——据估计造成 6000 万美元以上的广告收入损失,市值蒸发数百亿,还一度把用户赶向竞争平台。它成为网络工程的教科书案例,讲单点故障之害、讲依赖被恢复系统的恢复系统之害,也讲一条没有防护的命令如何能搞垮一个三分之一人类在用的服务。

从这里,追溯依据

参考来源

  1. 2021 Facebook outage — Wikipedia (4 October 2021, BGP withdrawal, six-hour global outage) en.wikipedia.org
  2. The Verge — Facebook/Instagram/WhatsApp outage explained (archived) web.archive.org