由少数公司掌控的全球网络比你想象中更脆弱!Google云服务故障事件解析!_风闻
TechEdge科技边界-2019-06-09 22:40
美国时间六月二日发生了一件惊天动地的大事,在美国多个地区运行的Google云计算服务经历了长达数个小时的网络壅塞,由于封包严重丢失,所有依靠Google云服务的相关服务都遭受到了严重的服务中断现象。

紧接着,Youtube服务中断、Shopify商店被迫关闭,Snapchat也挂了,同时,数以百万计的人无法使用他们的Gmail账号。
由于系统架构原始的设计问题,Google云服务的中断同时也阻隔了Google工程师修复云服务的可能。这次的服务中断从美国时间下午一直延续到傍晚。

事件发生时的网络流量中断状况,以及受影响的地区。(图:ThousandEyes)
Google自动化管理软件的锅
这个严重的事件并不是黑客导致,其实也只是个不起眼的小事故,然而这些事故的堆栈,终于让系统在自动进行判断与处理时发生了一连串的失误,最终导致网络大停摆的结果。
事故起因于当天下午原先要在全球多个范围的服务器群组进行已经排定的组态更新。理论上,Google的云服务器会自动把相关的数据存取自动绕过这些正在进行维护的服务器,或者是暂停一些较不重要的计算工作。
然而管理软件上的臭虫,以及两个失误的组态设定,原本Google自动管理程序只会把这些维护中的服务器应该只需要暂时从全球网络中离线,但取而代之的是,自动维护程序决定取消Google全球多处网络节点的自动调度功能。想象一下,Google在全球占据了庞大的数据流量,若取消调度功能,就有如北京交通缺少了红绿灯一样,所有的数据封包就像车辆一样停滞在道路上,北京道路马上变成全球最庞大的露天停车场。
在最初的数分钟,其实状况还不是那么严重,看起来也还有挽回的余地。然而Googel的网络是针对静态失效(fail static)设计,换言之,在短时间的关闭调度之后还能正常工作,不过这几分钟显然明显不足,数分钟之后,受影响的特定物理位置之间的BGP路由被撤销,导致可用网络容量减少,最终Google服务开始卡顿,并开始影响终端消费者。
而造成网络灾难的主要原因是,并非所有的网络交通都一视同仁,而是有优先度的差别,为了在紧急时刻确保关键的数据传输能够正常动作,Google的自动化系统会依照封包的优先度不同来分配传输工作,根据Google工程副总裁的说法,当网络变得壅塞时,Google的系统正确的对过载的流量进行分流,并选择性的丢弃那些更大,且对延迟更不敏感的流量,借以保护那些对延迟极度敏感的关键流量。就好比高速公路塞车,但路旁的小道仍可容许自行车通过,达成运输的目的。

然而,被牺牲的流量占了Google总流量的近三成,这也是导致Shopify服务直接挂掉的关键原因。另外,即便是Google自家的服务,Youtube在一个小时之内失去了2.5%的观看次数,另外,有百分之一的Gmail用户遭遇的连接困难的问题。不过,Google搜索却完全没有被影响到。
状况很明显了,Google的自动管理系统把搜索服务优先度摆到最高,从而牺牲了包含Youtube、Gmail以及其他第三方的服务,在商言商,这对Google而言是很正常的判断,毕竟搜索的速度严重影响了使用者的体验,如果速度过慢,那么使用者可能就会改弦易辙,转而去其他搜索引擎。
而另一方面,Google的自动管理系统本身的流量优先度也低于前面几个Google网络服务,工程师虽然在最初几分钟就已经发现问题,但最终因为流量壅塞造成管理工具无法发挥作用,使得灾难最终仍然发生。
随后,工程师们尝试停止自动化管理软件,并重新启用网络控制接扣以及配套的基础设施。不过又有其他状况发生,部分取消调度机制的网络控制平面已经丢失配置数据,需要重建和重新分配,但由于网络节点壅塞发生在全球多个节点,这也导致恢复时间耗时极长。
而Google多个团队也分头并进,尝试把受灾地区的网络流量需求分配到其他未受影响的区域,借以舒缓网络塞车的状况。
最终,Google团队在晚上九点让全部的服务恢复正常,而这个时间距离灾难发生的第一时间已经是五个小时后了。
目前Google停止了自动维护软件的运行,Google方面表示,在确定该软件经过适当的重新配置,并确保有更多保护措施之前,不会使其重新上线,借以避免下一次的全球性网络灾难。
在这场灾难下,其实我们看到的是网络资源的有限,使得紧急事故导致的调度可能会失控,由于在压力状况下要立即决定哪些服务要继续运行,而哪些要终止,在此情况下,出错的机会就会非常大。
当然,相同情况也有可能发生在其他云服务供应商身上,Google只是开了显而易见的一枪。然而这还算不错了,相较之下Google选择公开且透明的面对问题,让业界认知到这种问题可能发生在任何云服务公司身上,反观Facebook在三月某天发生服务大断线,官方却只给了一个服务器配置变更导致故障的模糊两可的答案。
不过经过这次事件,我们也应该要有所认知,我们的数据都集中存储在少数的云服务公司的服务器中,这些公司都是由人类营运,而没有不会犯错的人类,过度相信这些云服务的可靠性,并不是那么聪明的作法。毕竟,即便是最小的错误,其所造成的涟漪效应,恐怕都会有远超出最初预想的严重程度。