1.三層網絡架構

為了適應云時代的敏捷開發和迭代,應用架構與網絡架構解耦,跨中心的數據訪問從大二層網絡改為三層網絡。

2.統一域名訪問

在三層網絡下,沒有全局可用的浮動IP地址作為統一出入口,全棧云應用需要轉變為統一采用域名方式提供服務和訪問。

3.應用多活架構、分布式改造

全棧云采用多可用區架構建設,為應用多活、分布式系統提供跨數據中心、跨異地的多活部署能力,其中分布式域名解析能力作為全棧云平臺的基礎核心能力之一,提供區域就近訪問、輪詢等多種智能域名解析算法,貼近應用需求。域名解析服務在用戶與服務端之間、在應用與底層網絡架構之間加了一層緩沖,所有的訪問請求流量第一步先到達DNS進行域名解析,由DNS給予其對應的IP資源,之后才是真正的業務數據流量的交互;數據中心災備、多活數據中心可依托于分布式智能DNS系統的智能解析與流量調度指引。

4.自主可控

當前我國各領域使用的DNS軟件多為基于開源DNS版本進行的二次研發,存在較大的信息安全風險。全棧云作為光大銀行下一代基礎設施,域名解析服務必須搭建在安全可控的基礎上,并具備完全自主可控的能力。

建設目標

隨著分布式成為主流的系統架構設計方案,大規模分布式系統的穩定性保障能力越來越成為業界關注的重點,穩定性工作貫穿軟件生命周期的全過程,從故障的視角來看,穩定性建設的最終目標是“降發生”和“降影響”,即降低故障發生的概率、降低故障發生后的影響范圍。圍繞穩定性建設目標,穩定性建設思路主要包括了四大建設模式:良好的系統架構和實現、合理的容量規劃設計、完備的運維方案設計,以及規范的安全設計。

結合背景及全棧云應用需求,分布式智能DNS主要建設目標如下:

●分布式智能DNS系統穩定性,提供分布式智能解析能力;

●采用分布式系統穩定性建設模式,“降發生”和“降影響”;

●良好的系統架構和容量設計;

●具備自主可控能力和安全設計;

●完備的運維方案設計。

選型及部署架構

通過結合業界技術產品情況,具備采用自主可控DNS作為全棧云-分布式智能DNS服務的條件(見圖1)。

圖1    主流DNS與自主可控DNS對比

作為分布式智能DNS系統,需要考慮關乎分布式系統穩定性的核心要素,影響分布式系統穩定性的核心要素主要有以下幾點。

1.去除單點

全棧云分布式智能DNS系統采用多機房、多可用區(AZ)、多節點,兩套獨立分布式智能DNS系統(另一套待建設)等設計方案,避免了包括硬件單點、存儲單點、網絡單點、機房單點、基礎技術單點、內部服務單點等隱患。

2.依賴設計

高等級服務不允許強依賴于低等級的服務或資源。全棧云分布式智能DNS系統作為行內的二級DNS,面向全棧云應用提供域名解析服務,向上只依賴于全行DNS根節點,納入全行DNS統一管理序列。

3.數據保護設計

具備兩級數據保護能力:

一是通過部署探測節點可以自動對業務數據(應用域名)進行一致性校驗,并自動備份為hosts文件,可保證業務數據完整性、一致性。

二是具備定期系統級整體數據備份,單機房災難情況下可分鐘級整體恢復。

4.災備設計

分布式智能DNS系統是全棧云關鍵基礎設施,采用兩級災備+逃生方案設計。

第一級災備:

系統內分DNS管理節點、DNS解析節點角色。DNS管理節點負責配置、分發系統配置給解析節點,自身具備解析能力但不做解析服務。管理節點采用同城熱備+異地熱備災備架構。

某臺管理節點出現故障既不影響系統管理能力也不影響應用解析服務。

全部管理節點出現故障只影響系統管理能力(無法新增應用域名配置),但不影響應用解析服務(不影響為存量應用域名提供解析服務)。

DNS解析節點接受來自于管理節點的配置數據,專門負責應用域名的解析服務,并且在全棧云每個數據中心的每個可用區都有部署,只要有1臺解析節點正常就能保證應用域名解析服務能正常進行。

第二級災備(待建設):

在設計階段,考慮極端情況下系統整體出現問題,所有DNS管理節點、DNS解析節點全部故障的情況下,除系統整體恢復方案外,在不考慮成本的情況下,可在全棧云內再建設一個獨立分布式智能DNS系統B(已建設的為系統A),A、B兩系統完全獨立,具備故障隔離并隨時獨立為全棧云應用提供分布式智能域名解析能力。

