□ 文 程東亮
隨著互聯網與信息技術的不斷發展,互聯網金融行業呈現出快速發展的勢態。為保障金融服務7*24小時不間斷連續運營,減少正常與非正常的停機對業務可用性造成的影響,金融行業尤其是銀行業高度重視災備系統建設。
為實現數據中心的高可用性和連續性,銀行業一般采用同城兩中心或“兩地三中心”(生產中心、同城災備中心和異地災備中心)的布局,且一般只有其中一個數據中心運行在主用(active)狀態,其余中心為備用狀態或僅實現數據備份的狀態。這種數據中心主備運行模式,災備接管能力較弱,很難達到預期的災備系統RTO(Recovery Time Object)和RPO(Recovery Point Object),備份中心只有在故障或災難時才能起到作用,無法得到充分有效利用,也存在IT資源和資金的浪費。

表1 基于DNS的雙活模型與基于RHI的IP雙活模型的技術對比表
雙活甚至多活數據中心技術由此應運而生,成為災備實踐中熱點。對于雙活(或多活)數據中心而言,如果一個數據中心出現故障,另外一個或多個數據中心還能夠對外提供服務,此時業務的實時切換對用戶而言不可感知,業務幾乎不受影響。除此之外,兩個或多個數據中心同時對外提供業務生產和災備服務,運行在“activeactive”狀態,其服務能力是雙倍或多倍的,所有的資源都得到了有效利用,也在一定程度上節省了資金。
多活數據中心以其更高的可靠性、服務能力和資源利用率,成為多數據中心結構下的最理想運行方式。以雙活為例,為實現應用在兩個數據中心的“雙活”,在網絡層面,前端網絡對業務的感知能力和對應用流量的牽引是技術重點。
要實現應用在兩個數據中心的“雙活”,應用系統對外的IP地址或DNS域名必須唯一?;诮】德酚勺⑷耄≧HI)的IP雙活模型和基于智能DNS的全局負載均衡(GSLB)模型是最主要的兩種雙活模型。其技術詳細對比情況如表1所列。
由于IP多活方式只能實現業務的主備模式且存在功能性、靈活性不夠等缺點,故“多活”應用應采用基于智能DNS技術的全局負載均衡技術。
GSLB是英文Global Server Load Balance的縮寫,意思是全局負載均衡。其作用是實現在廣域網(包括互聯網)上不同地域的服務器間的流量調配,保證使用最佳的服務器服務離自己最近的客戶,從而確保訪問質量。
智能DNS配合GSLB是實現多活數據中心的技術基礎?;谥悄蹹NS服務的多活數據中心網絡實現原理是:利用智能DNS解析技術,業務應用以唯一域名方式為所有發布相同服務的數據中心提供統一的入口,依據預先設定的負載策略,將客戶端訪問請求分配到不同數據中心,從而實現數據中心站點間的負載均衡調度。具體來說,在用戶發出任何應用連接請求時,首先必須通過DNS請求獲得服務器的IP地址,基于DNS的GSLB在返回DNS解析結果的過程中進行智能決策,給用戶返回一個最佳的服務IP。
采用智能DNS的GSLB方案,網絡拓撲、網絡路由、IP地址基本不需要改造。要求應用環境基于域名發布業務,同一應用可使用不同IP地址。其全局實現模型如圖1所示。
模型中,全局GSLB設備一般部署在用戶訪問的入口位置(廣域網入口),有服務器負載均衡(SLB)需求的,在相應的匯聚層部署SLB設備即可。每個DC的VIP A和VIP B對外提供服務。SLB檢查服務器健康狀況后和GSLB配合實現DNS切換。GSLB1和GSLB2完成各數據中心的狀態監控、路徑優化和負載均衡。各中心GSLB設備須互聯互通,相互同步配置信息,發布本中心的健康狀態。
具體業務流程為:(1)用戶向Local DNS發起域名請求。Local DNS采用輪詢方式將域名請求發給網絡中的GSLB設備進行處理。(2)GSLB根據預先設定的策略(如基于IP就近性算法或者動態探測或一定比例的負載分配等等),對DNS請求信息進行智能處理,然后將域名解析結果返回給Local DNS,Local DNS將域名解析結果返回給客戶端。(3)GSLB根據算法返回數據中心A中心的VIP A地址,通過本地應用負載均衡的處理機制(SLB),保障應用的高可用性和針對后臺服務器的負載分擔。(4)客戶訪問數據中心A。
通過GSLB的全局應用智能調度,不僅能監控各數據中心健康狀況、提高應用可靠性,客戶端訪問請求也可以按兩中心站點業務能力不同進行一定比例的負載分配,提高應用性能。

