由少數公司掌控的全球網絡比你想象中更脆弱!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在三月某天發生服務大斷線,官方卻只給了一個服務器配置變更導致故障的模糊兩可的答案。
不過經過這次事件,我們也應該要有所認知,我們的數據都集中存儲在少數的雲服務公司的服務器中,這些公司都是由人類營運,而沒有不會犯錯的人類,過度相信這些雲服務的可靠性,並不是那麼聰明的作法。畢竟,即便是最小的錯誤,其所造成的漣漪效應,恐怕都會有遠超出最初預想的嚴重程度。