图片来源@视觉中国
文 | 航通社,作者 | 书航
“微博崩了”“知乎崩了”“小红书崩了”我们都经历过。你能想象“微信崩了”是什么场景吗?
2021 年 1 月 18 日下午,曾有诸多网友反映微信群聊、私信等收不到消息。“微信 bug”一度冲上热搜。腾讯微信团队回应:
“由于系统抖动原因,今天14点左右,部分微信用户遇到了消息收取延迟情况,现在已经修复完成。”
这次“系统抖动”影响的人数确实相对较少,而历史上,微信也只有朋友圈、红包等部分功能模块偶尔出现“崩了”的情况,相对来说算是“稳如泰山”。
这些服务包含 Facebook 及其相关服务 Instagram、WhatsApp、Messenger、Oculus 等;以及其企业级产品,甚至 Facebook 的公司内网。其中,WhatsApp 和 Facebook Messenger 是公司旗下两款“微信”类即时通信产品,分别在全球范围拥有20 亿用户和 13 亿用户(有重叠),都高于微信(含海外 WeChat)的 12.4 亿用户和 QQ 的 6.06 亿用户。
这次史无前例的故障,其起因本身就是 Facebook 在疫情后不得不开展大量远程工作,导致检修员工不在现场,让事故持续拖延下去。而其结果,是让全球不计其数的中小企业乃至政府部门的远程工作受到严重影响,造成一波又一波的次生灾害。
世纪新冠疫情让人们不得不留在家中,依赖互联网完成大部分工作和人际交往,原本临时的远程办公措施逐渐常态化和永久化,也让人们憧憬新生活方式的可能。但只需要一次简单的服务中断,这一切就都有可能被打回原点。长达 6 小时的 Facebook 大宕机,正是让我们重新反思这一切的绝佳时机。
发生了什么?
根据目前能掌握的信息,这次 Facebook 的大规模故障应该是从一次例行维护开始的。
Facebook 主管基础设施的副总裁贾纳丹(Santosh Janardhan)说,他们在维护过程中发出的一条命令,无意中关闭了通往世界上所有 Facebook 数据中心的骨干网连接。
围绕此事,主要有两个不同的阴谋论。
一是此事正好赶在有位“吹哨人”就 Facebook 及 Instagram“无视儿童安全”上美国国会听证会的前夕,6 个小时也许够用来“毁尸灭迹”;
另一说是有 15 亿份近期的 Facebook 用户个人资料流出,有人说黑市每 100 万个用户资料开价 5000 美元。6 个小时同样也许可以用来补救或者掩盖什么。
目前来看,因为“吹哨人”而自导自演宕机的可能性小到几乎为 0。官方一再解释,此次宕机并不是黑客攻击导致,也没有证据显示有用户数据是因此事而泄露。
不过,“如无必要,勿增实体”。这起事件是一次单纯的误操作所致,也许是一种更简单也更靠谱的解释。
除 Facebook 官方之外,负责第三方公共 DNS 解析和 CDN 服务的CloudFlare 也在官方博客分析,从外部观察,就是 Facebook 的 BGP(边界网关协议)出的问题。
通俗的说,DNS 是互联网的“地图”,用来告诉你“x 在什么地方”;而 BGP 是这一“地图”的“导航”部分,告诉你“怎么走去 x 最快”。
要准确理解这一概念,首先要明白一点:
我们现在所称的“互联网”,字面意思是“网际(inter-)网络(net)”,也就是“网络的网络”,是无数张小网络如“岛屿”般彼此连接的后果。这些小网络可能是“中国电信”、“清华大学”或者“x 公司北京办事处”。
BGP 就是要告诉用户,在地理意义上,你必须经过某些“岛”和“桥梁”才能到达目的地。一般来说,BGP 会智能地选择多种不同路线中距离最短的那一条,当然“最短”不意味着“最理想”,因为有些“桥梁”比如 5G 数据连接是收费的。
当 Facebook 的 DNS 服务器注意到问题,就自动停止继续分发 BGP 路由信息,等待连接恢复正常。因为全球各地设备无休止的发起不成功的访问请求,会导致对上级 DNS 服务器更严重的冲击,让影响扩散得更严重。
这样的事情曾在中国发生过一次。2009 年 5 月 19 日,两个盗取游戏资产的黑客私斗,导致第三方域名解析服务 DNSPOD 被攻击到瘫痪。中国电信停止了对其的网络服务,致使其无法为域名提供解析服务,诸多采用 DNSPOD 服务的网站无法访问。
恰好当时全国装机量约 1.2 亿台的影音播放器“暴风影音”会定期自动访问服务器检查更新,也因为 DNSPOD 故障而不断发起域名解析请求,最终干掉了整个电信运营商的本地域名服务器,引发了全国大断网。
在本次事件中,Facebook 内部的 DNS 服务器本身仍在工作,但主动选择停止解析,以保护更大范围内的网络。虽然修理它并不是什么难事,然而一系列连锁反应使问题进一步恶化。
怎么会这么严重?
缺乏网络连接和域名解析丢失,切断了远程工作的 Facebook 工程师和服务器的联系,也禁用了许多他们平常使用的检修工具。一位 Facebook 内部人士在 Reddit 爆料,当时的情况是:
会修的人连不上路由器也没有登录权限,
有权限的人不会修也连不上,
唯一在机房能物理接触到路由设备的员工没有权限也不会修。
由于内部通讯工具也掉线了,这三波人协作困难,雪上加霜。
公司内部的混乱是全方位的。员工之间本来用公司自己的通讯工具沟通,有时即使需要访问友商业务如谷歌文档和 Zoom 会议软件,也要求使用 Facebook 账号单点登录。系统崩溃让这一切都陷入停顿。
有的员工在事发之前已经用公司账号登录到谷歌文档等环境,受影响尚且较小;有的急忙上线,却发现自己只能用基于微软 Outlook 的工作邮箱、苹果的 Facetime 等各种各样的替代服务与同事联系。
新浪科技驻硅谷记者郑峻写道:
“一位 FB 朋友说,今天大家都很尴尬,不知道发生了什么,也不知道该做什么,只好假装什么都没有发生,在给一家不存在的网站工作。”
修复工作很显然无法远程完成,工程师们紧急“打飞的”到加州的主数据中心参与维修。在此期间,一些员工并不能使用门禁进入公司大楼和会议室,而这些地方的门只能用门禁卡刷开,没有钥匙孔。
The Verge 甚至曾一度获得更戏剧性的消息——因为门禁卡失效,工程师只能带着切割机,强行锯开数据中心的服务器铁笼。不过后面这个报道未经证实,被撤回了。
不过一旦人都被“物理传送”到了合适的位置上,事情相对就好办多了,只需要“激活安全访问协议”而不是动用电锯。
只不过,就算已经解决问题,也必须逐渐一点点地“开闸放水”,否则一次性打开所有通路就如同“8 个明星并发出轨”,会导致更多的系统崩溃。负载必须逐步增加,除美国以外地区的其他用户要等更久才恢复访问。
最终,一切又大致恢复了正常,包括 Facebook 最多曾下跌 5% 的股价。
都是“远程”惹的祸?
2020 年 5 月,中国已经大致控制住了第一波疫情,而美国的疫情开始急剧升温。当时 Facebook 表示,关闭公共办公空间,所有有条件的员工都需要在家工作。而这一措施是短期、临时性的措施,待疫情受控,办公室重开后,将仅允许某些员工,尤其是最资深、最有经验的员工长期远程工作。
时隔一年,Facebook在今年 6 月 9 日更新了政策,将长期远程办公的许可范围扩大到任何有能力在家完成工作的员工。
扎克伯格写道:
“在过去的一年里,我们了解到,员工在任何地方都能完成良好的工作。我更乐观地认为,远程工作有可能大规模进行,尤其是在远程视频和虚拟现实不断改进的情况下。”
自然,无法远程完成的工作岗位通常包括那些在硬件设备或数据中心的工作。但从今天这起事件的情况来看,很显然就连数据中心和网关的岗位,也有一部分已经在“远程”了。
扎克伯格还表示,Facebook 将开始允许员工跨越国境线进行远程工作。Facebook 将允许美国员工要求在加拿大、英国和欧盟的远程工作。到 2022 年 1 月,公司将允许员工在欧洲七个国家之间永久流动。
据统计,Facebook 的劳动力总数约为 6 万人,全美绝大部分办公室在 9 月初以 50% 的容量重开,按计划 10 月要全面开放。
Facebook 并不是唯一一家选择更深入拥抱远程办公的科技巨头。具体到它本身,其理由一方面是疫情的常态化、长期化以及来势凶猛的变种,另一方面是Facebook 的业务范围本身就包含让人们远距离沟通的含义。以 Oculus 为载体的增强现实和所谓“元宇宙”服务也在其规划之中,它本身就计划创造一个跨越物理距离和国家边界的网络领地,而自家员工的率先启用,正好可以做一个内部演练。
直到此时,人们主要关注的还是远程办公是否会影响效率的问题,以及是否可以全面模拟和替代现场办公的体验,及产生所谓“化学反应”。
扎克伯格说,想要在 Facebook 办公室工作的员工,将被要求至少有一半的时间来上班。这是为了确保办公室保持活力,并确保进入办公室的员工充分利用空间,成为社区的一部分。此外,他们还计划为办公室和远程人员组织定期的现场聚会,以维护同事关系。
另外值得关注的问题还包括工资。远程工作很容易导致的结果就是“在老家办公,拿北京的工资”或者“在泰国工作,拿硅谷的工资”。企业当初为员工制定的薪资一般都结合了当地物价和住房成本(如果租房补贴不另计的话),所以长期远程意味着需要与员工协商一定程度降薪。但考虑到不同人工作节奏和偏好的不同,从工作效率最大化的角度出发,员工和公司往往也都愿意接受改变。
从今天开始,人们将不得不思考在这些问题之外,一个更基本的原则性问题:如果连不上远程办公所需的网络基础设施该怎么办?
这一问题此前只是在 Zoom 会议期间才被提起,因为各人所处的网络环境和相隔距离不同,直到疫情爆发一年多后的今天,开一场语音或视频会议依然可能是一场折磨。一张网图说,现在上班开会的感觉有点像“招魂”:
不过,我们有微信群和钉钉群们啊。虽然语音视频略显奢侈,但在群里各自发语音消息片段,乃至直接打字,早就被我们视作日常操作,不可能出问题的。在这个意义上,微信们也俨然成了跨越物理网络、跨越国界的电信运营商,是名副其实的基础设施。
这次,就是这种我们看作完全不可能掉链子的服务出了故障。
被刻意忽略的风险
起初的一两个小时里,人们还只是在隔壁 Twitter 上转发梗图调侃。越到后来,大家就越有点笑不出来了。