圖1 基于智能DNS的GSLB數據中心多活網絡實現模型
為保障銀行業網絡的安全穩定及業務的持續不間斷運行,在現有數據中心模式中應用實踐基于智能DNS的GSLB技術時,需要重點考慮以下六個方面問題。
無論是通過在專網中運行內部的DNS服務器,還是在Internet上公網應用,應用系統必須以域名形式發布,這個技術改動對新、舊業務難度不大,但在銀行業應用系統中必須充分測試。只有實現應用IP與數據中心網絡位置的解耦合,才能達到同時靈活訪問各個數據中心的目的。
DNS緩存更新不及時可能影響故障時切換訪問,導致雙活訪問不成功。當某個數據中心出現故障時,GSLB感知后會立即更新DNS解析記錄,然而DNS緩存的存在導致PC客戶端仍舊解析為錯誤的IP地址,直至緩存過期后更新為正確解析記錄,此期間業務訪問可能中斷。
DNS緩存時間涉及本機DNS緩存、本地域名服務器緩存、注冊商DNS服務器緩存。本機DNS緩存主要包括瀏覽器或操作系統(如windows系列)DNS緩存,更新時間從1分鐘至30分鐘不等,此時一旦發現訪問故障,可以關閉瀏覽器或輸入強制刷新DNS命令或重啟PC實現快速切換,部分自行開發APP應用甚至可以自動清空本地DNS緩存實現快速刷新。本地域名服務器緩存、注冊商DNS服務器緩存可以通過TTL(Time-to-live)值實現快速刷新,即GSLB在第一時間發現故障后,立即更新DNS記錄為正確的IP,并通過設置TTL值通告給注冊商DNS和本地域名服務器。一般互聯網門戶網站設置更新值為30秒,對于在內網中自行架設的DNS服務器,可以自主設置緩存時間為合理數值(如2分鐘),實現故障時快速感知。疏漏DNS緩存更新容易導致故障第一時間切換不成功,影響整體網絡的平穩不間斷運行,金融行業務必高度重視。


每個域名最多可以有六條記錄,一般用2條就足夠實現“雙活”。對于GSLB,在返回DNS解析結果時可以包含多個A記錄,應用一般會使用第一條A記錄。當發生故障時,PC機可以自動切換至其他IP解析記錄,實現更快速的故障切換。
一般而言,對于同一個客戶端,尤其是與用戶狀態有關的操作,比如金融交易,應全部通過GSLB定向到同一臺服務器進行處理,以保持會話(session)一致性,否則“多活”應用會出問題。此時,一般采用客戶端源IP會話保持(客戶端源IP可以區分,同一個源IP被認為是同一個用戶)或Cookie會話保持(利用應用層HTTP投中的Cookie進行會話保持)。
金融行業對網絡設備性能的選擇有更高的要求,基本原則是滿足現狀和未來需求,適當留有余地。如果GSLB處理的是4層或7層報文,建議按照7層性能來考慮設備選型參數,并為未來預留2-3倍性能空間。
2017年,《網絡安全法》的頒布對關鍵金融基礎設施提出了明確的國產化及自主可控的要求,其中第22條明確規定:“網絡產品、服務應當符合相關國家標準的強制性要求”。GSLB是目前銀行業使用較多的核心關鍵設備,硬件設備實現方式的基本以國外F5、Radware、A10等為主,除價格高昂外,還存在核心技術受制于人等安全隱患問題。比如,2012年,F5曾出現過“root用戶權限驗證繞過”高危漏洞。目前,國產廠商通過自身技術積累和產品實踐,已出現較多品牌產品,在實踐中取得較好效果,可以逐步考慮。

新技術的廣泛應用和成熟,不斷沖擊著傳統金融技術架構,“雙活”和“多活”數據中心逐漸成為IT架構的主流。雖然“雙活”和“多活”數據中心的可靠性、性能優勢明顯,但在銀行業數據中心從現有模式向新型模式轉換,其具體落地實現還需要經過長期摸索和復雜建設。本文提出的基于智能DNS的全局負載均衡技術,能通過流量調度很好的實現應用分布式多活架構,是一個值得嘗試和探索的重要方向。■
參考文獻:
[1] 林秀.業務雙活數據中心網絡設計要點探討[J].電信技術,2016(3):60-63.
[2] 藍發寬.基層央行數據中心“雙活”探討[J].金融科技時代,2016(10):39-42.
[3] 范媛媛.銀行多活數據中心網絡關鍵技術研究[J].中國金融電腦,2017(03):61-64.
[4] 肖平.談基于DNS發布業務的雙活數據中心業務[J].數字通信世界,2016(08):43.
[5] 楊肖敏, 龔新平. 私有云數據中心多站點選擇技術研究[C].中國計量協會冶金分會2015年會論文集,2015.