摘要:首先介紹了雙機(jī)熱備的原理,并著重分析了服務(wù)器中雙機(jī)熱備軟件的通訊機(jī)制,程序架構(gòu)以及軟件的具體的實(shí)現(xiàn)方法。通過(guò)服務(wù)器的運(yùn)行實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的程序不僅可以實(shí)現(xiàn)服務(wù)器中雙機(jī)熱備的主要功能,并具有良好的穩(wěn)定性和高效性。
關(guān)鍵詞:雙機(jī)熱備;服務(wù)器管理;通訊路徑;心跳檢測(cè)
中圖法分類(lèi)號(hào):TP31文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)33-9419-03
Hot Standby Management Software Design and Implementation of Server Management System
ZHANG Lei, LI Yu-long, HU Lei
(Lanzhou Jiaotong University, College of Electronics and Information Engineering, Lanzhou 730070, China)
Abstract: The first introduced the principle of two-node cluster and focused analysis of two-node cluster server software communication mechanisms, procedures and software architecture specific implementations. Through the server running experimental results show that the process is designed not only to achieve two-node cluster spare server main function, and has good stability and efficiency.
Key words: two-node cluster; server management; communication path; heartbeat detection
1 雙機(jī)熱備的定義及原理
1.1 傳統(tǒng)雙機(jī)熱備的定義及原理
雙機(jī)熱備即目前通常所說(shuō)的active/standby方式。雙機(jī)熱備是近年來(lái)服務(wù)器端的安全性、可用性的一次重大革命。從以前加大的硬件可用性,到現(xiàn)在的雙機(jī)要備用,來(lái)保證服務(wù)器的不停機(jī)運(yùn)行,是高可用性的一次重大的進(jìn)步。
雙機(jī)熱備原理:是當(dāng)一臺(tái)服務(wù)器在工作時(shí)(稱(chēng)為主機(jī))。另一臺(tái)服務(wù)器處于備用狀態(tài)(稱(chēng)為備機(jī))。當(dāng)主機(jī)因?yàn)槟撤N原因出現(xiàn)故障,如死機(jī),主機(jī)斷電,病毒發(fā)作,硬盤(pán)損壞等,不能繼續(xù)提供服務(wù)時(shí),備用機(jī)能夠在規(guī)定的時(shí)間內(nèi)接替主機(jī)的服務(wù),繼續(xù)提供服務(wù),從而使始終服務(wù)處于不停機(jī)狀態(tài)。
1.2 服務(wù)器內(nèi)部雙機(jī)熱備的定義
與傳統(tǒng)的雙機(jī)熱備管理相比,服務(wù)器內(nèi)部的雙機(jī)熱備管理軟件具有同樣的原理,并且又有其自身的特點(diǎn)。在大型的單一服務(wù)器設(shè)備中,比如刀片式服務(wù)器,一般都會(huì)作為重要的存儲(chǔ)及計(jì)算設(shè)備應(yīng)用于企業(yè)網(wǎng)絡(luò)服務(wù)中,在加上其結(jié)構(gòu)比較復(fù)雜,所以,服務(wù)器里面的管理軟件擔(dān)負(fù)了較為重要的責(zé)任。不僅要監(jiān)控服務(wù)器中各個(gè)不同模塊的狀態(tài),還要負(fù)責(zé)控制電源,散熱等具體操作。這時(shí)候,如果只有一個(gè)管理模塊,當(dāng)其中出現(xiàn)某種問(wèn)題時(shí),很容易失去管理作用,這時(shí)候服務(wù)器就會(huì)因?yàn)闆](méi)有冗余管理而喪失作用。給應(yīng)用服務(wù)帶來(lái)巨大的傷害。雙機(jī)熱備管理模塊的應(yīng)用可以很好的解決上述問(wèn)題。
2 雙機(jī)熱備管理軟件的策略設(shè)計(jì)
2.1 雙管理模塊的硬件結(jié)構(gòu)
雙管理模塊在服務(wù)器中管理整個(gè)系統(tǒng)設(shè)備運(yùn)行,可以是實(shí)現(xiàn)對(duì)服務(wù)器開(kāi)關(guān)機(jī),監(jiān)控服務(wù)器中電源,散熱系統(tǒng),存儲(chǔ)系統(tǒng),以及最為關(guān)鍵的主板的運(yùn)行及狀態(tài)控制。雙管理模塊就是指在一個(gè)服務(wù)器配備兩個(gè)管理模塊,在兩個(gè)管理模塊中運(yùn)行同樣的管理軟件。這兩個(gè)管理模塊一個(gè)為主,一個(gè)為從。主管理模塊在插入機(jī)箱時(shí)由硬件在具體的位置上實(shí)現(xiàn),并通過(guò)相應(yīng)接口來(lái)通知運(yùn)行軟件,實(shí)現(xiàn)主管理模塊對(duì)服務(wù)器系統(tǒng)的控制。而從管理模塊通過(guò)插入相應(yīng)的模塊位置后,監(jiān)聽(tīng)整個(gè)系統(tǒng)的運(yùn)行,并在主管理模塊出現(xiàn)問(wèn)題的時(shí)隨即成為主管理模塊,來(lái)接替主管理模塊完成對(duì)系統(tǒng)的管理。
2.2 雙管理模塊的軟件結(jié)構(gòu)
2.2.1 雙機(jī)熱備軟件原理
雙機(jī)熱備軟件首先提供了一個(gè)完全容錯(cuò)的軟件解決方案,并提供數(shù)據(jù)、應(yīng)用程序和通信資源的高度可用性。不需要任何特別的容錯(cuò)硬件就能夠自動(dòng)地提供錯(cuò)誤檢測(cè)和快速有效的主備倒換。
雙管理模塊中分別運(yùn)行了兩套完全一樣的管理系統(tǒng)軟件。如果服務(wù)器中單獨(dú)使用任何一個(gè)管理模塊,都可以獨(dú)立的對(duì)系統(tǒng)進(jìn)行管理。當(dāng)同時(shí)插入兩個(gè)管理模塊時(shí),管理模塊軟件中雙機(jī)熱備部分的軟件就會(huì)根據(jù)硬件采集的信號(hào),來(lái)決定哪一個(gè)為主,同時(shí),另外一個(gè)就為從。
2.2.2 通訊策略
雙機(jī)熱備管理軟件的通訊策略采用心跳故障檢測(cè)(Heartbeat),也就是通過(guò)通信信號(hào),也叫做心跳信號(hào),作為主從管理軟件的通訊機(jī)制。即通過(guò)每一個(gè)通信路徑,在兩個(gè)對(duì)等系統(tǒng)之間進(jìn)行周期性的握手,如果連續(xù)沒(méi)有收到的心跳信號(hào)到了一定的數(shù)目,則表示這一條通訊線(xiàn)路出現(xiàn)了問(wèn)題,從而把這一條線(xiàn)路標(biāo)記為失效。如果只定義了一條通信路徑,當(dāng)程序把這唯一的一條通信路徑標(biāo)為失效時(shí),從管理模塊便可判定主管理模塊出現(xiàn)了異常,從而啟動(dòng)自己的管理進(jìn)程來(lái)實(shí)現(xiàn)主從的切換。
然而,如果只用一條通訊線(xiàn)路的話(huà),則會(huì)具有一定的錯(cuò)誤風(fēng)險(xiǎn),比如通訊線(xiàn)路的物理?yè)p壞,人為工作中的誤操作等。這時(shí)候,冗余線(xiàn)路就十分的有效。當(dāng)一條通訊線(xiàn)路沒(méi)有心出現(xiàn)跳信號(hào)時(shí),第二條路徑則能夠確定是系統(tǒng)故障還是通信路徑有問(wèn)題。多種通信路徑可以幫助避免不必要的失效切換,減少因?yàn)殄e(cuò)誤的主備倒換帶給整個(gè)服務(wù)器帶來(lái)不必要的風(fēng)險(xiǎn)。
在這里,我們使用兩條完全獨(dú)立的通訊線(xiàn)路來(lái)實(shí)現(xiàn)心跳檢測(cè)。
1) 網(wǎng)絡(luò)socket,即套接字。使用支持TCP/IP的通訊協(xié)議網(wǎng)絡(luò)硬件接口。
2) 串行口。
例如,如果兩個(gè)服務(wù)器被一個(gè)串口連接起來(lái),并且,從屬服務(wù)器來(lái)的心跳信號(hào)無(wú)法被主模塊管理軟件所檢測(cè)到,則下面之一可能是引起這一現(xiàn)象的原因:服務(wù)器的RS-232卡或者端口失敗,電纜失效,主管理軟件暫時(shí)掛起,主管理軟件運(yùn)行失敗,失效切換只可能在最后一種情況下才發(fā)生。
3 雙機(jī)熱備軟件具體實(shí)現(xiàn)
3.1 整體的運(yùn)行機(jī)制
雙管理模塊根據(jù)插入的槽位位置,自動(dòng)選擇成為主或從管理模塊。嵌入式linux系統(tǒng)運(yùn)行后,負(fù)責(zé)雙擊熱備的軟件程序開(kāi)始運(yùn)行,會(huì)根據(jù)主從來(lái)選擇不同的運(yùn)行級(jí)別。分別轉(zhuǎn)換為主為active,從為standby的狀態(tài),通過(guò)串口和網(wǎng)絡(luò)兩路通訊監(jiān)聽(tīng)彼此的運(yùn)行狀態(tài),在這里我們采用多線(xiàn)程編程來(lái)實(shí)現(xiàn)程序架構(gòu)。
3.2 程序具體實(shí)現(xiàn)
程序的實(shí)現(xiàn)主要包含以下幾個(gè)部分
1) 共享內(nèi)存的初始化
共享內(nèi)存的創(chuàng)建主要是為了實(shí)現(xiàn)管理系統(tǒng)在運(yùn)行過(guò)程中系統(tǒng)信息的存儲(chǔ)。這些信息包括系統(tǒng)現(xiàn)在的運(yùn)行狀態(tài),以及服務(wù)器運(yùn)行過(guò)程中各種配置參數(shù)的更改。當(dāng)主管理軟件出現(xiàn)異常時(shí),可以實(shí)現(xiàn)從管理模塊的無(wú)縫鏈接。服務(wù)器的各種信息,如電壓,溫度,以及運(yùn)行及異常狀態(tài)均會(huì)存儲(chǔ)在共享內(nèi)存中,并通過(guò)串口監(jiān)聽(tīng)進(jìn)行相互通訊。
2) 串口的創(chuàng)建及運(yùn)行
首先對(duì)串口進(jìn)行初始化操作,包括串口類(lèi)型的選擇,各項(xiàng)參數(shù)的具體配置。然后是對(duì)串口的讀寫(xiě)操作功能的實(shí)現(xiàn)。根據(jù)主從管理模塊的不同,對(duì)串口進(jìn)行相應(yīng)的操作。
3) socket的創(chuàng)建及初始化
socket通常也稱(chēng)作“套接字”,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。主從管理模塊軟件程序通常通過(guò)“套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者響應(yīng)網(wǎng)絡(luò)請(qǐng)求。在連接成功時(shí),應(yīng)用程序兩端都會(huì)產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會(huì)話(huà)。
4)系統(tǒng)主進(jìn)程的創(chuàng)建
通過(guò)硬件GPIO機(jī)制設(shè)置主從模塊,由主進(jìn)程選擇系統(tǒng)運(yùn)行,并開(kāi)始雙模塊的的循環(huán)監(jiān)聽(tīng)。
5)心跳檢測(cè)程序的創(chuàng)建與運(yùn)行。
3.3 雙機(jī)熱備軟件邏輯處理過(guò)程
圖3為雙機(jī)熱備程序的邏輯處理過(guò)程:主從管理模塊通過(guò)socket和serial進(jìn)行多線(xiàn)程循環(huán)監(jiān)控。
4 程序運(yùn)行結(jié)果及分析
服務(wù)器通電后,管理系統(tǒng)開(kāi)始運(yùn)行。這時(shí),主管理模塊能夠順利執(zhí)行這個(gè)服務(wù)器的管理任務(wù)。同時(shí),從管理模塊則運(yùn)行雙機(jī)熱備程序,負(fù)責(zé)監(jiān)控主管理模塊的運(yùn)行狀態(tài)。當(dāng)串口和網(wǎng)絡(luò)兩路信號(hào)均出現(xiàn)異常時(shí),從管理模塊管理軟件開(kāi)始運(yùn)行,負(fù)責(zé)管理整個(gè)服務(wù)器。在主備轉(zhuǎn)換的過(guò)程中,服務(wù)器的有效信息會(huì)因?yàn)樵陔p機(jī)熱備的共享內(nèi)存中有所備份,完全可以保證系統(tǒng)持續(xù)、穩(wěn)定地運(yùn)行。
5 總結(jié)
對(duì)于日益承擔(dān)企事業(yè)單位核心業(yè)務(wù)的服務(wù)器系統(tǒng)來(lái)說(shuō),數(shù)據(jù)的高可用性和系統(tǒng)的連續(xù)運(yùn)轉(zhuǎn)能力極其重要,作為實(shí)時(shí)服務(wù)與數(shù)據(jù)保護(hù)解決方案,雙機(jī)熱備軟件提供了數(shù)據(jù)的高可用性、系統(tǒng)異常時(shí)的自動(dòng)切換。但是在雙機(jī)熱備過(guò)程中數(shù)據(jù)的恢復(fù)還需要進(jìn)一步的研究,如何提高數(shù)據(jù)倒換的有效性和可用性,以及系統(tǒng)主從切換效率等方面還需要做進(jìn)一步的優(yōu)化研究。并且,在采用通訊鏈路這一點(diǎn)上,也可以做到更有效的采用MAC地址的方式,在提高通訊機(jī)制以及數(shù)據(jù)傳輸準(zhǔn)確性上也需做進(jìn)一步研究。
參考文獻(xiàn):
[1] 邢傳星.VTS雙機(jī)熱備系統(tǒng)的可靠性研究與應(yīng)用[D].中國(guó)優(yōu)秀碩士學(xué)位論文全文數(shù)據(jù)庫(kù),2009.
[2] 姚穎熹.LINUX下雙機(jī)數(shù)據(jù)熱備份的設(shè)計(jì)與實(shí)現(xiàn)[D].電子科技大學(xué),2001.
[3] 李大夜.基于linux的集群和心跳設(shè)計(jì)[D].哈爾濱工業(yè)大學(xué),2006.
[4] 朱雄輝.嵌入式Linux的研究及其設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)[D].西安電子科技大學(xué),2002.
[5] 田灼.雙機(jī)容錯(cuò)熱備份系統(tǒng)研究與實(shí)現(xiàn)[D].哈爾濱理工大學(xué),2003.