Facebook當機背後,我們該如何及時發現DNS問題

阿里巴巴雲原生發表於2021-10-11

作者|白璵

在我們享受國慶假期的時候,大洋對岸的網際網路世界卻出了一件重大“事故”:Facebook 及其旗下 Instagram 和 WhatsApp 等應用全網當機,停機時間將近 7 小時 5 分鐘,瀏覽器在嘗試開啟時顯示 DNS 錯誤。這對於旗下應用群月活和日活高達 35.1 億和 27.6 億的 Facebook 而言,可謂損失慘重。據投資機構估計,7 小時當機導致超過 9.68 億美元影響成本。並直接讓 Facebook 市值損失 643 億美元,其創始人馬克·祖克伯淨資產蒸發 70 億美元。

1.png

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 撥測支援指定遞迴、迭代不同查詢方式以及解析伺服器,通過靈活的撥測引數配置儘可能模擬真實使用者的訪問。

2.png

經過定時的撥測任務,阿里雲撥測可以生成不同地區的 DNS 解析用時的報表,同時針對每次撥測都清晰的列出 DNS 請求對詳情,包括 A 地址、DNS 用時、DNS 解析過程等,能給幫助使用者快速分析和定位 DNS 解析的問題。

另外通過配置 DNS 告警,針對於 DNS 的可用性問題和解析效能問題,也可以先於使用者感知並問問題的修復爭取時間,提高使用者的滿意度,降低經濟損失。

3.png

想要避免類似的問題,那就開始使用雲撥測吧!

部分內容引用自
1.《歐界丨Facebook出現史上最嚴重當機,7個小時燒掉60億》
https://www.163.com/dy/articl...
2.《Facebook大故障原因》
https://baijiahao.baidu.com/s...

相關文章