

昨天,Facebook用户普遍经历了意料之外的长时间服务中断,影响了包括WhatsApp、Instagram和Messenger在内的所有应用。在此期间,Facebook发布了两篇博客文章解释了事件原委。
周一晚些时候,该公司发布了第一篇博客文章,解释了导致这一严重问题的根源。Facebook基础设施副总裁Santosh Janardhan写道,“此次宕机的原因是一次错误的配置更改”,并解释说,“在协调Facebook数据中心之间网络流量的骨干路由器上进行的配置更改”是问题的所在。
Janardhan补充说,网络流量中断不仅停止了WhatsApp等Facebook旗下应用的服务,而且“还影响了我们日常运营中使用的许多内部工具和系统,使得我们快速诊断和解决问题的尝试变得更加复杂”。
[相关:我们知道的关于Facebook宕机的原因]
此后,Facebook于今天下午晚些时候发布了另一篇更详细的博客文章,解释了具体出了什么问题。Janardhan在文中写道,他之前提到的“骨干网络”是Facebook为连接所有计算设施而构建的网络,该网络还通过物理线路和电缆连接着全球所有Facebook数据中心。这些数据中心负责存储数据、维持平台运行以及连接Facebook网络与互联网其余部分。
Janardhan解释说,“所有这些计算设施之间的数据流量由路由器管理,路由器负责确定入站和出站数据的去向。在维护这个基础设施的日常工作中,我们的工程师经常需要将部分骨干网络下线进行维护——可能是在修复光纤线路,增加容量,或者更新路由器本身的软件”。
然而,昨天在一次例行维护工作中,“发出了一条指令,目的是评估全球骨干网络容量的可用性”,但该指令“无意中切断了我们骨干网络的所有连接,有效地将全球的Facebook数据中心”彼此隔离开来,并切断了它们与互联网的连接。更糟糕的是,通常可以防止此类错误的审计工具由于一个bug而未能发现问题。
另一个相关问题涉及另外两个互联网架构组件:域名系统(DNS)服务器和边界网关协议(BGP),后者负责向互联网宣告Facebook的DNS。
Janardhan写道,“最终结果是,我们的DNS服务器变得无法访问,尽管它们仍在运行。这使得互联网无法找到我们的服务器。”“DNS的完全丢失破坏了我们通常用于调查和解决此类宕机的许多内部工具。”
听起来这些都相当技术性,所以用通俗的语言来说,以下是关于DNS、BGP以及Facebook所发生事件的须知。
让我们来谈谈DNS和BGP
让我们先从域名系统(DNS)服务器和边界网关协议(BGP)开始。那么它们到底是什么呢?
卡内基梅隆大学助理教授Justine Sherry在接受《流行科学》采访时表示,“DNS通常被称为互联网的地址簿或电话簿。它的作用是,当我有一个人类可读的域名时——比如Google.com或Facebook.com——它会将其转换为IP地址,即一串数字。”“这就像你的街道地址一样。例如,是Forbes大道5000号,而不是卡内基梅隆大学。”
Sherry昨天在她尝试登录Facebook时注意到这个电话簿功能缺失,这个功能很重要,因为它负责将你在搜索栏中输入的、人类可读的域名(facebook.com)转换为互联网如何引导你到你想要通信的服务器。毕竟,对人们来说,在浏览器中输入facebook.com比记住和输入一串数字要容易得多。
[相关:Facebook用户现在可以在群聊中混合Messenger和Instagram好友]
Sherry解释说,“重要的是,这个电话簿是分布式的,所以Facebook拥有这个电话簿中的一部分,表示‘我们是Facebook.com,这是我们的地址’。”“当我输入URL时,我收到一个NXDOMAIN错误,这就是DNS告诉我:‘我不知道那个域名是什么,它没有指向我这里的任何地址。’”
然后是名为BGP的服务,代表边界网关协议。Sherry说:“你可以把BGP想象成互联网的谷歌地图。它会告诉你,如果我有一个地址,我该如何到达那里。”“它旨在让Facebook、Google、Comcast、Sprint和AT&T等不同组织的网络共享它们的路由。”
哥伦比亚大学副教授Ethan Katz-Bassett在邮件中表示,边界网关协议(之所以这样命名,是因为它运行在Facebook和Google等网络之间的边界上)为访问Facebook DNS服务器的请求设置了路由。
配置错误导致Facebook的BGP路由器不再宣告到Facebook DNS服务器的路由。因此,请求会在发送者网络的边缘“丢失”。Katz-Bassett写道,“Facebook系统的设计是,如果一个路由器无法与数据中心通信,它就会撤销DNS路由。”“当单个路由器出现问题时,这可能是一个可以接受的行为,但当所有路由器同时出现问题时,它就会切断一切联系。”
Sherry将BGP比作州际公路系统:“这是将各个州的公路连接在一起的东西。Facebook撤销了它的大部分路由,并开始说它们无法找到到它们电话簿的路线。”
那么,为什么工程师不得不前往加州的数据中心?
昨天的宕机期间,互联网的地图系统基本上抹去了所有通往Facebook的路线,这不仅意味着普通用户无法访问,其员工也无法远程访问。
Sherry推测,Facebook可能将所有数字徽章卡连接到托管在其自有服务器和DNS上的内部数据库,以跟踪谁有权进入建筑物。当它们的DNS和服务器宕机时,门禁卡系统也停止了工作。
通常情况下,工程师在处理服务器时不需要近距离接触它们。他们可以远程登录来访问和操作机器,并通过互联网进行工作。然而,在这种情况下,他们无法远程访问,因此唯一的访问方式就是亲自前往并连接显示器到那些服务器。
Facebook在博客中表示,他们派遣工程师前往实体数据中心进行调试和重启系统。Janardhan表示:“这花费了时间,因为这些设施在设计时考虑了高度的物理和系统安全。”“它们很难进入,一旦进入,即使有物理访问权限,硬件和路由器也被设计成难以修改的。”为了防止突然的电力浪涌或崩溃,他们分批次地重新启动了服务。
许多计算机科学家观察到,在Facebook恢复在线之前,互联网基础设施出现了过载和积压。Cloudflare报告称,通过其DNS服务收到的查询量是平时的30倍。这是因为当你的网页浏览器尝试加载Facebook或Instagram但找不到时,它会不断重试。“人们反复查询电话簿,问道‘Facebook在哪里?Facebook在哪里?Facebook在哪里?’”,Sherry说。
[相关:使用光束而非电缆——互联网正在跨越刚果河]
Facebook的前景以及仍待解答的问题
十年前,类似的问题不会如此广泛。WhatsApp、Instagram和Facebook都是独立的、运行在独立基础设施上的公司。“而现在,它们都成了同一个产品,”Sherry说。“昨天我们看到的是无法运营的公司。”许多拥有Facebook页面和Instagram页面来接触客户的本地企业也无法正常营业。据Bloomberg报道,数百万用户涌向Signal、Telegram甚至Twitter等替代消息应用。
Sherry说:“我们现在每年都会看到几次这样的故障,互联网的大部分地区都会出现宕机。有时是BGP,有时是DNS,有时是亚马逊内部使用的某种晦涩的存储系统。”但现在,“每个公司、每个企业、每个组织都依赖于少数几家公司、少数几个技术产品,当这些产品出现故障时,它们会对互联网和不同行业产生巨大的连锁反应。”
对她来说,最大的影响是WhatsApp,她用它来联系家人。“在世界上许多地方,WhatsApp就是手机服务,”她说。
[相关:一项新的参议院网络安全报告显示,没有一个联邦机构获得“A”]
尽管如此,Sherry说,一般来说,许多独立的应用程序同时出现故障的可能性很小。例如,Facebook和Twitter同时崩溃,或者Google Chat和Facebook Messenger同时出现技术问题的可能性很小。“但越来越多的平台正在集中化和合并,使我们越来越容易受到大规模宕机的影响,造成巨大影响,”她说。“昨天我们看到的是连锁故障,因为Facebook的所有服务(甚至包括门禁控制)都依赖于一个集中的系统。”
Sherry指出,工程界长期以来认为,结合在一起的集中式系统并非最理想的设计。“最安全的方法是保持系统分离,这样当一个系统出现故障时,它只会是一个小范围的本地故障,而不是一次全球性的宕机,”她说。“因此,这种‘一个组织处理一切’的趋势使我们在能够将小问题变成大问题时,更容易遭受这些重大且灾难性的问题。”