断网六小时,Facebook的声明与断网的启示
10月4日,社交网站Facebook遭遇六小时的网络中断,据称这是该社交网站有史以来最严重的一次服务中断。相关消息显示,这使该公司市值缩水近500亿美元。
针对此,APNIC首席科学家、互联网专家杰夫·休斯顿(Geoff Huston)发表文章《从Facebook的断网和错误中,我们能学到什么》(《Numerous Lessons We Can Learn From the Facebook Outage and Its Mistakes》)对此事进行分析。他指出,面对网络中断事件时,服务提供商应该选择开诚布公地面对和公开信息,以便人们从中得到启示。同时,针对网络服务商如何保障其网络安全,他提出六大建议。
断网六小时,Facebook
的声明与断网的启示
文/杰夫·休斯顿(Geoff Huston)
今年7月,我曾说,Akamai(编者:一家CDN服务提供商)的关于网络服务中断的报告对这个行业来说是不寻常的。
其不同寻常之处在于,它提供了丰富的信息,详细说明了他们对问题根源的理解,说明了他们为纠正当时存在的问题而采取的应对措施,以及为防止问题再次发生和改进其网络安全状况而采取的长期措施。
如果Akamai的网络服务中断报告在任何方面都让人觉得正常,这说明企业在处理这类事上总体令人满意,即把中断原因和处理措施写得清清楚楚,这不是推卸责任或承认责任的问题。实际上我认为,Akamai的网络中断报告真正显示出一种把网络服务定位是人类数字环境的重要基础的理念,即通过开放共享的方式呈现信息,进而带给人们启示,并由此提高网络服务的健壮性。
我们要认识到,网络服务在很大程度上属于公共安全范畴,面对同样的问题时,任何企业都应该以同样方式进行运作和管理。从而让人们能够通过一个单独事件,了解到漏洞是如何一步一步地导致最终故障的产生,进而在整体上提高网络服务的健壮性。
10月4日,Facebook经历了整个互联网历史上影响最大的一次中断,假设“影响”的指标是一次中断可以惹恼多少用户的话。假如 Facebook在营销中说的是真话,那么在这个案例中,6小时的中断波及了其大约“30亿用户”。
我们从这次网络中断中了解到了什么?根本原因是什么?他们实施了哪些短期缓解措施?为何6个多小时才恢复服务?他们可能做什么来确保这种情况不会重演?从行业角度,我们可以从这次中断中学到什么、得到什么启示,以确保其他重要和受欢迎的平台上不会再次发生如此广泛的中断?
Facebook的“网络中断报告”
这些都是很好的问题,但Facebook的“中断报告”不能够提供答案。它足够短,我可以在这里完整地再现:
对于世界各地依赖我们的所有人和企业,我们对今天平台中断造成的不便表示抱歉。我们一直在尽最大努力恢复访问,我们的系统现在已经恢复运行。此次中断还潜在影响了我们在日常操作中使用的许多内部工具和系统,快速诊断和解决问题的尝试由此变得更复杂。
我们的工程团队已经了解到,在协调我们数据中心之间网络流量的骨干路由器上的配置更新导致了通信中断的问题。这种对网络流量的破坏对数据中心通信方式产生了连锁影响,迫使我们的服务停止运行。
我们的服务现在已经恢复上线,我们正在积极努力让它们完全恢复正常。我们想要明确的是,这次中断背后没有恶意活动--其根本原因是我们错误的配置更新。我们也没有发现用户数据因这次停机而受到损害。
世界各地的人们和企业每天都依赖我们来保持联系。我们理解像这样的中断对人们生活的影响,我们也有责任让人们了解我们服务的中断。我们向所有受影响的人道歉,我们正在努力更多地理解今天发生的事情,这样我们就可以继续使我们的基础设施更具弹性。
(https://engineering.fb.com/2021/10/04/networking-traffic/outage/)
是的,他们说“对不起”。但他们几乎说不出别的了,不是吗?
同样,这里确实没有什么异常,因为配置更新是导致服务错误的最常见原因。这就是为什么大多数通信服务提供商在重要时段(如美国“黑色星期五”或新年假期)实施配置冻结,这也是为什么全年最稳定的运行通常是在配置冻结期!但在Facebook的案例中,无论他们进行了哪种部署前测试(假设他们真做了相应测试),都未能识别到更新过程中的风险。我想,其工程团队仍然在遵从马克·扎克伯格的运营口号——快速行动,打破僵局,激情行事。
这份报告空洞无物,它写了四段,但我们基本上不能从中获得什么有效信息。
美国全国广播公司NBC的新闻报道说:
“Facebook一名员工说,这似乎是域名系统(DNS)的问题,DNS是互联网的'电话簿',计算机用它来查找网址。”该消息人士说到,“我希望我知道原因,但没有内部工具可以使用,DNS信息似乎完全过时。每个人都只能袖手旁观。目前还没有理由怀疑有其他恶意行为,但中断几乎影响了一切。甚至不能访问第三方工具。”
NBC的这份报告远比Facebook发布的废话一样的声明更有信息量,这令人难以接受。
断网的三个因素
到底发生了什么?我们可以从中学到什么?为此,我不得不求助于CloudFlare!他们发布了他们观察到的内容丰富的描述,仅仅使用了Facebook“外部”的视图。
Cloudflare解释说,Facebook设法撤回Facebook.com域的权威名称服务器地址前缀的BGP路由公告。在DNS中,如果对权威服务器的中断相对较短,通常不会是问题。所有DNS信息都缓存在递归解析器中。如果DNS缓存生存时间(TTL)很长(我所说的“长”指的是一天或更长时间),那么很可能只有一小部分递归解析器的缓存信息会在短时间(比如,几秒钟)中断的时间段内过期。任何使用多个不同递归解析器的用户都不会注意到中断。毕竟,Facebook域名被广泛使用(还记得那30亿Facebook用户吗?),所以它可能是一个被广泛缓存的名称。因此,缓存在“正常”情况下会有所帮助。
此时,中断的第二个因素起作用了。Facebook在他们的DNS中使用简短TTL,因此取消其权威名称服务器可访问性的影响相对来说是立竿见影的。由于本地缓存信息超时,权威服务器无法联系,因此该名称从Internet的递归解析器中消失了。
但是这种形式的消失在DNS中是一种形式,引起了DNS“众神”的愤怒。在这种情况下,当域名服务器都脱机时,查询的结果不是NXDOMAIN响应码(“对不起,该名称在DNS中不存在,走开!”),而是对没有任何响应查询的更不确定的超时。递归解析器将使用存储在父域(本例中为.com)中的所有域名服务器IP地址重试查询,然后返回SERVFAIL响应码(这意味着类似于:“我无法解析此名称,但可能是我的原因,所以查询失败之前您依然可以试试其他解析器!”)。因此,客户端的存根解析器随后向它配置的所有其他递归解析器提出查询。正如Cloudflare指出的那样:
“所以现在,因为Facebook和他们的网站太大了,我们在全球范围内的DNS解析器处理的查询比平时多30倍,这可能进一步导致其他平台的延迟和超时问题。”
然后第三个因素开始起作用。一旦域名facebook.com和这个空间里的所有名字有效地从互联网上消失,他们自己的内部管控工具也随之消失。这是由DNS引发的,还是由最初的BGP路由撤回引发的?此时依然不能确定,但结果是他们失去了对服务平台的控制。这影响了其数据中心间交换流量的能力,进一步加剧了问题。
正如Facebook在声明中所承认的那样,中断
“影响了我们在日常运营中使用的许多内部工具和系统,快速诊断和解决问题的尝试由此变得更复杂。”
推特上的其他报道更离奇,其中一个报道指出,Facebook办公楼默认为锁定模式,阻止员工进入,即便是为了处理中断!在这一点上,Facebook服务平台大概是单独运行的,因为没有人能进入平台,直接追踪问题并纠正它。他们被锁在外面了!
带来的六个启示
从这次中断中还可以吸取许多教训,让我们来看几个:
一是对每一个配置更新进行演习,并始终有一个退出计划。这一点就不用多说了吧。
二是关注DNS TTL值。如果想在你的DNS上使用简短TTL,你就得非常小心,因为DNS缓存不会帮助你摆脱拥塞。总的来说,DNS缓存是互联网如此高效工作的原因。缩短缓存的生存期只会让你更接近灾难的边缘!
三是不要把所有的DNS鸡蛋放在一个篮子里。DNS将非常愉快地与不同备份进行合作,但需要你的准确配置。因此,不要像在BGP中那样,将所有权威DNS域名服务器放在一个单独服务器中,那是自找麻烦。也许应当寻求一个或两个外部提供的程序的帮助,作为域的附加辅助服务器。
四是从生产服务中分离出控制平面总是好的。这样,即便发生服务故障,你也始终能够访问服务。这意味着单体基础结构、单个路由和单个DNS域,也意味着把所有东西分开。是的,构建一个你希望依赖但可能永远不需要的额外服务是需要成本的。但Facebook很大,我肯定他们买得起!
五是片面地追求高速和突破最终只会带来破坏。在某些时候,用户会失去耐心。一旦用户抛弃了你,你就可以随心所欲地移动,随心所欲地休息。没有客户,一切都不再重要了!
六是如果您真的必须在速度和弹性之间做出设计选择,那么请非常仔细地考虑您愿意承担的风险以及由失败带来的负面影响。在这种情况下,Facebook的失败意味着大约6%的公司市值损失(哦,是的,大约在中断的同时,在美国参议院消费者保护商业小组委员会面前提出的证词也没有帮助)。但在某一点上,额外弹性措施成本和可能级联的关键单点故障成本之间存在工程权衡。现在Facebook可能故意选择了一个高风险配置文件,但是这个风险必然由它的消费者、广告商和股东分担吗?
总之,如果你想让你的客户、你的投资者、你的监管者和更广泛的社区对你有信心,证明你在做一项有效的工作,你需要开诚布公地说明你在做什么以及为什么这么做。然而,这些似乎并不是适用于Facebook的规则。
如果在未来几天,Facebook能够发布一份更全面的中断分析,包括:根本原因分析和导致连锁故障的因素,用来解释为什么解决问题花了惊人的6小时。并且公布他们所采取的服务恢复措施,以及他们将采取的长期行动,以避免未来发生类似故障。
如果Facebook真的发布了详细分析报告,我会很惊讶的。
但我知道,这样的期望绝不会实现。
(以上观点不代表亚太网络信息中心的观点)
作者:APNIC首席科学家、互联网专家杰夫·休斯顿(Geoff Huston)