10月4日,包括Facebook、Ins、WhatsApp 和 Oculus在內(nèi)的一系列服務(wù)群體宕機接近7小時,以致于Facebook高管要到競爭對手的地盤——推特上去發(fā)布聲明、通知,以及道歉。
故障解決后,各種細節(jié)陸續(xù)披露出來,其原因的離奇讓廣大的運維人員不由感嘆:原來Facebook也會出這些不靠譜的低級錯誤啊。
單點故障
一條很簡單的命令出錯——這是Facebook方面披露的事故最初原因。根據(jù)Facebook工程和基礎(chǔ)設(shè)施副總裁Santosh Janardhan在一篇博客中透露,運維工程師只是根據(jù)日常運維要求輸入了一條命令,目的是評估Facebook全網(wǎng)容量的可用性,結(jié)果卻是“無意中切斷了我們骨干網(wǎng)絡(luò)中的所有連接,有效地斷開了 Facebook 全球數(shù)據(jù)中心的連接。”
Janardhan表示,系統(tǒng)中有一條審核程序可以防止出現(xiàn)類似的錯誤,但很不巧的是,當(dāng)時這個審核系統(tǒng)也出現(xiàn)了問題,導(dǎo)致錯誤的命令被“正確無誤”的執(zhí)行了下去。
這條命令的執(zhí)行結(jié)果也非常簡單:通知Facebook的域名解析服務(wù)器(DNS)刪除Facebook相關(guān)的IP段的路由記錄。從全網(wǎng)評估變?nèi)W(wǎng)刪除,從而導(dǎo)致了Facebook以及相關(guān)的域名無法訪問,全體宕機。
不過這些并不是Facebook史無前例宕機的根本原因。根本原因在于, Facebook雖然準(zhǔn)備了多臺DNS作為備份,但它們都處在子網(wǎng)絡(luò)185.89.218.0/23和129.134.30.0/23。凡是Facebook的解析都需要及經(jīng)過這里,一旦故障,就會導(dǎo)致Facebook及相關(guān)服務(wù)的失聯(lián)。
可以說,過于簡單的DNS配置導(dǎo)致的單點故障才是Facebook此次故障的罪魁禍?zhǔn)住?/p>
電鋸驚魂?
運維宇宙的上古時代流傳這個傳說:高權(quán)限管理員是一把改錐。
在這次Facebook故障中,改錐沒有露面,但是電鋸露了一小臉。在鋪天蓋地的猜測中,《紐約時報》語出驚人:因為數(shù)據(jù)中心安全設(shè)施保護嚴(yán)密,加上系統(tǒng)故障導(dǎo)致門禁不可用,F(xiàn)acebook工程師最后靠一把電鋸打開了大門……
雖然最后辟謠了,電鋸并沒有出場。但現(xiàn)場“物理維護”的艱難并不比遠程維護容易半分。
Facebook表示,因為DNS故障導(dǎo)致無法通過外網(wǎng)進行遠程操作,只好派工程師現(xiàn)場解決問題。但“這些設(shè)施的設(shè)計考慮到了高水平的物理和系統(tǒng)安全性。它們很難進入,一旦您進入內(nèi)部,即使您可以物理訪問它們,硬件和路由器的設(shè)計也很難修改。”
并且,工程師“需要額外的時間來激活讓人們到現(xiàn)場并能夠在服務(wù)器上工作所需的安全訪問協(xié)議”??梢娫阱礄C的7小時中,工程師為解決“物理問題”也花了不小的功夫。
而在技術(shù)圈還有另一個傳聞:在一切解決后,工程師心急上電,結(jié)果導(dǎo)致DNS被瞬間流量沖垮,只好拔掉網(wǎng)線重新開機,才真正的恢復(fù)了服務(wù)。
至此,F(xiàn)acebook的驚魂7小時才算正式結(jié)束,而留給業(yè)界的思考和教訓(xùn)、經(jīng)驗卻會長久的流傳下去。
1、任何能引發(fā)單點故障的環(huán)節(jié)都需要有冗余系統(tǒng),無論看起來是否重要。
2、當(dāng)外網(wǎng)出現(xiàn)問題無法遠程運維的時候,應(yīng)該有可以進行訪問的內(nèi)網(wǎng)通道。
3、一個關(guān)于電鋸的問題:數(shù)據(jù)中心的物理安全措施同樣會受到系統(tǒng)故障的影響,應(yīng)該如何避免安全變成“掣肘”呢?