2021年10月4日,臉書及其旗下軟件經(jīng)歷了六個(gè)小時(shí)的中斷,包括WhatsApp、Instagram和Oculus VR。鑒于此事件的嚴(yán)重性,我們認(rèn)為不妨深入挖掘一下我們所依賴的一些互聯(lián)網(wǎng)技術(shù),以及有必要剖析一下發(fā)生的原因。從而幫助廣大客戶進(jìn)行自我診斷,分析自身IT架構(gòu)目前是否能夠避免此類事件,或者我們應(yīng)該如何盡量避免此類事件的發(fā)生,以便更好的引以為鑒。
為何宕機(jī)時(shí)間長(zhǎng)
首先,我們來分析一下為什么會(huì)中斷這么久,長(zhǎng)達(dá)數(shù)小時(shí)?主要原因是事故不僅使全球用戶的服務(wù)受到影響,更嚴(yán)重的是涉及到全系統(tǒng)使用的帶外系統(tǒng)維護(hù)平臺(tái)的主DNS也在過程中被切斷了訪問。無(wú)法遠(yuǎn)程登錄自己數(shù)據(jù)中心內(nèi)相關(guān)設(shè)備的結(jié)果是,只能去機(jī)房現(xiàn)場(chǎng)進(jìn)行恢復(fù)。
引用來自事故報(bào)告:“Our primary and out-of-band network access was down,so we sent engineers onsite to the data centers to have them debug the issue and restart the systems.”
為何無(wú)法遠(yuǎn)程登錄
那為什么無(wú)法遠(yuǎn)程登錄呢?因?yàn)?,除了BGP路由引起的骨干網(wǎng)故障以外,該服務(wù)提供商自己的權(quán)威DNS系統(tǒng)也“脫網(wǎng)”了。那權(quán)威DNS系統(tǒng)為什么會(huì)“脫網(wǎng)”呢?這是因?yàn)镈NS系統(tǒng)主動(dòng)注銷了自己的服務(wù)IP地址。那這又是為什么呢?結(jié)合公開資料的描述,我們分析此事件中的權(quán)威DNS估計(jì)是采用了IP anycast方式部署,該機(jī)制中通常會(huì)采用路由健康注入(Route Health Injection)方式,基于服務(wù)可用性,并利用BGP或OSPF動(dòng)態(tài)路由主動(dòng)發(fā)布和注銷服務(wù)IP地址的路由信息。因此,當(dāng)故障發(fā)生時(shí),由于權(quán)威DNS與內(nèi)部骨干網(wǎng)到所有數(shù)據(jù)中心服務(wù)器之間的路由通信故障,導(dǎo)致觸發(fā)了動(dòng)態(tài)路由更新,主動(dòng)注銷了通過BGP公告的所有DNS服務(wù)IP地址,使該服務(wù)提供商的互聯(lián)網(wǎng)服務(wù)完全斷開。
DNS方案建設(shè)問題及建議
權(quán)威DNS作為互聯(lián)網(wǎng)基礎(chǔ)服務(wù)系統(tǒng),是一個(gè)企業(yè)機(jī)構(gòu)IT架構(gòu)中非常重要的一個(gè)環(huán)節(jié),無(wú)論是面向互聯(lián)網(wǎng)的外網(wǎng)DNS,還是面向內(nèi)部網(wǎng)絡(luò)的內(nèi)網(wǎng)DNS系統(tǒng),我們?cè)谠O(shè)計(jì)和建設(shè)時(shí)一定要考慮如何提升其高可用性和安全性!通過此次事件,作為IT架構(gòu)的設(shè)計(jì)、決策和維護(hù)人員,我們需要思考以下幾個(gè)關(guān)鍵問題:
問題1:您的DNS系統(tǒng)是否單機(jī)房或單個(gè)云服務(wù)商部署?
F5建議:DNS系統(tǒng)要多中心或混合云部署,不把雞蛋放在一個(gè)籃子里
問題2:您的DNS系統(tǒng)是否內(nèi)外網(wǎng)隔離和獨(dú)立分域部署?
F5建議:內(nèi)外網(wǎng)DNS系統(tǒng)一定要分開獨(dú)立部署;同時(shí)業(yè)務(wù)面DNS與維護(hù)管理面DNS也一定要分開獨(dú)立部署;以免相互影響
問題3:您的DNS系統(tǒng)前端是否有專門針對(duì)DNS協(xié)議的安全防護(hù)體系?
F5建議:DNS系統(tǒng)一定要專門設(shè)計(jì)和部署針對(duì)DNS協(xié)議的安全防護(hù)設(shè)備,例如F5的高級(jí)防火墻AFM模塊(Advanced Firewall Manager)
問題4:您的DNS系統(tǒng)是否全部通過BGP或OSPF的路由健康注入方式進(jìn)行自我主動(dòng)發(fā)布和注銷?
F5建議:DNS系統(tǒng)作為一個(gè)公司的對(duì)外提供服務(wù)的核心基礎(chǔ)設(shè)施,應(yīng)考慮對(duì)多個(gè)Name Server(后簡(jiǎn)稱NS)地址采用組合的方式進(jìn)行對(duì)外公告,除了動(dòng)態(tài)發(fā)布的NS外,也考慮保留部分傳統(tǒng)方式公告的NS IP地址(DNS注冊(cè)機(jī)制允許在上級(jí)域名管理機(jī)構(gòu)注冊(cè)多個(gè)NS服務(wù)地址),避免此類事件發(fā)生時(shí)所有權(quán)威DNS,甚至帶外管理的DNS都不能提供服務(wù)。
問題5:您的DNS系統(tǒng)如何處理當(dāng)內(nèi)部骨干網(wǎng)絡(luò)出現(xiàn)部分或全部故障時(shí)對(duì)外部發(fā)起的域名解析請(qǐng)求的響應(yīng)?
F5建議:采用WideIP智能解析算法優(yōu)化DNS域名解析請(qǐng)求,為用戶返回最佳路徑的應(yīng)用服務(wù)器IP地址,對(duì)不能正常提供服務(wù)的服務(wù)器進(jìn)行篩選屏蔽。當(dāng)DNS認(rèn)為某一應(yīng)用的所有服務(wù)器IP地址均處于無(wú)法工作的狀態(tài)時(shí),可以選擇返回所有可能的服務(wù)器地址作為響應(yīng)結(jié)果給Local DNS或客戶端,允許客戶端自行嘗試連接目標(biāo)服務(wù),以規(guī)避由于權(quán)威DNS自身與內(nèi)部骨干網(wǎng)之間的故障導(dǎo)致的錯(cuò)誤判斷。(F5的DNS分布式集群解決方案還可以通過集群間的交叉健康檢查探測(cè)來進(jìn)一步篩選您部署在多中心、混合云內(nèi)的不同服務(wù)資源以及連接所有這些資源的多條線路間的健康情況,并通過智能解析算法提供最優(yōu)解,最大限度避免由于基礎(chǔ)設(shè)施的故障導(dǎo)致的整體服務(wù)故障)
問題6:您的DNS系統(tǒng)是否具有除路由與IP地址可用檢測(cè)手段以外的業(yè)務(wù)系統(tǒng)健康檢查能力?
F5建議:結(jié)合F5 DNS的分布式集群部署與LTM的豐富應(yīng)用負(fù)載及應(yīng)用級(jí)健康檢查能力實(shí)現(xiàn)多級(jí)且獨(dú)立的業(yè)務(wù)能力監(jiān)控與判斷糾錯(cuò)系統(tǒng),實(shí)現(xiàn)真正的DNS智能化,與業(yè)務(wù)實(shí)時(shí)服務(wù)能力的深度判斷。
如果以上幾個(gè)問題,您都有了比較放心滿意的答案,那就可以最大程度的避免此類事件的發(fā)生。讓我們一起構(gòu)建一個(gè)高可用、高可靠的IT架構(gòu)系統(tǒng)吧!
事件故障詳情參考資料:
1.https://engineering.fb.com/2021/10/04/networking-traffic/outage/
2.https://engineering.fb.com/2021/10/05/networking-traffic/outage-details/
3.https://blog.cloudflare.com/october-2021-facebook-outage/