分布式數(shù)據(jù)中心網(wǎng)絡(luò)系統(tǒng)雙活解決方案
伴隨著數(shù)據(jù)大集中、業(yè)務(wù)應(yīng)用不斷增多、以及用戶對(duì)業(yè)務(wù)連續(xù)性要求的不斷提高,分布式雙活數(shù)據(jù)中心日益越來(lái)越受到用戶的關(guān)注。
傳統(tǒng)主-備模式的數(shù)據(jù)中心只是簡(jiǎn)單的軟硬件資源的堆砌。正常情況下,主用數(shù)據(jù)中心對(duì)外提供業(yè)務(wù),備用數(shù)據(jù)中心處于閑置狀態(tài)。只有在發(fā)生災(zāi)難宕機(jī)的情況下,業(yè)務(wù)系統(tǒng)才從主用中心遷移到備用中心來(lái)。然而,災(zāi)難往往只是小概率事件,企業(yè)投入大量人力和物力建設(shè)的備用中心大多時(shí)候都是處于閑置狀態(tài),資源使用率極低。更為重要的是,主-備模式的數(shù)據(jù)中心的RTO和RPO無(wú)法保證業(yè)務(wù)的連續(xù)性。無(wú)論采用怎樣的優(yōu)化方式,主-備模式的建設(shè)思路對(duì)高可用性的提高、業(yè)務(wù)連續(xù)性的保證只能實(shí)現(xiàn)量變,卻一直沒(méi)有實(shí)質(zhì)性的跨越。
分布式雙活數(shù)據(jù)中心的出現(xiàn),讓我們找到了優(yōu)化投資利用率、保證業(yè)務(wù)連續(xù)性的新思路。然而,建設(shè)分布式雙活數(shù)據(jù)中心需要網(wǎng)絡(luò)系統(tǒng)、存儲(chǔ)系統(tǒng)、計(jì)算資源甚至包括應(yīng)用系統(tǒng)等多個(gè)IT系統(tǒng)之間緊密合作,是一個(gè)龐大的系統(tǒng)工程。本文將詳細(xì)介紹分布式雙活數(shù)據(jù)中心的第一塊敲門磚——網(wǎng)絡(luò)系統(tǒng)雙活的部署方案。
簡(jiǎn)單來(lái)講,網(wǎng)絡(luò)系統(tǒng)雙活主要由以下兩大部分技術(shù)構(gòu)成。
- 數(shù)據(jù)中心間大二層網(wǎng)絡(luò)技術(shù)——EVI。通過(guò)大二層網(wǎng)絡(luò),可以實(shí)現(xiàn)跨數(shù)據(jù)中心的集群、資源共享和故障探測(cè),它是保證故障發(fā)生后到故障切換中間過(guò)程不丟包的重要手段。在數(shù)據(jù)中心之間建設(shè)一張?zhí)摂M的大二層網(wǎng)絡(luò)是實(shí)現(xiàn)網(wǎng)絡(luò)雙活的基礎(chǔ)
- 負(fù)載均衡技術(shù)。通過(guò)負(fù)載均衡技術(shù),可以實(shí)現(xiàn)流量在不同數(shù)據(jù)中心間的調(diào)度以及在單數(shù)據(jù)中心內(nèi)多服務(wù)器的負(fù)載分擔(dān);同時(shí),負(fù)載均衡設(shè)備也是探測(cè)業(yè)務(wù)故障實(shí)現(xiàn)自動(dòng)切換的關(guān)鍵實(shí)現(xiàn)點(diǎn)。
一、 數(shù)據(jù)中心間大二層技術(shù)——EVI
實(shí)際生產(chǎn)環(huán)境中,企業(yè)往往已經(jīng)建設(shè)了同城雙中心甚至是兩地三中心,但是還沒(méi)有實(shí)現(xiàn)二層擴(kuò)展,因此需要使用EVI實(shí)現(xiàn)大二層擴(kuò)展。EVI是一種先進(jìn)的“MAC in IP”技術(shù),用于實(shí)現(xiàn)基于IP核心網(wǎng)絡(luò)的L2VPN技術(shù)。多數(shù)據(jù)中心間通過(guò)EVI技術(shù)在站點(diǎn)的邊緣設(shè)備上維護(hù)路由和轉(zhuǎn)發(fā)信息,而無(wú)需改變站點(diǎn)內(nèi)部和核心網(wǎng)絡(luò)。
EVI整體網(wǎng)絡(luò)由核心網(wǎng)絡(luò)、站點(diǎn)網(wǎng)絡(luò)和虛擬網(wǎng)絡(luò)組成(如圖1所示):

