国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux的雙機熱備系統(tǒng)研究與設(shè)計*

2016-12-13 06:51
計算機與數(shù)字工程 2016年11期
關(guān)鍵詞:雙機服務(wù)器狀態(tài)

李 勇

(92941部隊96分隊 葫蘆島 125001)

?

基于Linux的雙機熱備系統(tǒng)研究與設(shè)計*

李 勇

(92941部隊96分隊 葫蘆島 125001)

為提高Linux系統(tǒng)下軟件的高可用性,研究了雙機熱備技術(shù),分析了Linux內(nèi)核機制,設(shè)計了Linux系統(tǒng)下的雙機熱備系統(tǒng)架構(gòu),完成了模塊化設(shè)計,并提供了對外的接口。

雙機熱備; 高可用; Linux; 模塊化

Class Number TP319

1 引言

隨著網(wǎng)絡(luò)和信息技術(shù)的發(fā)展,信息系統(tǒng)集成度不斷增大,面對的風險也越來越多,一個硬件或軟件故障都可能導致網(wǎng)絡(luò)癱瘓、系統(tǒng)崩潰,對企業(yè)造成損失,因此提高系統(tǒng)的高可用性成為最迫切解決的問題[1]。目前高可用解決方案有集群和雙機熱備兩種。集群技術(shù)將多臺服務(wù)器虛擬成一臺服務(wù)器并對外提供服務(wù),具有負載均衡能力,適合大型和超大型系統(tǒng)[2]。雙機熱備系統(tǒng)以其低成本、操作簡潔的優(yōu)勢成為中小系統(tǒng)的首要選擇。

2 雙機熱備技術(shù)分析

2.1 雙機熱備簡介

雙機熱備是在互為備份的兩臺服務(wù)器上共同執(zhí)行同一服務(wù),一臺服務(wù)器處于服務(wù)的工作狀態(tài)(主機),另一臺服務(wù)器處于備用狀態(tài)(備機)[3]。正常情況下,主機對外提供服務(wù),備機監(jiān)視主機的狀態(tài)。當主機因某種故障而不能繼續(xù)提供服務(wù)時,備機接管主機的工作。

是否采用雙機熱備,取決于服務(wù)的重要性以及中斷對服務(wù)的影響。關(guān)鍵服務(wù)不容忍長時間的服務(wù)中斷,需要通過雙機熱備來保證系統(tǒng)長期、可靠的運行[4]。

2.2 雙機熱備系統(tǒng)工作模式分析

雙機熱備系統(tǒng)一般有雙工、主從和雙機互備三種工作模式[5]。

在雙工模式中,兩臺服務(wù)器同時運行同樣的應(yīng)用,對外提供同樣的服務(wù),彼此獨立運行。當一臺服務(wù)器出現(xiàn)故障時,對外服務(wù)也不會中斷。因為兩服務(wù)器都實時運行,不存在服務(wù)切換問題,但是需要增加I/O設(shè)備通信開銷。由于兩臺服務(wù)器相互獨立,難以保證邏輯控制的統(tǒng)一,也不符合“數(shù)出一源”的原則。

主從模式是指使用兩臺或兩臺以上的服務(wù)器,一臺作為主機,對外提供服務(wù)。其他作為備機,運行與主機一樣的應(yīng)用,但是處于備用狀態(tài)。當主機出現(xiàn)故障時,備機變?yōu)橹鳈C,使對外服務(wù)在短時間內(nèi)恢復。

雙機互備模式中,兩臺服務(wù)器分別運行不同的應(yīng)用,彼此互為備機[6]。當一臺服務(wù)器出現(xiàn)故障時,另一臺服務(wù)器接管應(yīng)用,同時運行兩個應(yīng)用。這是主從模式的擴展,避免了兩個應(yīng)用使用四臺服務(wù)器。此方式存在性能瓶頸,即一臺服務(wù)器同時運行兩個應(yīng)用,負載過大。

2.3 雙機熱備系統(tǒng)數(shù)據(jù)存儲方式分析

