博客 / 詳情

返回

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

簡介: 國慶期間,Facebook 及其旗下 Instagram 和 WhatsApp 等應用全網宕機,停機時間將近 7 小時 5 分鐘,Facebook 市值損失 643 億美元。針對Facebook的宕機問題,我們該如何未雨綢繆,看看雲撥測如何幫助客户避免該類問題。

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

image.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 撥測支持指定遞歸、迭代不同查詢方式以及解析服務器,通過靈活的撥測參數配置儘可能模擬真實用户的訪問。

image.png

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

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

image.png

原文鏈接
本文為阿里雲原創內容,未經允許不得轉載。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.