Facebook宕机背后,我们该如何及时发现DNS问题
作者|白玙
在我們享受國慶假期的時候,大洋對岸的互聯網世界卻出了一件重大“事故”:Facebook 及其旗下 Instagram 和 WhatsApp 等應用全網宕機,停機時間將近 7 小時 5 分鐘,瀏覽器在嘗試打開時顯示 DNS 錯誤。這對于旗下應用群月活和日活高達 35.1 億和 27.6 億的 Facebook 而言,可謂損失慘重。據投資機構估計,7 小時宕機導致超過 9.68 億美元影響成本。并直接讓 Facebook 市值損失 643 億美元,其創始人馬克·扎克伯格凈資產蒸發 70 億美元。
Facebook 表示,故障根本原因是例行維護工作出了問題,協調數據中心之間網絡流量的骨干路由器配置變化,繼而導致其 DNS 服務器發生問題并致使內部工具和系統被關閉,運維人員無法遠程訪問設備以便恢復網絡。因此,運維人員不得不進入有著流程措施嚴格的數據中心進行人工重啟。因此,MTTR 被嚴重拖長。
一句話總結,一條糟糕的命令、一款有缺陷的審核工具、一套阻礙成功恢復網絡的 DNS 系統以及繁瑣的數據中心流程,共同導致了 Facebook 長達 7 個小時的重大故障。
具體而言,運維人員對骨干網絡的一部分進行斷網維護。例行維護的一部分就是評估全球骨干網容量的可用性,但無意間中斷開了骨干網絡所有連接,也斷開了 Facebook 全球數據中心的連接。與此同時, 由于 Facebook 的架構設計是根據服務器可用性來擴展或縮減 DNS 服務。當服務器可用性因網絡故障而降至零時,就會停用所有 DNS 服務器。自動響應骨干網崩潰似乎成為導致 DNS 癱瘓的原因。這種停用通過 Facebook 的 DNS 名稱服務器向互聯網邊界網關協議(BGP) 路由器發送消息來完成的,這些路由器存儲用來抵達特定 IP 地址的路由方面的信息。這些路由通常被公告給路由器,讓路由器了解如何適當地引導流量。
Facebook 的 DNS 服務器發送的 BGP 消息禁用了公告給路由,因此無法將流量解析成 Facebook 骨干網絡上的任何對應內容。最終結果就是,即使 DNS 服務器仍在運行,也訪問不了,用戶也會因試圖訪問的網絡崩潰而丟失服務。更不幸的是,DNS 服務用于面向客戶的網站,還將其用于自己的內部工具和系統。
看到這里我們會發現,DNS 在這其中扮演著重要的角色,那么 DNS 又是什么?DNS 即Domain Name System 的縮寫,域名系統以分布式數據庫的形式將域名和IP地址相互映射。簡單的說,DNS 是用來解析域名的,在正常環境下,用戶的每一個上網請求會通過 DNS 解析指向到與之相匹配的IP地址,從而完成一次上網行為。DNS 作為應用層協議,主要是為其他應用層協議工作的,包括不限于 HTTP 和 SMTP 以及 FTP,用于將用戶提供的主機名解析為 IP 地址,具體過程如下:
(1)用戶主機(PC 端或手機端)上運行著 DNS 的客戶端;
(2)瀏覽器將接收到的 URL 中抽取出域名字段,就是訪問的主機名,比如http://www.aliyun.com/ , 并將這個主機名傳送給 DNS 應用的客戶端;
(3)DNS 客戶機端向 DNS 服務器端發送一份查詢報文,報文中包含著要訪問的主機名字段(中間包括一些列緩存查詢以及分布式 DNS 集群的工作);
(4)該 DNS 客戶機最終會收到一份回答報文,其中包含有該主機名對應的IP地址;
(5)一旦該瀏覽器收到來自 DNS 的 IP 地址,就可以向該 IP 地址定位的 HTTP 服務器發起 TCP 連接。
Facebook 此次宕機持續近 7 小時影響了約 8500 萬用戶,是自 2008 年以來最嚴重的一次。作為旁觀者回顧這次故障,我們會發現一個非常關鍵的問題點:但據了解,當日不斷有用戶反映,Facebook 旗下 Facebook、移動聊天服務 Messenger 和 WhatsApp、圖片社交服務 Instagram 等四大社交平臺網站和應用均發生響應服務器錯誤,導致無法刷新。Facebook 在歐洲、美洲、大洋洲幾乎完全下線,在亞洲的日本、韓國、印度等國也無法訪問,影響到全球數十個國家和地區用戶。似乎 Facebook 似乎并沒有在第一時間發現這些問題。只在全球多個國家和地區用戶進行反饋后才發現了問題。
即使是龐大如 Facebook 這樣的企業,也沒有在第一時間發現 DNS 故障,并遭受嚴重的經濟損失。設身處地的面對這樣故障,我們該如何第一時間發現并監控產品以及 DNS 的運行狀況?并且及時了解全球不同國家和地區的用戶使用情況?
縱觀各類 APM 產品,無侵入的云撥測成為最佳的解決方案。阿里云撥測通過遍布全球的 1000+ 監測點,包括真實用戶監測,全天候 24 小時對目標域名發起網絡請求,幫助用戶監測 DNS 服務對可用性和解析性能,同時 DNS 撥測支持指定遞歸、迭代不同查詢方式以及解析服務器,通過靈活的撥測參數配置盡可能模擬真實用戶的訪問。
經過定時的撥測任務,阿里云撥測可以生成不同地區的 DNS 解析用時的報表,同時針對每次撥測都清晰的列出 DNS 請求對詳情,包括 A 地址、DNS 用時、DNS 解析過程等,能給幫助用戶快速分析和定位 DNS 解析的問題。
另外通過配置 DNS 告警,針對于 DNS 的可用性問題和解析性能問題,也可以先于用戶感知并問問題的修復爭取時間,提高用戶的滿意度,降低經濟損失。
想要避免類似的問題,那就開始使用云撥測吧!
部分內容引用自
1.《歐界丨Facebook出現史上最嚴重宕機,7個小時燒掉60億》
https://www.163.com/dy/article/GLI6PFA70552C1I4.html
2.《Facebook大故障原因》
https://baijiahao.baidu.com/s?id=1712926610001333324&wfr=spider&for=pc
總結
以上是生活随笔為你收集整理的Facebook宕机背后,我们该如何及时发现DNS问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新一代容器平台ACK Anywhere,
- 下一篇: 「 活动 」连续 3 天,企业容器应用实