數(shù)據(jù)是服務(wù)的基礎(chǔ),是服務(wù)遷移的前提。在雙機熱備系統(tǒng)中,數(shù)據(jù)存儲方式有存儲共享和存儲隔離兩種方式[7]。

在存儲共享方式中,兩臺服務(wù)器所有數(shù)據(jù)存儲在一個公共的存儲空間。通過權(quán)限控制及策略,兩臺服務(wù)器可訪問所有的數(shù)據(jù)。數(shù)據(jù)源的單一性確保了兩臺服務(wù)器數(shù)據(jù)的一致性。

在存儲隔離方式中,兩臺服務(wù)器使用私有的存儲空間存儲各自的數(shù)據(jù),服務(wù)器通過數(shù)據(jù)鏈路將新產(chǎn)生的數(shù)據(jù)同步到備機。

3 Linux內(nèi)核結(jié)構(gòu)分析

3.1 Linux系統(tǒng)簡介

Linux系統(tǒng)是一個開源的、與Unix兼容的操作系統(tǒng)。經(jīng)過多年發(fā)展,Linux已成為一個功能強大性能穩(wěn)定的通用操作系統(tǒng),大部分Unix上的應(yīng)用程序都已經(jīng)移植到Linux之上[8]。由于它的成熟和開放性,Linux在服務(wù)器市場占有較大份額。

3.2 Linux內(nèi)核架構(gòu)分析

Linux內(nèi)核只是Linux操作系統(tǒng)一部分,運行在內(nèi)核空間,具有最高的級別,管理系統(tǒng)的所有硬件設(shè)備;應(yīng)用程序運行在用戶態(tài),級別最低,不能直接訪問硬件資源,只能通過系統(tǒng)調(diào)用來間接訪問硬件資源,如圖1所示。

圖1 Linux內(nèi)核結(jié)構(gòu)

Linux內(nèi)核主要包含進程管理、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、IPC、設(shè)備驅(qū)動程序等幾個部分[9]。進程管理負責管理CPU資源,按照策略讓各個進程都能使用CPU資源;內(nèi)存管理負責管理內(nèi)存資源,以便各個進程都能使用有限的內(nèi)存資源;虛擬文件系統(tǒng)管理將外設(shè)(硬盤、磁盤、軟盤、打印機等設(shè)備)抽象成為文件,通過統(tǒng)一的文件操作接口訪問;網(wǎng)絡(luò)服務(wù)負責管理網(wǎng)絡(luò)設(shè)備,支持多種網(wǎng)絡(luò)標準;IPC負責Linux系統(tǒng)中進程間的通信。此外,Linux系統(tǒng)支持模塊編程,可以將軟件作為一個模塊插入Linux內(nèi)核,進行內(nèi)核級的開發(fā)[10]。

4 基于Linux雙機熱備系統(tǒng)總體設(shè)計

在主從模式下,主機不斷地發(fā)送心跳包給備機,若備機或心跳線路出現(xiàn)故障,主機無法察覺。在這種情況下主機故障,系統(tǒng)服務(wù)無法遷移到備機。雙心跳線路可避免單條線路失效的風險。

為了保持對外服務(wù)接口的一致性,系統(tǒng)采用虛擬IP技術(shù)。兩臺服務(wù)器都有獨立的IP地址,但是對外服務(wù)公用一個虛擬IP地址。虛擬IP由主機擁有,當服務(wù)遷移時,虛擬IP也隨之漂移到新的主機上。硬件連接如圖2所示。

圖2 基于Linux雙機熱備系統(tǒng)硬件拓撲圖

在軟件設(shè)計上,將雙機熱備設(shè)計成多個功能模塊。利用Linux模塊加載原理,將模塊加載到內(nèi)核,完成雙機熱備功能。從功能上看,軟件包括基礎(chǔ)服務(wù)、故障診斷與處理、數(shù)據(jù)管理、對外接口四個功能模塊,如圖3所示。

圖3 軟件結(jié)構(gòu)

5 基于Linux雙機熱備系統(tǒng)模塊設(shè) 計與實現(xiàn)

5.1 基礎(chǔ)服務(wù)模塊設(shè)計

