《架构师》2021年11月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

热点 | Hot

Facebook史上最严重宕机:互联网企业是时候重新审视架构了?

作者 核子可乐 褚杏娟

刚被指责“利用放大仇恨言论的算法谋取利益”没多久,Facebook再次陷入危机。

美国东部时间10月4日上午11点39分左右,美国社交媒体Facebook、Instagram和即时通讯软件WhatsApp出现大规模宕机,此次宕机长达近7个小时,刷新了Facebook自2008年以来的最长宕机时长。

美国互联网监控网站DownDectors的监控情况显示,Facebook在欧洲、美洲、大洋洲几乎是完全下线,在亚洲的日本、韩国、印度等国也无法访问。据悉,WhatsApp和Facebook Messenger两款“微信”类即时通信产品,分别在全球范围拥有20亿用户和13亿用户,社交平台Instagram用户数也达到了10亿用户。

除了让数十亿用户陷入困境之外, Facebook服务中断还使其员工无法使用内部工具相互交流。Facebook的电子邮件和工具都是企业内部管理的,Facebook很多员工也无法正常工作。

Facebook首席技术官Mike Schroepfer在推特上道歉

一条指令引发的“血案”

Facebook表示,这次故障的根本原因是例行维护工作发出了一条糟糕的指令,结果导致其DNS服务器不可使用,切断了Facebook整个骨干网络与数据中心之间的连接。

所谓骨干网,是Facebook为一切计算设施构建而成的全局连接网络,由长达数万英里的光纤线缆组成,跨越全球并将各地的数据中心连接了起来。Facebook基础设施副总裁Santosh Janardhan在文章中解释道,数据中心主要有两种形式,一种是存放着数百万台数据存储与高强度计算负载运行设备的“巨大的建筑”,另一种则属于小型设备,通过骨干网络接入整体互联网并构建起Facebook社交平台的方方面面。

当用户打开应用并加载摘要或消息时,应用提出的数据请求会由当前设备传输至最近的设施,之后再直接通过骨干网络与更大的数据中心进行通信。应用所需要的信息将在这些数据中心内进行检索与处理,再把结果通过网络发送回用户手机上。

维护基础设施的日常工作非常繁重。工程师们还经常需要让部分骨干网络离线以实施维护——包括修复光纤线路、扩大容量或者更新路由器自身软件等等。而这也是此次宕机事件的原因所在。

Janardhan表示,在一项日常维护工作中,工程师们发出一条用于评估全球骨干网容量可用性的指令,但意外切断了骨干网络中的所有连接,这实质上就是断开了Facebook全球数据中心之间的连接。不幸的是,Facebook的系统在设计上能够审查此类指令以防止出现错误,但其功能只是发出错误提示,并不能真正阻止指令执行。

这次意外,导致Facebook的数据中心与互联网之间的服务器连接完全断开,由此带来了一系列连锁效应让情况进一步恶化。

在此次宕机事件中,由于整个骨干网都已陷入瘫痪,因此各DNS服务器位置均上报连接状态问题并撤回边界网关协议(BGP)通告。最终结果是,Facebook的DNS服务器虽然仍在运行但却无法正常访问,导致其他互联网用户也无法正常接入其服务器。

响应DNS查询是小型设施执行的一项重要任务。DNS可以称之为互联网的地址簿,能够将用户在浏览器中输入的简单网络名称转换为特定的服务器IP地址。这些转换查询由Facebook的权威名称服务器给出应答,而这些服务器本身就占用着最众所周知的IP地址。接下来,这些服务器再通过边界网关协议(BGP)向互联网的其余部分发布通告。为了确保运行可靠性,如果DNS服务器自身无法与数据中心通信,则所有BGP通告都将被禁用,表示当前网络连接状态不正确。

简单来说,Facebook拿走了告诉世界计算机如何找到其各种在线资产的地图。结果,当在Web浏览器中键入Facebook.com时,浏览器不知道在哪里可以找到Facebook.com,因此返回到了错误页面。

为什么无法及时修复

为什么这次故障持续了近7个小时之久呢?

Janardhan表示,工程师们在修复这一故障时,面临着两个巨大的障碍:首先,Facebook的工程师们无法通过正常方式访问自己的Facebook数据中心,因为这时候骨干网已经出现了故障;其次,DNS没有响应致使Facebook无法使用调查及解决宕机问题的常规内部工具。

骨干网与带外网络访问均出现故障,这意味着工程师只能亲自前往现场进行调试并尝试重启系统。但这需要时间,因为各处设施都遵循高水平的物理与系统安全保护政策。

错误的更新阻止了Facebook员工(其中大多数是远程工作)恢复和更改系统。与此同时,那些可以物理访问Facebook大楼的人无法访问Facebook的内部工具。

“任何人员都很难进入,而且一旦进入并获得物理访问能力,这些硬件与路由器的设计也很难得到修改。因此,需要更多的时间将工程师们引导进机房,并为他们提供在服务器上工作所需要的安全访问协议。只有这样,我们才能确认问题并让骨干网重新上线。”Janardhan写道。

有专家估计,Facebook、Instagram、WhatsApp全球服务中断一小时将给全球经济造成1.6亿美元的损失。同时,Facebook当日股价盘中暴跌6%,扎克伯格个人财富一日蒸发逾60亿美元。

屋漏偏逢连夜雨。在Facebook全球网络服务中断期间,据称在黑客论坛上有超过15亿Facebook用户的数据被出售。但Facebook方面否认了这次用户数据泄露与服务中断有关。

“我们要明确表示,这次宕机背后没有恶意活动,其根本原因是我们端的错误配置更改。我们也没有证据表明用户数据因此次停机而受到损害。”Janardhan说道

架构缺陷

美国东部时间下午6点33分,Facebook发推文称其应用程序和服务已开始恢复运行。随着各数据中心区域中的骨干网连接的恢复,一切都随之复原。但问题还没有真正结束。

一次性对所有服务全部重启会带来新的隐患,因为流量激增很可能导致新一轮崩溃。个别数据中心还上报称宕机导致设施耗电量下降了几十兆瓦,而突然上线带来的用电量暴增很可能给电气系统、缓存等各类装置带来意外冲击。

Janardhan表示,虽然Facebook一直在做“风暴”演习,对服务、数据中心乃至整个区域进行脱机,并针对一切相关基础设施与软件开展压力测试以模拟主要系统故障,但并未演练过全球骨干网络脱机的状况,后续会找可行性方法作出应对。

据监测互联网流量和故障的思科ThousandEyes的产品营销主管Angelique Medina表示,这起事件暴露了Facebook架构的一个缺点:如果本身出现DNS故障,又没有后备DNS,就可能会出现长时间的故障,“所以我认为,这件事带来的一大经验教训就是要有冗余DNS。”

Medina表示,一套更稳健的架构将拥有双DNS服务,那样一个DNS服务可以支援另一个。据Medina声称,比如说,亚马逊(其AWS提供DNS服务)为其DNS使用两项外部服务:Dyn和UltraDNS。

同时,这次宕机事件也让身处反垄断调查的Facebook雪上加霜。

美国国会众议院成员Alexandria Ocasio-Cortez表示,Facebook爆发大规模宕机事故,这凸显出该公司在全球通信和其他服务领域的垄断地位。其在推特上表示,Facebook周一发生的大规模宕机事故是对该公司垄断全球通讯和其他服务的一次提醒,再次表明Facebook应该被分拆。