摘 要:本文對(duì)雙機(jī)熱備軟件最基礎(chǔ)的功能要點(diǎn)及實(shí)現(xiàn)邏輯進(jìn)行分析,設(shè)計(jì)并實(shí)現(xiàn)雙機(jī)熱備中雙主機(jī)方式(Active-Active方式)的熱備切換功能。為以后雙機(jī)熱備軟件的使用和后續(xù)復(fù)雜功能的研究提供了一些參考和開發(fā)思路。
關(guān)鍵詞:軟件開發(fā);雙機(jī)熱備;網(wǎng)絡(luò)通信
中圖分類號(hào):TP309文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2018)09-0056-05
Abstract:In this paper,the most basic function points and implementation logic of dual hot standby software are analyzed,and the hot standby switching function of Active-Active mode is designed and completed. It provides some reference and development ideas for the future use of the dual machine hot standby software and the subsequent complex function.
Keywords:software development;dual machine hot standby;network communication
0 引 言
雙機(jī)熱備指的是就是將中心服務(wù)器安裝成互為備份的兩臺(tái)服務(wù)器,并且在同一時(shí)間內(nèi)只有一臺(tái)服務(wù)器運(yùn)行。當(dāng)其中運(yùn)行著的一臺(tái)服務(wù)器出現(xiàn)故障無(wú)法啟動(dòng)時(shí),另一臺(tái)備用服務(wù)器會(huì)迅速的自動(dòng)啟動(dòng)并運(yùn)行,從而保證整個(gè)網(wǎng)絡(luò)系統(tǒng)的正常運(yùn)行。雙機(jī)熱備的工作機(jī)制實(shí)際上是為整個(gè)網(wǎng)絡(luò)系統(tǒng)的中心服務(wù)器提供了一種故障自動(dòng)恢復(fù)能力。
1 雙機(jī)熱備拓?fù)浣Y(jié)構(gòu)分析
雙機(jī)熱備的拓?fù)浣Y(jié)構(gòu),在簡(jiǎn)單的示例上的連接如圖1所示,即把兩臺(tái)熱備服務(wù)器簡(jiǎn)單的進(jìn)行連接通信。
但是其實(shí),在圖1上面縮減了以太網(wǎng)的存在,真實(shí)的拓?fù)鋱D如圖2所示。
在一些網(wǎng)絡(luò)設(shè)計(jì)的拓?fù)鋱D中,以太網(wǎng)確實(shí)是可以進(jìn)行縮減,但是在雙機(jī)熱備的拓?fù)鋱D中,以太網(wǎng)有它的特殊存在意義。因此無(wú)論是兩臺(tái)服務(wù)器直接使用網(wǎng)線進(jìn)行點(diǎn)對(duì)點(diǎn)互聯(lián),還是通過(guò)路由進(jìn)行互聯(lián),只要使用了以太網(wǎng)進(jìn)行連接,兩臺(tái)服務(wù)器要進(jìn)行通信都必須通過(guò)“網(wǎng)關(guān)”來(lái)進(jìn)行通信。
眾所周知,從一個(gè)房間走到另一個(gè)房間,必然要經(jīng)過(guò)一扇門。同樣,從一個(gè)網(wǎng)絡(luò)向另一個(gè)網(wǎng)絡(luò)發(fā)送信息,也必須經(jīng)過(guò)一道“關(guān)口”,這道關(guān)口就是網(wǎng)關(guān)。顧名思義,網(wǎng)關(guān)(Gateway)就是一個(gè)網(wǎng)絡(luò)連接到另一個(gè)網(wǎng)絡(luò)的“關(guān)口”,也就是網(wǎng)絡(luò)關(guān)卡。
在雙機(jī)熱備軟件設(shè)計(jì)上,網(wǎng)關(guān)對(duì)于判斷服務(wù)器是否在正常運(yùn)行,有著很重要的邏輯意義。詳細(xì)的邏輯判斷在下文進(jìn)行闡述。
2 雙機(jī)熱備服務(wù)器切換邏輯分析
在雙機(jī)熱備軟件運(yùn)作的邏輯中,當(dāng)主用服務(wù)處于非正常工作的時(shí)候,需要把備用服務(wù)啟動(dòng)來(lái)替代主用服務(wù)器進(jìn)行工作。而判斷服務(wù)器是否正常運(yùn)行就是雙機(jī)熱備軟件開始運(yùn)作的第一步。
每隔少許時(shí)間,備用服務(wù)器都會(huì)通過(guò)線路發(fā)送“心跳”來(lái)查看主用服務(wù)器的運(yùn)行狀態(tài),從而判斷是否需要啟動(dòng),如圖3所示。
但是該設(shè)計(jì)有個(gè)無(wú)法解決的邏輯判斷,就是無(wú)法判斷出主用服務(wù)器出現(xiàn)問(wèn)題還是線路出現(xiàn)問(wèn)題,如圖4和5所示。
所以當(dāng)線路出現(xiàn)問(wèn)題時(shí),按照?qǐng)D5中的邏輯判斷,便會(huì)啟動(dòng)備用服務(wù)器。但是此時(shí)主用服務(wù)器還是在正常工作,啟用備用服務(wù)器就是一個(gè)嚴(yán)重的邏輯錯(cuò)誤,在切換邏輯判斷上不能使用這個(gè)方法。
為了解決該問(wèn)題,需要使用到上文的拓?fù)浣Y(jié)構(gòu),也就是需要使用到“網(wǎng)關(guān)”來(lái)進(jìn)行邏輯判斷,如圖6所示。
當(dāng)備用服務(wù)器往主用服務(wù)器發(fā)送心跳時(shí),心跳數(shù)據(jù)需要先經(jīng)過(guò)以太網(wǎng)(網(wǎng)關(guān)),再到達(dá)主用服務(wù)器。如果心跳并未到達(dá)網(wǎng)關(guān)就已經(jīng)停止,則說(shuō)明備用服務(wù)器線路異常,主熱備功能失效,需要提醒設(shè)備的管理人員進(jìn)行相應(yīng)的處理。
而當(dāng)心跳數(shù)據(jù)已經(jīng)通過(guò)網(wǎng)關(guān)時(shí),但是未能到達(dá)主用服務(wù)器,則能判斷主用服務(wù)器處于非正常工作狀態(tài)。產(chǎn)生這種問(wèn)題的原因有可能是主用服務(wù)器線路斷開,也有可能是主用服務(wù)器已經(jīng)死機(jī),無(wú)法進(jìn)行相應(yīng)的功能。雖然無(wú)法具體定位到是線路問(wèn)題還是主用服務(wù)器問(wèn)題,但是無(wú)論哪個(gè)情況,復(fù)用服務(wù)器都需要啟動(dòng)起來(lái)來(lái)替代主用服務(wù)器進(jìn)行工作。
本節(jié)切換邏輯判斷總體流程如圖7所示。
3 雙機(jī)熱備恢復(fù)熱備功能邏輯分析
在雙機(jī)熱備功能中,主用服務(wù)器和備用服務(wù)器都有可能出現(xiàn)異常情況,導(dǎo)致熱備功能失效。當(dāng)主用服務(wù)器或者備用服務(wù)器熱備功能出現(xiàn)異常后,設(shè)備人員修復(fù)設(shè)備完成后,軟件需要自動(dòng)對(duì)熱備的恢復(fù)功能進(jìn)行邏輯處理。
這種邏輯處理具體有兩種情況:一種為備用服務(wù)器產(chǎn)生異常,而主用服務(wù)器還在正常運(yùn)作的情況。在這情況下,備用重新恢復(fù)熱備功能的時(shí)候不能影響主用服務(wù)器的正常運(yùn)行,也不能把自己替代成主用服務(wù)器來(lái)處理。第二種情況為,主用服務(wù)器和備用服務(wù)器都由于某些特殊的原因先后出現(xiàn)異常,設(shè)備人員未能及時(shí)處理,兩臺(tái)服務(wù)器同時(shí)無(wú)法使用。在這情況下,先修復(fù)的服務(wù)器要判斷為主用服務(wù)器,后修復(fù)的服務(wù)器要判斷為備用服務(wù)器,當(dāng)兩臺(tái)服務(wù)器正常時(shí),主熱備功能恢復(fù)正常使用。
完成這個(gè)邏輯處理,需要兩個(gè)校驗(yàn)數(shù)據(jù),一個(gè)是主用服務(wù)器使用的標(biāo)記信息(通常使用主用服務(wù)器的IP地址);另外一個(gè)是主用服務(wù)器正常運(yùn)行時(shí),每一個(gè)時(shí)間心跳的最后時(shí)間的刷新紀(jì)錄。這兩個(gè)校驗(yàn)數(shù)據(jù)通過(guò)發(fā)送心跳和心跳回饋的方式進(jìn)行消息傳輸。
該功能邏輯判斷流程如圖8所示。
4 將服務(wù)器動(dòng)態(tài)IP應(yīng)用到雙機(jī)熱備的邏輯分析
在雙機(jī)熱備軟件的使用中,最為典型應(yīng)用場(chǎng)景就是要求在主用服務(wù)器應(yīng)用的情況下,無(wú)論切換的是服務(wù)器A還是服務(wù)器B,對(duì)外的訪問(wèn)都是使用同一IP地址。要想在雙機(jī)熱備軟件上的實(shí)現(xiàn)這種功能,就必須做到當(dāng)主用服務(wù)器切換到服務(wù)器A時(shí),將動(dòng)態(tài)IP地址添加到服務(wù)器A;當(dāng)主用服務(wù)器切換到服務(wù)器B時(shí),把服務(wù)器上面A的動(dòng)態(tài)IP地址去除。
在圖9中,將切換邏輯,恢復(fù)邏輯,以及動(dòng)態(tài)IP邏輯整合到一起,完成最基本的雙機(jī)熱備軟件功能。
根據(jù)圖9中的邏輯,記錄服務(wù)器A與服務(wù)器B中模擬進(jìn)行切換的時(shí)間點(diǎn)以及服務(wù)器A與服務(wù)器B的狀態(tài),如表1所示。
表1模擬演示了備用服務(wù)器B從失連到連接后的狀態(tài),主用服務(wù)器A從失連到備用服務(wù)器B替代主用服務(wù)器的狀態(tài),服務(wù)器A與服務(wù)器B同時(shí)無(wú)法正常工作后,先運(yùn)行的服務(wù)器為主用服務(wù)器的狀態(tài),運(yùn)行結(jié)果正確,運(yùn)行切換時(shí)間短,熱備功能效率高。
5 結(jié) 論
雙機(jī)熱備的需求看似簡(jiǎn)單,但是也包含了好幾種的應(yīng)用場(chǎng)景在里面,需要具體的去分析各個(gè)場(chǎng)景中的邏輯判斷的需要,也需要考慮服務(wù)器中各個(gè)參數(shù)的變化情況,以確保主用與備用的切換和判斷,切換后的自動(dòng)恢復(fù),以及服務(wù)器功能正常穩(wěn)定的運(yùn)行。
誠(chéng)然,雙機(jī)熱備只是一種小功能產(chǎn)品,無(wú)法與一些大的項(xiàng)目做比較,但是在保障整個(gè)網(wǎng)絡(luò)系統(tǒng)的正常運(yùn)行之中也是有它的一席之地。本文詳細(xì)的羅列了雙機(jī)熱備中各個(gè)功能要點(diǎn)的實(shí)現(xiàn)思路,以及如何把一個(gè)常見的動(dòng)態(tài)IP功能整合到雙機(jī)熱備的功能中,為后續(xù)將更多的功能添加與開發(fā)提供了一些參考。
參考文獻(xiàn):
[1] 施威銘研究室.網(wǎng)絡(luò)概論 [M].北京:中國(guó)鐵道出版社,2002.
[2] 吳功宜.計(jì)算機(jī)網(wǎng)絡(luò) [M].北京:清華大學(xué)出版社,2006.
[3] 朱少民.軟件工程導(dǎo)論 [M].北京:清華大學(xué)出版社,2009.
[4] 錢曉明,朱健江,王曉勇,等.軟件工程 [M].北京:中國(guó)鐵道出版社,2007.
[5] 郭振民,丁紅.C語(yǔ)言程序設(shè)計(jì) [M].北京:中國(guó)水利水電出版社,2009.
作者簡(jiǎn)介:狄添舜(1989-),男,漢族,廣東廣州人,軟件設(shè)計(jì)師,學(xué)士。研究方向:通信調(diào)度集群開發(fā)。