基礎(chǔ)服務(wù)模塊負責建立并維護兩臺服務(wù)器的主備狀態(tài),雙機熱備系統(tǒng)狀態(tài)結(jié)構(gòu)如下所示

typedef struct _DUP_STATUS{

unsigned char StatusOfThis; //本機狀態(tài)

unsigned char StatusOfOther;//另一臺服務(wù)器狀態(tài)

unsigned char Line1Status;//心跳線路1狀態(tài)

unsigned char Line2Status;//心跳線路2狀態(tài)

unsigned char Line3Status;//數(shù)據(jù)線路狀態(tài)

unsigned char SoftStatusOfThis;//本機關(guān)鍵軟件狀態(tài)

unsigned char NetStatusOfThis;//本機網(wǎng)絡(luò)連接狀態(tài)

unsigned char Mode;//雙工模式

unsigned char SoftStatusOfOther;//另一臺服務(wù)器關(guān)鍵軟件狀態(tài)

unsigned char NetStatusOfOther;//另一臺服務(wù)器網(wǎng)絡(luò)連接狀態(tài)

}DUP_STATUS, *PDUP_STATUS;

服務(wù)器啟動時,雙機熱備基礎(chǔ)服務(wù)模塊根據(jù)配置信息及另一臺服務(wù)器的狀態(tài)確定本機的狀態(tài)。一臺服務(wù)器可配置為主機、備機或先啟動者為主機。當一臺服務(wù)器配置為主機或先啟動者為主機時,若另一臺服務(wù)器的狀態(tài)不是主機,則它啟動后就為主機,否則就為副機。當一臺服務(wù)器配置為副機時,若另一臺服務(wù)器的狀態(tài)不是副機,則它啟動后就為副機,否則就為主機。

主備機通過定期發(fā)送心跳包來確定彼此的狀態(tài),心跳包格式如圖4所示,各字段含義如下:

總長:表示心跳包總長度,心跳包長度固定為10B。

源ID和目的ID:標識主機與備機的心跳線路1、線路2。

序號:用于心跳包和數(shù)據(jù)包的計數(shù)。

SGS:表示本機的雙工熱備狀態(tài),包括主用、備用和雙工三種狀態(tài)。

XL1、XL2、XL3:表示心跳線路1、線路2和數(shù)據(jù)傳輸線路的狀態(tài)。

網(wǎng)絡(luò)狀態(tài):表示服務(wù)器連接網(wǎng)絡(luò)狀態(tài)。

關(guān)鍵事件狀態(tài):表示服務(wù)器上系統(tǒng)服務(wù)的狀態(tài)。

圖4 心跳協(xié)議包格式

5.2 故障監(jiān)測模塊設(shè)計與實現(xiàn)

為了能及時發(fā)現(xiàn)各種錯誤,提高服務(wù)的可用性,采用基于雙心跳線路的心跳監(jiān)測協(xié)議機制,如圖5所示。本模塊會記錄所有心跳信息,作為故障診斷的依據(jù)。

圖5 雙機熱備心跳線路

本模塊會啟動三個監(jiān)聽線程,線程1與關(guān)鍵服務(wù)構(gòu)成服務(wù)器系統(tǒng)內(nèi)部的心跳鏈路,線程2和線程3分別維護一條主機與備機之間的心跳鏈路,心跳包發(fā)送周期和故障診斷周期由配置文件確定;通過監(jiān)測心跳包,可獲得本機和它機的綜合狀態(tài),從而進行故障定位和處理。本模塊可以定位和處理的故障有心跳線路故障、網(wǎng)絡(luò)連接故障、服務(wù)器故障和關(guān)鍵服務(wù)故障四類。

心跳線路故障:當服務(wù)器在故障診斷周期內(nèi)只能收到一條來自另一臺服務(wù)器的心跳包,則另一條心跳鏈路故障,主備機重啟心跳線程,替代故障線程。

網(wǎng)絡(luò)連接故障:主機定期向交換機發(fā)送ICMP數(shù)據(jù)包,若主機故障診斷周期內(nèi)沒有收到應(yīng)答,則認為網(wǎng)絡(luò)連接故障,進行主備機服務(wù)切換。