圖1 EVI網(wǎng)絡(luò)模型
- 核心網(wǎng)絡(luò)是主要由IP路由設(shè)備承載的提供站點(diǎn)網(wǎng)絡(luò)之間互聯(lián)的網(wǎng)絡(luò);
- 站點(diǎn)網(wǎng)絡(luò)是通過(guò)一臺(tái)或者多臺(tái)邊緣設(shè)備連接到核心網(wǎng)絡(luò)、具有獨(dú)立業(yè)務(wù)功能的二層網(wǎng)絡(luò),通常由單個(gè)組織管理控制,主要由主機(jī)和交換設(shè)備組成,邊緣設(shè)備提供站點(diǎn)之間的二層交換功能;
- 虛擬網(wǎng)絡(luò)是站點(diǎn)邊緣設(shè)備之間建立的虛擬二層網(wǎng)絡(luò),提供站點(diǎn)網(wǎng)絡(luò)之間的二層互聯(lián),相互通告連接到邊緣設(shè)備所有主機(jī)和路由器的MAC地址,將多個(gè)站點(diǎn)互聯(lián)形成更大的二層轉(zhuǎn)發(fā)域;虛擬網(wǎng)絡(luò)實(shí)現(xiàn)VLAN在不同站點(diǎn)之間的擴(kuò)展,主要由虛擬接口和虛擬連接組成,在數(shù)據(jù)平面承載站點(diǎn)間擴(kuò)展的VLAN的二層流量,在控制平面通過(guò)IGP協(xié)議在站點(diǎn)之間通告主機(jī)和路由器的MAC地址可達(dá)性信息,管理平面通過(guò)鄰居發(fā)現(xiàn)協(xié)議來(lái)實(shí)現(xiàn)站點(diǎn)的自動(dòng)發(fā)現(xiàn)功能,簡(jiǎn)化網(wǎng)絡(luò)配置管理工作。另外,虛擬網(wǎng)絡(luò)還實(shí)現(xiàn)了ARP、未知單播、組播流量?jī)?yōu)化功能來(lái)減少?gòu)V播流量對(duì)帶寬的占用以及對(duì)服務(wù)器資源的消耗。
通常,數(shù)據(jù)中心內(nèi)部不同的VLAN承載不同的業(yè)務(wù)功能,而需要擴(kuò)展的數(shù)據(jù)中心站點(diǎn)也不完全相同。EVI通過(guò)虛擬網(wǎng)絡(luò)支持多實(shí)例功能,不同實(shí)例的控制平面協(xié)議交互以及數(shù)據(jù)平面流量轉(zhuǎn)發(fā)完全隔離。每個(gè)實(shí)例表示一個(gè)VPN,使用Network ID來(lái)唯一標(biāo)識(shí)。如圖2所示定義了三個(gè)VPN實(shí)例。

圖2虛擬網(wǎng)絡(luò)多實(shí)例示意
(如圖3所示)在需要二層擴(kuò)展的數(shù)據(jù)中心邊緣加入支持EVI的互連設(shè)備,不需要對(duì)原有數(shù)據(jù)中心架構(gòu)做大的改動(dòng),只要EVI邊緣設(shè)備之間IP可達(dá),就可以在核心網(wǎng)上構(gòu)建一張?zhí)摂M的二層網(wǎng)絡(luò)。這樣簡(jiǎn)單靈活的擴(kuò)展方式大大簡(jiǎn)化了用戶實(shí)際部署的復(fù)雜度,并且對(duì)現(xiàn)網(wǎng)生產(chǎn)業(yè)務(wù)的影響減少到最小。

