王輝靜,劉君堯,劉云霞,汪衛(wèi)明
(深圳信息職業(yè)技術(shù)學(xué)院,廣東 深圳 518172)
容災(zāi)技術(shù)是保證計(jì)算機(jī)系統(tǒng)高可用性的重要技術(shù)之一。當(dāng)生產(chǎn)站點(diǎn)發(fā)生故障時(shí),會(huì)自動(dòng)或者手動(dòng)切換到容災(zāi)站點(diǎn),以便繼續(xù)提供服務(wù)。當(dāng)進(jìn)行容災(zāi)切換時(shí),如果對(duì)外提供服務(wù)的IP地址發(fā)生了變動(dòng),那么外部訪問用戶就需要知曉系統(tǒng)是否發(fā)生了容災(zāi)切換,以便確認(rèn)使用生產(chǎn)站點(diǎn)的服務(wù)IP地址還是容災(zāi)站點(diǎn)的服務(wù)IP地址來訪問系統(tǒng),給正常的訪問帶來了不便。因此,此時(shí)保持系統(tǒng)對(duì)外提供服務(wù)的IP地址不變就尤為重要了,當(dāng)系統(tǒng)發(fā)生容災(zāi)切換時(shí),要確保將生產(chǎn)站點(diǎn)的對(duì)外服務(wù)的IP地址,同時(shí)也切換到容災(zāi)站點(diǎn)上。
為了實(shí)現(xiàn)這種切換,當(dāng)前主要用到的技術(shù)有:(1)采用DNS,通過域名來屏蔽生產(chǎn)站點(diǎn)和容災(zāi)站點(diǎn)不同的IP地址。(2)將生產(chǎn)站點(diǎn)和容災(zāi)站點(diǎn)之間的網(wǎng)絡(luò)直接大二層打通,采用二層組網(wǎng)+arp方式進(jìn)行IP地址的切換。上述兩種方案都存在一些問題和缺陷,DNS方案需要單獨(dú)維護(hù)DNS成本較高,并且整體切換的效率比較低(一般為分鐘級(jí)或者小時(shí)級(jí));大二層打通組網(wǎng)方案對(duì)網(wǎng)絡(luò)要求較高,需要在生產(chǎn)站點(diǎn)和容災(zāi)站點(diǎn)之間搭建VPN,有額外的成本支出[1]。
本文主要介紹了通過開放式最短路徑優(yōu)先(Open Shortest Path First,OSPF)網(wǎng)絡(luò)協(xié)議,通過與路由器的交互,實(shí)現(xiàn)跨3層組網(wǎng)下的IP地址切換,能夠有效實(shí)現(xiàn)異地跨地域故障切換,從而有效提升系統(tǒng)應(yīng)用穩(wěn)定性。
容災(zāi)系統(tǒng)一般生產(chǎn)站點(diǎn)和容災(zāi)站點(diǎn)會(huì)部署在不同的地域(比如北京部署生產(chǎn)站點(diǎn)、上海部署容災(zāi)站點(diǎn))。站點(diǎn)之間由于跨地域,一般采用3層組網(wǎng)。一般實(shí)現(xiàn)的組網(wǎng)圖如圖1所示。
在3層組網(wǎng)容災(zāi)系統(tǒng)中,用戶訪問或者兩個(gè)站點(diǎn)之間通信,都是通過3層網(wǎng)絡(luò)進(jìn)行,容災(zāi)系統(tǒng)對(duì)外提供的服務(wù)IP地址,對(duì)于用戶是固定的。
OSPF是一種鏈路狀態(tài)路由協(xié)議,鏈路是路由器接口的另一種說法,因此OSPF也稱為接口狀態(tài)路由協(xié)議。
圖1 容災(zāi)系統(tǒng)3層組網(wǎng)示意
OSPF通過路由器之間通告網(wǎng)絡(luò)接口的狀態(tài)來建立鏈路狀態(tài)數(shù)據(jù)庫,通過Dijkstra算法來生成最短路徑樹,每個(gè)OSPF路由器使用這些最短路徑構(gòu)造路由表。OSPF分為OSPFv2和OSPFv3兩個(gè)版本,其中OSPFv2用在IPv4網(wǎng)絡(luò),OSPFv3用在IPv6網(wǎng)絡(luò)。OSPFv2是由RFC 2328定義的,OSPFv3是由RFC 5340定義的。
OSPF協(xié)議具有以下特點(diǎn)[2]:
(1)OSPF把自治系統(tǒng)(Autonomous System,AS)劃分成邏輯意義上的一個(gè)或多個(gè)區(qū)域。
(2)O S P F通過鏈路狀態(tài)通告(L i n k S t a t e Advertisement,LSA)的形式發(fā)布路由。
(3)OSPF依靠在OSPF區(qū)域內(nèi)各設(shè)備間交互OSPF報(bào)文來達(dá)到路由信息的統(tǒng)一。
(4)OSPF報(bào)文封裝在IP報(bào)文內(nèi),可以采用單播或組播的形式發(fā)送。
OSPF路由協(xié)議是一種典型的鏈路狀態(tài)(Link-state)的路由協(xié)議,一般用于同一個(gè)路由域內(nèi)。所謂的路由域,是指一個(gè)AS,它是指一組通過統(tǒng)一的路由政策或路由協(xié)議互相交換路由信息的網(wǎng)絡(luò)。在這個(gè)AS中,所有的OSPF路由器都維護(hù)一個(gè)相同的描述這個(gè)AS結(jié)構(gòu)的數(shù)據(jù)庫,該數(shù)據(jù)庫中存放的是路由域中相應(yīng)鏈路的狀態(tài)信息,OSPF路由器正是通過這個(gè)數(shù)據(jù)庫計(jì)算出其OSPF路由表的。
OSPF協(xié)議工作流程如圖2所示。
圖2 OSPF協(xié)議工作流程示意
OSPF協(xié)議工作主要分為四大步驟:(1)尋找鄰居。通過兩次握手建立起鄰居關(guān)系,進(jìn)入鄰接關(guān)系確立階段。(2)建立鄰接關(guān)系。通過雙方的路由器ID來確定鄰接關(guān)系,路由器ID大的為主設(shè)備。確定好鄰接關(guān)系后,從設(shè)備以主設(shè)備的DD報(bào)文序列號(hào)向主設(shè)備發(fā)送DD報(bào)文,并轉(zhuǎn)換自己接收DD報(bào)文的接口為exchange狀態(tài);主設(shè)備收到從設(shè)備DD報(bào)文后也將收到DD報(bào)文的接口轉(zhuǎn)換為exchange狀態(tài)。(3)鏈路狀態(tài)同步。主設(shè)備開始向從設(shè)備發(fā)送帶有LSA header字段的報(bào)文,對(duì)從設(shè)備進(jìn)行數(shù)據(jù)更新,測(cè)試鏈路狀態(tài)同步鄰居為FULL狀態(tài)。(4)計(jì)算路由。
將需要配置浮動(dòng)IP地址(系統(tǒng)對(duì)外提供服務(wù)的IP地址)的Linux服務(wù)器模擬為一臺(tái)路由器,并在該Linux服務(wù)器上運(yùn)行OSPF協(xié)議,通過OSPF協(xié)議與真正的路由器進(jìn)行交互,將路由轉(zhuǎn)發(fā)到配置浮動(dòng)IP的服務(wù)器。同時(shí)在生產(chǎn)站點(diǎn)和容災(zāi)站點(diǎn)配置相同的IP地址(即浮動(dòng)IP地址),通過OSPF路由的選擇,在生產(chǎn)站點(diǎn)發(fā)生故障時(shí),通過OSPF路由的重新計(jì)算,自動(dòng)將路由轉(zhuǎn)發(fā)到容災(zāi)站點(diǎn)的相同IP地址。即正常狀態(tài)下,路由轉(zhuǎn)發(fā)到生產(chǎn)站點(diǎn);當(dāng)生產(chǎn)站點(diǎn)發(fā)生故障時(shí),通過OSPF協(xié)議,重新計(jì)算路由,將路由轉(zhuǎn)發(fā)到容災(zāi)站點(diǎn)[3]。
測(cè)試采用組網(wǎng)示意如圖3所示。
圖3 測(cè)試組網(wǎng)示意
配置為3個(gè)OSPF區(qū)域,正常情況下,由Linux服務(wù)器A發(fā)布VIP,當(dāng)Linux服務(wù)器A出現(xiàn)故障時(shí),OSPF路由可以自動(dòng)選擇到Linux服務(wù)器B。
測(cè)試結(jié)果如表1所示。
表1 測(cè)試結(jié)果
通過OSPF協(xié)議進(jìn)行跨3層的IP地址浮動(dòng),具有快速切換,組網(wǎng)簡單,無額外成本的優(yōu)勢(shì),在異地容災(zāi)系統(tǒng)中可以參考使用。