服務(wù)器故障:服務(wù)器在故障診斷周期內(nèi)收不到另一臺服務(wù)器的心跳包,則認為服務(wù)器故障,進行雙工切換。

關(guān)鍵服務(wù)故障:在一個故障診斷周期內(nèi),通過解析心跳包,發(fā)現(xiàn)關(guān)鍵服務(wù)字段為異常,則主機關(guān)鍵服務(wù)故障,進行主備機服務(wù)切換。

5.3 數(shù)據(jù)管理模塊設(shè)計

在關(guān)鍵服務(wù)軟件運行過程中,會產(chǎn)生很多重要數(shù)據(jù)。借助這些數(shù)據(jù),關(guān)鍵服務(wù)可恢復到故障前的狀態(tài),降低主副機切換的損失。本模塊通過數(shù)據(jù)定期同步技術(shù)實現(xiàn)備機與主機間重要數(shù)據(jù)的一致。傳輸數(shù)據(jù)的格式如圖6所示,各字段含義如下:

總長:表示數(shù)據(jù)包總長度,心跳包長度不固定。

源ID和目的ID:標識主機與備機的數(shù)據(jù)線路。

序號:用于數(shù)據(jù)包的計數(shù)。

ACK、SYN、ERR:數(shù)據(jù)傳輸?shù)目刂茦酥尽?/p>

圖6 數(shù)據(jù)協(xié)議包格式

數(shù)據(jù)傳輸采用文件緩存技術(shù),具體流程如圖7所示。將獲取的數(shù)據(jù)構(gòu)造成傳輸數(shù)據(jù)包,發(fā)送到對方。若數(shù)據(jù)鏈路異常,則將數(shù)據(jù)放入緩存區(qū),當緩存區(qū)滿時,將緩存區(qū)數(shù)據(jù)存入磁盤臨時文件,并清空緩存區(qū)數(shù)據(jù);等鏈路修復后,再將臨時文件和緩存區(qū)數(shù)據(jù)依次發(fā)送出去。

圖7 數(shù)據(jù)傳輸流程

5.4 對外接口模塊設(shè)計

雙機熱備軟件為應(yīng)用程序提供了編程接口,應(yīng)用程序可通過編程接口訪問雙機熱備軟件,下面給出三類主要的接口。

1) 獲取雙工狀態(tài)

int DupGetStatus(DUP_PS_STATUS *pPSStatus);

通過這一接口可獲取系統(tǒng)的雙工狀態(tài),關(guān)鍵軟件確定自身的運行狀態(tài)。

2) 狀態(tài)切換

int DupSwitch(void);//請求狀態(tài)切換

int DupSetStatus(unsigned int iStatus);//強制狀態(tài)切換

在運行過程中,關(guān)鍵軟件感知本機的主要部件、主要進程運行不正?;虬l(fā)生了故障,通過請求切換功能改變系統(tǒng)的雙工狀態(tài)。

3) 等待雙工事件

等待主/副機狀態(tài)改變編程接口等待主/副機狀態(tài)改變事件。接口函數(shù)定義如下:

int DupWaitStatusChg(unsigned int *pStatusChanged, DUP_STATUS *pDupStatus, DWORD msTimeOut);

當主副機狀態(tài)改變時,關(guān)鍵軟件通過該接口可獲取系統(tǒng)的雙工狀態(tài)改變信息,從而改變本身的工作狀態(tài)。

6 結(jié)語

雙機熱備是提高系統(tǒng)高可用性的技術(shù)。本文設(shè)計并實現(xiàn)了Linux系統(tǒng)下主從模式的雙機熱備系統(tǒng)。該系統(tǒng)支持主備機間數(shù)據(jù)傳輸,為關(guān)鍵服務(wù)的快速恢復和數(shù)據(jù)備份提供了條件。

[1] 林曉東,劉心松.高可用性系統(tǒng)的研究與實現(xiàn)[J].電子科技大學學報,1997(5):533-538. LIN Xiaodong, LIU Xinsong. Research and implementation of high availability system. Journal of University of Electronic Science and technology of China,1997(5):533-538.