日常只用系統A提供分布式智能域名服務,系統B只做熱備不提供服務。通過云管平臺同時對A、B兩個系統同步做變更和管理。在災備演練或A系統出現問題時,可分鐘級平滑切換到B系統,接管A系統繼續提供分布式智能域名解析服務。

逃生方案設計:

在A、B兩套分布式智能DNS系統全部出現問題時,應用域名解析服務仍然需要最后的手段來保障,上文數據保護設計中提到的hosts文件,可以直接用來下發到應用系統中,把所有域名記錄追加到系統/etc/hosts文件后,仍然可以最大限度保障應用域名解析服務不受影響(除某些需要特殊算法的域名外)。

5.彈性設計和安全設計

系統/組件間不具有強依賴關系,也不具有共享資源的場景,具備防止故障從一個系統/組件傳播到另一個系統/組件的能力。通過IP解析限速、域名解析限速、緩存安全防護、黑名單、白名單、最小權限訪問等機制可實現系統自身的安全保障,在需要時實現域名解析服務降級、限流與熔斷能力。

6.容量設計

容量設計的目的是根據業務優先級、資源消耗情況等合理評估及分配資源,良好的容量設計可以提升核心業務穩定同時帶來成本節約。

根據業務發展需要,綜合考慮單臺DNS解析節點能力、域名查詢請求數(QPS)、域名查詢并發遞歸能力,DNS解析節點的分布式部署方式可以在不影響現有域名解析的情況下實現單臺或多臺DNS解析節點透明擴容(管理節點只做簡單的管理配置,不做解析服務),滿足海量高并發的域名查詢要求。

全棧云-分布式智能DNS系統整體架構設計和部署示意圖詳見圖2。

圖2    全棧云-分布式智能DNS系統

整體架構設計和部署示意圖

運維方案設計

考慮系統上線后持續迭代發布變更以及運維訴求,做到變更可控、流程可控、演練到位、可觀測性&監控應急處置等能力。

1.變更可控

全棧云-分布式智能DNS系統自身通過自研工具變更,已實現多個原子封裝變更工具,可以實現包括新增、修改、刪除動態/靜態域名記錄配置、全局地址池、健康檢測、數據中心服務、解析同步組、遠程認證策略、用戶權限管理、域名記錄用戶授權、用戶區域、就近訪問策略等約50種類型變更。

2.流程可控

通過自研云管平臺,對分布式智能DNS系統進行納管,云管平臺作為統一入口,對所有平臺操作流程進行管控,后端調用上述的變更工具進行標準化、模板化操作。在A、B兩套獨立分布式智能域名解析系統的情況下,云管平臺可對A、B兩套獨立系統分別進行單立配置,實現A、B系統具備獨立的操作邏輯,從入口即實現A、B系統配置獨立,這樣從部署實體到操作配置均實現A、B兩套分布式智能DNS系統完全獨立,完全解耦,真正實現系統級冗余。

3.系統軟件版本升級

DNS管理節點域DNS解析節點角色分離設計,以及DNS解析節點全局服務能力可以實現系統內的DNS解析節點灰度變更/升級/回滾(管理節點只做簡單的管理配置,不做解析服務,升級時不影響應用域名解析)。

A/B兩個獨立部署系統設計方案,可以支持系統間灰度變更/升級/回滾。

4.可觀測性&監控應急處置

DNS產品自身具備完善的日志、監控指標等基礎的可觀測性手段,全面分析架構特點后,梳理出60余項監控能力及11種應急處置場景。另外通過在DNS管理節點、DNS解析節點部署全棧云流量采集分析工具,充分復用全棧云自身的可視化流量分析能力,補充了全棧云平臺內DNS流量全鏈路追蹤能力,可及時掌握域名解析請求實時運行情況并及時定位處理問題。

總結與展望

全棧云平臺作為光大銀行最重要的基礎設施之一,自身的安全穩定性至關重要。作為全棧云平臺服務能力之一的分布式智能DNS系統,在考慮使用需求和全面自主可控的前提下,基于分布式系統穩定性建設目標、建設模式指引下設計并完成了系統的建設,已正式上線并全面提供服務,經過模擬演練圓滿實現了預期的效果。下一步,我們將繼續探索全棧云上智能DNS的高階應用,通過智能DNS實現云上應用的引流、隔離等場景,無需通過應用啟停實現云上應用優雅的切換。