圖片來源: 

臉書

在臺北時間10月5日清晨,臉書發生了這幾年最嚴重的當機事件,全球的臉書服務在同一時間斷線,涵蓋Facebook、Instagram與WhatsApp,影響全球逾35億用戶,且持續近7小時,負責工程與基礎架構的臉書副總裁Santosh Janardhan隨後公布了詳細的肇事原因,而一切都是從例行性維護出錯所引發的骨牌效應。

Janardhan解釋,這次的故障是由一個管理臉書全球骨幹網路能力的系統引起的。臉書透過骨幹網路來連結所有的運算設備,它是由橫跨全球之數十萬英里長的光纖網路所組成,負責連結臉書的所有資料中心。

臉書的資料中心有著不同的形式,有些是安置數百萬臺機器的建築物,這些機器用來存放資料,以及負責執行讓臉書平臺得以運作的運算任務,有些資料中心則是相對小型的設施,以將臉書的骨幹網路連至全球網路及使用者。

因此,當使用者開啟任一臉書家族的應用時,該應用程式會向最近的臉書設施請求資料,再藉由骨幹網路傳送到大型資料中心,而這些資料流量的傳遞即是由路由器管理。

可想而知,臉書工程師的日常任務之一就是維護此一基礎架構,而且經常要把骨幹網路的一小部份移出網路,以修護光纖、新增能力,或者是更新路由器韌體。

在5日凌晨時,臉書工程師展開了例行性維護,發布了一個命令來評估全球骨幹網路能力的可得性,卻不小心切斷了骨幹網路的所有連結,等於是讓臉書全球的資料中心同時斷網。其實臉書的系統具備稽核命令的功能,以預防類似的錯誤命令,但稽核工具中的臭蟲卻讓它沒能阻止此一錯誤命令。

接下來就發生了Cloudflare看到的事情了。Janardhan指出,雖然臉書的骨幹網路斷了,但它們的DNS伺服器還是正常運作的,相關伺服器負責回應DNS查詢,也負責透過邊界閘道協定(Border Gateway Protocol)向全球網路宣告自己的存在。

然而,為了確保可靠的運作,臉書的DNS伺服器有一項設定,就是當它無法連結臉書的資料中心時,就會關閉BGP的宣告,於是,不管是Cloudflare的1.1.1.1、Google的8.8.8.8或是其它公共的DNS解析器,都無法在網路上發現Facebook、Instagram或WhatsApp的蹤跡。

Janardhan說,一切都發生的太快了,且工程師在查明原因時又遇到了兩項障礙:一是因為網路都斷了而無法使用日常工具來存取資料中心,二是喪失了DNS也讓原本用來調查及解決故障的內部工具失效。

於是臉書只好派出工程師到資料中心,企圖手動解決問題並重啟系統,但資料中心不管是實體或系統都嵌入了安全機制,一來不容易進入,二來就算進入了,其硬體與路由器原本的設計就提高了變更的門檻,因此又花了一點時間來啟用安全存取規則,以讓這些工程師能夠修改資料中心裡的伺服器。

在臉書成功恢復骨幹網路之後,另一個關鍵則是重啟資料中心,瞬間重啟所有服務可能會因流量與電力使用的驟增,而讓系統再度崩潰。但臉書之前即曾進行多次的「風暴」(Storm)演習,模擬系統故障的場景,關閉服務、資料中心或整個區域的系統來進行壓力測試,有了這些演習經驗,讓臉書在回復所有服務的環節上沒有遭遇太多的問題。

在處理這個意外的時候,Janardhan也察覺了一件事,過去臉書不斷地強化系統來防止未經授權的存取,但這些機制卻也拖慢了臉書自己修復的腳步,即便如此,他依然相信這個取捨是值得的


熱門新聞

Advertisement