項目背景
某股份制銀行,部分省份的用戶報告無法訪問該行手機銀行和主頁,排查發現通過DNS解析手機銀行和微信銀行等域名得到錯誤結果。
某企業用戶,內部用戶反饋部分域名無法解析,經排查,4G用戶可以正常解析,家庭寬帶用戶無法解析。
傳統DNS
VS
HttpDNS
傳統DNS
傳統的智能DNS解析過程利用地址庫來判斷用戶來源:
傳統的智能DNS存在被污染的可能:
HttpDNS
HttpDNS利用 Http 協議與 DNS 服務器交互,代替了傳統的基于 UDP 協議的 DNS 交互,繞開了運營商的 Local DNS,有效防止了域名劫持,提高域名解析效率。另外,由于 DNS 服務器端獲取的是真實客戶端 IP 而非 Local DNS 的 IP,能夠精確定位客戶端地理位置、運營商信息,從而有效改進調度精確性。
HttpDNS 主要解決的問題:
- Local DNS 劫持: 由于 HttpDNS 是通過 IP 直接請求 Http 獲取服務器 A 記錄地址,不存在向本地運營商詢問 domain 解析過程,所以從根本避免了劫持問題;
- 平均訪問延遲下降: 由于是 IP 直接訪問省掉了一次 domain 解析過程,通過智能算法排序后找到最快節點進行訪問;
- 用戶連接失敗率下降: 通過算法降低以往失敗率過高的服務器排序,通過時間近期訪問過的數據提高服務器排序,通過歷史訪問成功記錄提高服務器排序。
HttpDNS解析過程
- 將域名請求通過新的Http請求發向LTM;
- LTM接收到格式化的Http請求后,從中取出客戶端源地址+需要解析的域名;
- LTM重新發起新的DNS解析請求,以真實客戶端源地址作為DNS請求源地址,向GTM發起DNS解析;
- GTM在topology地址庫中根據真實客戶端源地址,獲得最優解析結果(對應最優DC/線路);
- GTM并將DNS解析結果發回給LTM;
- LTM將收到的DNS解析結果重新構造成Http response響應包,發回給客戶端。
技術架構及方案
三層架構,第一層LB負責HttpDNS VS池以及DNS監聽地址資源池的負載均衡
- 客戶端HttpDNS請求到達VS_HttpDNS,負載到后端HttpDNS VS 1或2;
- Layer VS將DNS請求發送到LB上的VS_DNS,負載到DNS 1或2;
- DNS 1或2響應DNS請求,通過Auto last hop回到LB;
- LB通過Auto last hop回到Layer VS;
- VS_HttpDNS應答client請求。
終端行為實現高可用
- 客戶終端發起Http://your-HttpDNS-vs-ip/?sip=1.1.1.1&dn=www.xxx.com.cn ,sip的HttpDNS請求中your-HttpDNS-vs-ip為靜態地址,HttpDNS服務發布多個公網地址后,終端請求多次失敗,主動發起對其他地址的請求;
- 傳統的智能DNS解析可作為HttpDNS請求全部失敗后的備用方式;
- 以上實現高可用的行為需終端軟件開發設計完成。
運維和監控
- 建議在Http-DNS層和GTM層通過HSL(高速日志引擎)將DNS相關日志實施輸出,通過外部日志分析工具(如ELK),構建DNS監控體系監控體系。
- Http-DNS層至少輸出HttpDNS請求信息,包括請求域名信息,源ip信息及響應情況;DNS層,輸出源ip信息,以及DNS域名信息,及響應情況。這兩層的F5設備輸出信息可以相互對應,都包含源ip信息,域名信息,響應信息。
- 更多的視圖可以包含實時解析統計,地理分布(請求、響應),線路統計,總解析數,失敗解析數,總響應數,失敗請求發生的最新時間以及對應query id,查詢類型柱狀圖,LDNS來源等信息。
傳統DNS
所有的域名請求到達ldns,通過ldns向GTM獲取解析結果,topology算法根據ldns地址給出智能解析結果。
HttpDNS
改造完成可以發出HttpDNS request請求的應用,通過Http 請求向啟用httpDNS的LTM獲取解析結果, topology算法根據client端地址給出智能解析結果。
HttpDNS的請求,在公網傳輸可使用Https加密,在request到達HttpDNS_VS之前完成ssl卸載即可。
關鍵的適用場景和收益
適用場景
- 適用于各種手機App以及C/S場合