【來論】facebook系統故障的經驗傳承

2021-11-17 00:00

facebook、WhatsApp、Instagram,以及facebook旗下子公司及應用,在香港時間十月四日凌晨開始,相繼陷入無法連結狀態,最後要到早上六時許七時,才陸續恢復正常運作。facebook其後在Twitter發文道歉。

事故原因據facebook工程部門事後報告,問題是由一個管理全球骨幹網絡容量的系統所觸發。這個骨幹網絡由數萬英里的光纖電纜組成,把facebook的所有數據中心連接起來。每次當你打開facebook時,數據請求會從你的設備,傳輸到最近的設施,然後通過這個骨幹網絡,分發到不同的數據中心;而當中的數據流量,是由路由器管理的。

與其他電腦設施一樣,這些平日處理大量工作的基礎設施,也需要定時維護。這時候部分的骨幹會離線,以便進行維護工作。事發當時,在其中一項日常維護工作中,發布了一項命令,旨在評估全球骨幹網容量的可用性。此舉無意中切斷了骨幹網絡中的所有連接,從而斷開了與facebook全球數據中心的連接。雖然系統已經審核此類命令,以防止出現類似錯誤,但審核工具中,出現了錯誤,使其無法正確地停止命令。

由於完全失去連接,也導致了第二個問題。由於互聯網地址簿(DNS),無法與數據中心通訊,這個地址轉換器,會停止告訴互聯網它是可用,結果就是縱使互聯網地址簿在運行當中,但互聯網其他部分,卻無法找到它們。

至於為何需時那麼長,才能恢復服務?其中一個原因,也是因為失去了DNS,令工程師不能在遠端訪問數據中心去解決問題,最後唯有派出工程人員,到數據中心現場調試問題,再重新啟動系統。以上的工作和程序需時,因為這些設施的設計,考慮了高水平的物理和系統安全性,令它們很難進入。一旦你進入內部,即使你可以物理訪問它們,硬件和路由器,也被設計到很難被修改。因此,就需要額外的時間來激活,讓工程師到達現場,並能在服務器上安全訪問。

看了事故報告後,個人覺得網站可依靠工程的一些實踐,而可以對事件惡化,作出一些預防性功用,以及事發後的改善。

首先,可以加設斷路器及自動化。相信大家都會認同,無論系統怎樣設計良好,人為的錯誤,始終是很難完全避免的。facebook今次事件,和以前其他大公司的大型事故,都證明了這一點;而發生與否,只是時間問題而已。

反而,相對變得重要的,就是如何設計一些斷路器(Circuit Breaker),去堵截不良。facebook似乎已做了這一步,但明顯要加強的,是確保這些斷路器能正常運作。此外,企業亦可實施事後剖析及原因分析、減少單點故障,以及去中心化架構等。

鄭頌鈿

香港電腦學會企業架構專家小組委員會成員

關鍵字

最新回應

相關新聞

You are currently at: std.stheadline.com
Skip This Ads
close ad
close ad