圖3 EVI典型組網(wǎng)圖
通過(guò)EVI技術(shù),可以在多個(gè)物理形態(tài)的數(shù)據(jù)中心之間建設(shè)一張?zhí)摂M的大二層網(wǎng)絡(luò),將多個(gè)物理數(shù)據(jù)中心里的資源虛擬為一個(gè)虛擬數(shù)據(jù)中心對(duì)外提供服務(wù)。
二、 負(fù)載均衡技術(shù)
實(shí)現(xiàn)靈活業(yè)務(wù)流量調(diào)試,有兩個(gè)主要的設(shè)備:GTM和LTM。GTM(Global Traffic Manager,全局負(fù)載均衡設(shè)備)主要完成用戶解析DNS功能;LTM(Local Traffic Manager,本地負(fù)載均衡設(shè)備)主要負(fù)責(zé)對(duì)內(nèi)部服務(wù)器健康狀態(tài)檢查、將訪問(wèn)流量分擔(dān)到不同服務(wù)器以及出口流量的鏈路負(fù)載分擔(dān)。GTM可以和LTM聯(lián)動(dòng),當(dāng)LTM檢測(cè)到本設(shè)備管轄的服務(wù)器資源故障,不能對(duì)外提供服務(wù)時(shí),GTM可以對(duì)DNS解析做替換。同時(shí)LTM會(huì)實(shí)時(shí)保持與GTM聯(lián)動(dòng),將檢測(cè)到的服務(wù)器健康狀況上報(bào)給GTM。
針對(duì)用戶不同的業(yè)務(wù)發(fā)布模式,我們細(xì)分了以下兩種建設(shè)場(chǎng)景。
1. 場(chǎng)景一:基于DNS發(fā)布業(yè)務(wù)的雙活

圖4基于DNS發(fā)布業(yè)務(wù)的雙活數(shù)據(jù)中心
(如圖4所示)基于DNS發(fā)布業(yè)務(wù)的數(shù)據(jù)中心網(wǎng)絡(luò)雙活主要由以下五部分完成:
①GTM通過(guò)就近性探測(cè)實(shí)現(xiàn)客戶端訪問(wèn)路徑的優(yōu)化;
②GTM根據(jù)就近性探測(cè)結(jié)果實(shí)現(xiàn)數(shù)據(jù)中心之間流量分擔(dān);
③LTM對(duì)服務(wù)器進(jìn)行健康檢查并上報(bào)給GTM;
④GTM根據(jù)LTM上報(bào)的服務(wù)器狀態(tài)實(shí)現(xiàn)業(yè)務(wù)的自動(dòng)切換;
⑤LTM實(shí)現(xiàn)對(duì)多鏈路出口的選擇;
步驟①和②主要是DNS解析的過(guò)程。正常情況下,GTM上記錄了A和B兩個(gè)數(shù)據(jù)中心入口的IP地址。當(dāng)有用戶解析業(yè)務(wù)的IP地址時(shí),GTM會(huì)根據(jù)設(shè)置的策略向用戶返回不同IP地址。這樣,用戶訪問(wèn)流量可以分擔(dān)到兩個(gè)數(shù)據(jù)中心中。這個(gè)策略可以是根據(jù)兩個(gè)數(shù)據(jù)中心當(dāng)前的負(fù)載情況,也可以是根據(jù)用戶所在地域?qū)⒂脩粢龑?dǎo)至不同的數(shù)據(jù)中心??傊?,GTM提供了豐富的選擇策略用于調(diào)度兩個(gè)中心的訪問(wèn)流量。