[2] 胡兵全.基于Windows的雙機熱備系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:華中科技大學,2004:12-13. HU Bingquan. Design and implementation of dual computer hot standby system based on [D]. Wuhan: Huazhong University of Science and Technology,2004(5):12-13.

[3] 任振芳.基于Xen虛擬機的雙機熱備可用性研究[D].鄭州:鄭州大學,2012:16-17. REN Zhenfang. Research on availability of dual computer hot standby based on Xen virtual machine [D]. Zhengzhou: Zhengzhou University,2012:16-17.

[4] 弗洛伊德.皮耶達德.高可用性:設(shè)計、技術(shù)與運作過程[M].高廣卿,何鋮,譯.北京:社會科學文獻出版社,2003:32-33. Freud. Piedade. High availability: design, technology and operation process [M]. Gao Guangqing, osmium, translated. Beijing: Social Science Literature Publishing House,2003:32-33.

[5] 李勝廣,張其善.實現(xiàn)Linux防火墻系統(tǒng)雙機熱備的方法[J].計算機與數(shù)字工程,2006,34(3):77-78. LI Shengguang, ZHANG Qishan. The method of dual computer hot standby in the Linux firewall system [J]. Computer and digital engineering,2006,34(3):77-78.

[6] 謝斌,高揚.Linux高可用集群心跳機制研究[J].計算機工程與應(yīng)用,2004(1):67-68. XIE Bin, GAO yang.high availability cluster heartbeat mechanism Linux. Computer engineering and applications,2004(1):67-68.

[7] 姚耀文,茹建斌,繆炯燁.基于Linux的服務(wù)器群集方案[J].計算機工程,2001,27(4):139-140. YAO Yaowen, RU Jianbin, MIAO Jiongye. Linux server cluster scheme based on [J]. Computer Engineering,2001,27(4):139-140.

[8] 毛德操,胡希明.Linux內(nèi)核源代碼情景分析[M].杭州:浙江大學出版社,2003:273-274. MAO Decao, HU Ximing.Linux kernel source code scenario analysis[M]. Hangzhou: Zhejiang University press,2003:273-274.

[9] 賴娟.Linux內(nèi)核分析及實時性改造[D].武漢:華中科技大學,2007:32-33. LAI Juan.Linux kernel analysis and real time transformation of [D]. Wuhan: Huazhong University of Science and Technology,2007:32-33.

[10] 孫海彬,傅謙,徐良賢.Linux內(nèi)核模塊的實現(xiàn)機制[J].微型機與應(yīng)用,2000,11(2):10-11. SUN Haibin, FU Qian, XU Liangxian.Linux kernel module implementation mechanism [J]. Microcomputer and application,2000,11(2):10-11.

Research and Design of Dual Computer Hot Standby System Based on Linux

LI Yong

(Unit 96, No 92941 Troops of PLA, Huludao 125001)

In order to improve the high availability of software based on Linux system, the hot standby technology is studied, the mechanism of Linux kernel is analyzed, the architecture of dual machine hot standby system based on Linux system is designed, the modular design is completed, and the call interface of the system is provided.

hot standby, high availability, Linux, modularization

2016年5月4日,

2016年6月25日

李勇,男,碩士研究生,工程師,研究方向:計算機應(yīng)用軟件、系統(tǒng)安全。

TP319

10.3969/j.issn.1672-9722.2016.11.041

猜你喜歡
雙機服務(wù)器狀態(tài)
液氧煤油發(fā)動機氧系統(tǒng)雙機耦合振蕩頻率特性
服務(wù)器組功能的使用
理解Horizon 連接服務(wù)器、安全服務(wù)器的配置
PowerTCP Server Tool
狀態(tài)聯(lián)想
雙機、雙槳軸系下水前的安裝工藝
生命的另一種狀態(tài)
計算機網(wǎng)絡(luò)安全服務(wù)器入侵與防御
堅持是成功前的狀態(tài)
藍天雙雄——殲八II雙機編隊