導語
這個國慶假期互聯網最大的新聞就是某不存在的公司 Facebook 全線業務宕機了 7 個小時,這其中有一個不起眼但是很關鍵的原因是其權威 DNS 節點在檢測到部分網絡異常(可以理解為控制面異常)後進行自我剔除操作,所有 DNS 節點「集體自殺」,從而導致 Facebook 自身及其他使用其權威 DNS 服務的業務全線異常。這裡會簡單聊聊騰訊雲 DNSPod權威 DNS 的控制面異常時是如何處理的,包括曾經的思考與當前的實踐經驗,如何保障在出現類似問題的情況下儘量保障 DNS 服務的連續性,最終方案其實很簡單,一點都不高大上,但好在簡單實用。
控制面故障影響範圍分類
如何解決


在多個地區多個運營商部署了監控節點,對所有的權威 DNS 的 LB VIP 以及 RS 的物理 IP 持續進行撥測;
每一輪撥測前通過 API 對撥測域名添加一條 TXT 記錄,記錄值為當前撥測點當前時間戳;
正常情況下 DNSPod 所有的權威 DNS 節點的數據同步都是秒級的,所以一旦撥測結果與最新設置的記錄值不一致,則可以判斷該節點數據同步落後,並可以計算出落後的時長,匯總統計所有數據同步落後節點後發出告警,實現對 DNS 節點控制面是否正常的監控;
該監控可以同時對 DNS 節點的數據面是否能夠正常解析進行監控告警。
目前外部的監控節點對 DNS 服務器做的是完全黑盒撥測,很難自動判斷 DNS 節點控制面故障的真實原因,從而無法確定處理方式;
監控節點無法直接控制 DNS 服務器的行為,而通過控制中心處理的話,但是此時控制面已經異常了,可能會陷入死鎖無法處理,還是比如故障節點內網中斷的這個場景;
大部分異常節點已經可以自動恢復,無法自動恢復的告警發生頻率很低。
如果只是 LB + RS 集群中單獨某台 RS 故障,優先通過 LB 剔除;
如果LB異常或沒有LB(如直接的 OSPF 集群),有帶外,可以通過帶外方式登陸服務器,將該服務器剔除,剔除方式優先選擇停止 OSPF,如果沒有 OSPF,則可以考慮封禁數據面 53 端口的請求以及停止服務程序等方式;
沒有帶外或者帶外故障,如果該故障節點是 Anycast 節點,可以選擇在交換機等處取消 BGP 廣播下掉整個節點,需要能夠快速聯繫到網絡交換機相關負責人,且不會影響其他業務;
直接通過防護系統(宙斯盾)或運營商防護接口在某地域或全地域封禁該IP,此時雖然對應節點的 IP 不可用,但是 LocalDNS 可以通過文章開頭提到的 SRTT 機制去其他正常節點請求,不影響總體解析;
前面的處理方式都有一個前提,就是其他節點容量足夠,但是如果剩餘節點容量不足怎麼辦,此時處理方案是不對 DNS 節點進行下線處理,雖然可能導致部分 DNS 請求會解析到過時的記錄,但是有變化的記錄畢竟是少數,需要優先保證整個大盤的解析正常。此場景在某些極端情況下有一定的出現的可能,比如整個平台遭受持續超大量的 DDoS 攻擊時,同時這台服務器出現了控制面故障,根據具體情況評估影響後可能採取此不處理下線的方式;
在權威解析控制台及註冊局(商)出刪除該 IP,因為 TTL 很長,一般不考慮。
SMB
騰訊雲中小企業產品中心
騰訊雲中小企業產品中心(簡稱SMB),作為騰訊雲體系中唯一專業服務於8000萬中小企業的業務線,致力於為中小微企業提供全面完善貼心的數字化解決方案。產品線覆蓋了企業客戶從創業起步期、規範治理期、規模化增長期、戰略升級期等全生命周期,針對性的解決企業的信息化、數字化、智能化的生產力升級需求。本中心還擁有兩大獨立騰訊子品牌:DNSPod與Discuz!,在過去15年間,為超過500萬企業級客戶提供了強大、優質、穩定的IT服務。
SMB團隊成員大多都有過創業經歷,有獲得過知名VC數千萬投資的,有被一線互聯網巨頭以數千萬全資收購的,也有開設數十家分公司後技術轉型而失敗倒閉的,我們成功過,也失敗過,我們深知創辦企業的難處與痛點,深刻的理解中小企業該如何敏捷起步、規範治理、規模化增長與數字化升級發展,我們會用自己踩坑的經驗給出最適合你的答案。
騰訊雲中小企業產品中心,助力中小企業數字化升級的好夥伴。