圖5 DNS解析流程
如圖5所示為用戶訪問(wèn)網(wǎng)站www.h3c.com.cn DNS解析過(guò)程說(shuō)明舉例??梢?jiàn),當(dāng)?shù)谝粋€(gè)用戶訪問(wèn)業(yè)務(wù)時(shí),GTM返回?cái)?shù)據(jù)中心A的IP地址,流量進(jìn)入數(shù)據(jù)中心A。當(dāng)?shù)诙€(gè)用戶訪問(wèn)業(yè)務(wù)時(shí),GTM可以返回?cái)?shù)據(jù)中心B的IP地址,這樣流量就進(jìn)入了數(shù)據(jù)中心B。通過(guò)這種最簡(jiǎn)單的輪詢機(jī)制,實(shí)現(xiàn)用戶流量在兩個(gè)數(shù)據(jù)中心間智能調(diào)度,同時(shí)可以在GTM上設(shè)置更為復(fù)雜的調(diào)度策略。
步驟③和⑤主要由LTM完成。LTM會(huì)實(shí)時(shí)的檢測(cè)本設(shè)備管轄范圍內(nèi)服務(wù)器的健康狀況,這種檢測(cè)可以是基于ICMP、TCP、HTTP等。同時(shí)LTM會(huì)記錄各個(gè)服務(wù)器的負(fù)載情況,對(duì)于外界進(jìn)來(lái)的訪問(wèn)流量,LTM會(huì)選擇內(nèi)部最優(yōu)的服務(wù)器提供服務(wù),做到內(nèi)部服務(wù)器的負(fù)載均衡。當(dāng)然,當(dāng)內(nèi)部服務(wù)器發(fā)生故障時(shí),LTM會(huì)將故障結(jié)果通告給本地的GTM。對(duì)于從服務(wù)器返回的流量,LTM可以根據(jù)出口鏈路的負(fù)載情況做鏈路分擔(dān)。
步驟④由GTM來(lái)完成,主要針對(duì)數(shù)據(jù)中心內(nèi)服務(wù)器全部宕機(jī)的情況。當(dāng)LTM檢測(cè)到管轄的服務(wù)器全部宕機(jī),即本中心不能在對(duì)外提供服務(wù)時(shí),會(huì)通告給GTM。這樣,GTM會(huì)將業(yè)務(wù)域名下對(duì)應(yīng)的該中心的IP地址置于非正常狀態(tài)。后續(xù)有訪問(wèn)業(yè)務(wù)的DNS解析請(qǐng)求時(shí),GTM不會(huì)再返回該中心的IP地址,所有解析都返回另一個(gè)數(shù)據(jù)中心的IP地址。這樣就完成了故障時(shí)自動(dòng)智能的切換。
以上為流量在故障發(fā)生后切換的機(jī)制。在實(shí)際生產(chǎn)環(huán)境中,本地DNS服務(wù)器通常有較長(zhǎng)時(shí)間的緩存。當(dāng)GTM收到LTM的業(yè)務(wù)故障通知,將DNS解析地址切換后,本地DNS緩存的地址或許還是之前使用的地址,那么該DNS服務(wù)器下的客戶端仍舊會(huì)訪問(wèn)到業(yè)務(wù)故障的數(shù)據(jù)中心。在傳統(tǒng)模式下,用戶將無(wú)法獲得服務(wù);在分布式雙活數(shù)據(jù)中心方案中,可以通過(guò)數(shù)據(jù)中心間大二層網(wǎng)絡(luò),將進(jìn)入到業(yè)務(wù)故障的數(shù)據(jù)中心的流量引導(dǎo)到業(yè)務(wù)正常的數(shù)據(jù)中心來(lái)保證業(yè)務(wù)的連續(xù)性。因此,從用戶角度來(lái)看,業(yè)務(wù)可以做到零中斷,無(wú)論業(yè)務(wù)訪問(wèn)的是數(shù)據(jù)中心A還是B,或是從A到B的跨中心路徑,虛擬的大二層網(wǎng)絡(luò)為訪問(wèn)流量提供了一個(gè)始終可用的服務(wù)站點(diǎn)。
2. 場(chǎng)景二:基于IP地址發(fā)布業(yè)務(wù)的雙活
該場(chǎng)景主要是通過(guò)IP地址和IP路由實(shí)現(xiàn)對(duì)用戶流量的調(diào)度(如圖6所示)。

圖6 基于IP地址發(fā)布業(yè)務(wù)的雙活數(shù)據(jù)中心模型
正常情況下,數(shù)據(jù)中心A和B分別對(duì)外發(fā)布不同的IP地址和路由。此時(shí),兩個(gè)IP地址均路由可達(dá),都可以對(duì)外提供服務(wù)。(如圖7所示)LTM會(huì)實(shí)時(shí)監(jiān)測(cè)本設(shè)備管轄的服務(wù)器,當(dāng)服務(wù)器故障、本中心不能對(duì)外提供服務(wù)時(shí),LTM會(huì)通過(guò)RHI(Route Health Injection,健康路由注入)功能撤銷對(duì)外發(fā)布的路由,同時(shí)數(shù)據(jù)中心B的LTM會(huì)對(duì)外重新發(fā)布被數(shù)據(jù)中心A撤銷的路由,這樣,同一個(gè)IP地址的業(yè)務(wù)由數(shù)據(jù)中心B來(lái)提供。數(shù)據(jù)中心A和B的LTM之間需要通過(guò)二層互連網(wǎng)絡(luò)(EVI)保持聯(lián)動(dòng)。同理,當(dāng)數(shù)據(jù)中心A的LTM故障時(shí),同樣的切換也會(huì)發(fā)生。

圖7 基于IP地址發(fā)布業(yè)務(wù)的故障切換
由此不難看出,RHI是實(shí)現(xiàn)基于IP地址發(fā)布業(yè)務(wù)雙活的關(guān)鍵。該功能通常由SLB技術(shù)實(shí)現(xiàn)。SLB周期性的檢測(cè)服務(wù)器/虛擬機(jī)的存活狀態(tài),當(dāng)檢查結(jié)果正常時(shí),SLB向骨干網(wǎng)中發(fā)布一條該主機(jī)地址的主機(jī)路由,用于用戶的正常訪問(wèn);當(dāng)檢查結(jié)果異常時(shí),撤銷該主機(jī)路由。LTM健康路由注入、撤銷過(guò)程實(shí)際上是LTM與網(wǎng)絡(luò)設(shè)備路由交互的過(guò)程。網(wǎng)絡(luò)設(shè)備必須能夠良好的與LTM進(jìn)行路由的學(xué)習(xí),同時(shí)可以將從LTM學(xué)習(xí)到的路由信息準(zhǔn)確的發(fā)布到網(wǎng)絡(luò)系統(tǒng)中,從而準(zhǔn)確的控制客戶端得到的路由信息。本方案中,通過(guò)數(shù)據(jù)中心A和B中兩臺(tái)LTM的配合實(shí)現(xiàn)用戶業(yè)務(wù)動(dòng)態(tài)調(diào)整。
如同場(chǎng)景一,當(dāng)一個(gè)數(shù)據(jù)中心業(yè)務(wù)故障后到業(yè)務(wù)成功切換到另一個(gè)數(shù)據(jù)中心的中間過(guò)程中,可以通過(guò)數(shù)據(jù)中心間的虛擬大二層網(wǎng)絡(luò)保障故障切換過(guò)程中業(yè)務(wù)的連續(xù)性,以保證業(yè)務(wù)始終可用。
三、 結(jié)束語(yǔ)
分布式雙活數(shù)據(jù)中心的建設(shè)是一個(gè)復(fù)雜的系統(tǒng)工程,它不僅僅要求網(wǎng)絡(luò)系統(tǒng)雙活,更是涉及到服務(wù)器系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)和存儲(chǔ)系統(tǒng),甚至和客戶的具體應(yīng)用也是息息相關(guān)。網(wǎng)絡(luò)系統(tǒng)是數(shù)據(jù)中心對(duì)外提供服務(wù)的通道,有了網(wǎng)絡(luò)的雙活,伴隨著數(shù)據(jù)庫(kù)系統(tǒng)和存儲(chǔ)系統(tǒng)雙活技術(shù)的不斷成熟,相信分布式雙活數(shù)據(jù)中心方案可以為用戶提供更加完美的數(shù)據(jù)中心雙活體驗(yàn)。