本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種雙機(jī)備份的方法和裝置。
背景技術(shù):服務(wù)器的故障可能由各種原因引起,如設(shè)備故障、操作系統(tǒng)故障、軟件系統(tǒng)故障等等。雙機(jī)熱備系統(tǒng)解決方案為用戶提供了具有單點(diǎn)故障容錯(cuò)能力的系統(tǒng)平臺(tái)。它采用主服務(wù)發(fā)生故障時(shí)備用服務(wù)器接管的機(jī)制,實(shí)現(xiàn)在線故障自動(dòng)切換,實(shí)現(xiàn)系統(tǒng)7×24小時(shí)不間斷運(yùn)行,避免停機(jī)造成的損失。雙機(jī)熱備按工作中的切換方式分為:主-備方式(Active-Standby方式)和雙主機(jī)方式(Active-Active方式),主-備方式即指的是一臺(tái)服務(wù)器處于某種業(yè)務(wù)的激活狀態(tài)(即Active狀態(tài)),另一臺(tái)服務(wù)器處于該業(yè)務(wù)的備用狀態(tài)(即Standby狀態(tài))。而雙主機(jī)方式即指兩種不同業(yè)務(wù)分別在兩臺(tái)服務(wù)器上互為主備狀態(tài)(即Active-Standby和Standby-Active狀態(tài))。通常工作流程與倒換步驟:1、開啟本地端口,處于偵聽狀態(tài),嘗試連接遠(yuǎn)程端口,發(fā)現(xiàn)主用服務(wù)器;2、如果連接失敗,創(chuàng)建虛擬IP,開啟本機(jī)服務(wù)。并每隔指定時(shí)間嘗試下一次連接,直至連接成功;3、如果連接成功,對(duì)照本機(jī)服務(wù)狀態(tài),如果本機(jī)服務(wù)也正在運(yùn)行,則檢查本機(jī)是否為默認(rèn)主機(jī),是則本機(jī)服務(wù)器工作在主用狀態(tài),否則關(guān)閉本機(jī)業(yè)務(wù),刪除虛擬IP;4、本機(jī)服務(wù)器端口偵聽接受外部連接,接收到連接時(shí)則開始響應(yīng)遠(yuǎn)程客戶端數(shù)據(jù)請(qǐng)求。5、關(guān)閉本機(jī)業(yè)務(wù),刪除虛擬IP?,F(xiàn)有的雙機(jī)熱備方法中,由于使用單獨(dú)的心跳接口,與業(yè)務(wù)接口不是同一物理接口;檢測時(shí)可能出現(xiàn)服務(wù)器通信正常,而業(yè)務(wù)故障的情況;主備服務(wù)器發(fā)生倒換時(shí),原主服務(wù)器重新啟動(dòng)后,有時(shí)需要再倒換一次,影響了效率與業(yè)務(wù);使用虛擬IP地址參與業(yè)務(wù)邏輯,多了一次地址轉(zhuǎn)換,使得業(yè)務(wù)處理較為麻煩。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明的實(shí)施例提供了一種雙機(jī)備份方法和裝置,解決主備機(jī)制不精準(zhǔn),業(yè)務(wù)處理效率低下的問題。為達(dá)到上述目的,采用如下技術(shù)方案:本發(fā)明公開了一種雙機(jī)備份方法,其特征在于,包括如下步驟:第一服務(wù)器讀取本地配置文件,使用臨時(shí)地址訪問數(shù)據(jù)庫;第一服務(wù)器讀取數(shù)據(jù)庫中的服務(wù)器表,根據(jù)服務(wù)器表中的狀態(tài)判斷工作角色:如果沒有偵測到作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為主服務(wù)器地址,將第一服務(wù)器設(shè)置為主服務(wù)器;如果偵測到數(shù)據(jù)庫中已經(jīng)有一個(gè)作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為備用服務(wù)器地址,將第一服務(wù)器設(shè)置為備用服務(wù)器;當(dāng)備用服務(wù)器偵測到主服務(wù)器故障時(shí),則修改自己的IP地址為主服務(wù)器地址,將備用服務(wù)器配置為主服務(wù)器;當(dāng)主服務(wù)器偵測到主服務(wù)器已經(jīng)存在時(shí),則修改自己的IP地址為備用服務(wù)器地址,將主服務(wù)器配置為備用服務(wù)器。優(yōu)選的,所述第一服務(wù)器中包括三個(gè)進(jìn)程:業(yè)務(wù)進(jìn)程、心跳進(jìn)程、喂狗進(jìn)程。優(yōu)選的,所述主服務(wù)器中的心跳進(jìn)程處于監(jiān)聽狀態(tài),接收并響應(yīng)來自備用服務(wù)器的心跳探測;喂狗進(jìn)程打開操作系統(tǒng)內(nèi)核提供的應(yīng)用,并定時(shí)給系統(tǒng)喂狗,避免系統(tǒng)被軟狗復(fù)位;當(dāng)喂狗進(jìn)程異常時(shí),系統(tǒng)將被軟狗復(fù)位。優(yōu)選的,所述心跳進(jìn)程發(fā)起向主服務(wù)器的心跳探測,業(yè)務(wù)進(jìn)程與主服務(wù)器定時(shí)更新業(yè)務(wù)數(shù)據(jù)。優(yōu)選的,方法還包括:所述心跳進(jìn)程檢測到發(fā)生故障時(shí),備用服務(wù)器配置自己的IP地址為主服務(wù)器地址,并刷新所述服務(wù)器表中IP地址、主備狀態(tài);故障主機(jī)重新復(fù)位后,主服務(wù)器使用臨時(shí)IP地址,偵測到主服務(wù)器已經(jīng)存在,則重新配置自己的IP地址為備用服務(wù)器地址,并刷新所述服務(wù)器表中IP為備用IP地址,主備狀態(tài)。本發(fā)明還公開了一種雙機(jī)備份裝置,包括如下步驟:讀取模塊,供第一服務(wù)器讀取本地配置文件,使用臨時(shí)地址訪問數(shù)據(jù)庫;角色判斷模塊,供第一服務(wù)器讀取數(shù)據(jù)庫中的服務(wù)器表,根據(jù)服務(wù)器表中的狀態(tài)判斷工作角色:如果沒有偵測到作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為主服務(wù)器地址,將第一服務(wù)器設(shè)置為主服務(wù)器;如果偵測到數(shù)據(jù)庫中已經(jīng)有一個(gè)作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為備用服務(wù)器地址,將第一服務(wù)器設(shè)置為備用服務(wù)器;第一配置模塊,供當(dāng)備用服務(wù)器偵測到主服務(wù)器故障時(shí),則修改自己的IP地址為主服務(wù)器地址,將備用服務(wù)器配置為主服務(wù)器;第二配置模塊,供當(dāng)主服務(wù)器偵測到主服務(wù)器已經(jīng)存在時(shí),則修改自己的IP地址為備用服務(wù)器地址,將主服務(wù)器配置為備用服務(wù)器。優(yōu)選的,所述第一服務(wù)器中包括三個(gè)進(jìn)程:業(yè)務(wù)進(jìn)程、心跳進(jìn)程、喂狗進(jìn)程。優(yōu)選的,所述主服務(wù)器中的心跳進(jìn)程處于監(jiān)聽狀態(tài),接收并響應(yīng)來自備用服務(wù)器的心跳探測;喂狗進(jìn)程打開操作系統(tǒng)內(nèi)核提供的應(yīng)用,并定時(shí)給系統(tǒng)喂狗,避免系統(tǒng)被軟狗復(fù)位;當(dāng)喂狗進(jìn)程異常時(shí),系統(tǒng)將被軟狗復(fù)位。優(yōu)選的,所述心跳進(jìn)程發(fā)起向主服務(wù)器的心跳探測,業(yè)務(wù)進(jìn)程與主服務(wù)器定時(shí)更新業(yè)務(wù)數(shù)據(jù)。優(yōu)選的,裝置還包括檢測模塊,供所述心跳進(jìn)程檢測到發(fā)生故障時(shí),備用服務(wù)器配置自己的IP地址為主服務(wù)器地址,并刷新所述服務(wù)器表中IP地址、主備狀態(tài);故障主機(jī)重新復(fù)位后,主服務(wù)器使用臨時(shí)IP地址,偵測到主服務(wù)器已經(jīng)存在,則重新配置自己的IP地址為備用服務(wù)器地址,并刷新所述服務(wù)器表中IP為備用IP地址,主備狀態(tài)。本發(fā)明實(shí)施例提供的一種雙機(jī)備份的方法和裝置,使用同一配置文件監(jiān)測業(yè)務(wù)級(jí)狀態(tài),可以檢測出服務(wù)器通信正常而業(yè)務(wù)出現(xiàn)故障的情況;主備服務(wù)器發(fā)生倒換時(shí),原主服務(wù)器重新啟動(dòng)后,不會(huì)產(chǎn)生二次倒換;且服務(wù)器直接提供服務(wù),無地址轉(zhuǎn)換過程,增強(qiáng)了業(yè)務(wù)處理的效率。附圖說明圖1為本發(fā)明實(shí)施例一提供的一種雙機(jī)備份方法的流程圖;圖2為本發(fā)明實(shí)施例二提供的一種雙機(jī)備份裝置的模塊結(jié)構(gòu)圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例一種雙機(jī)備份方法和裝置進(jìn)行詳細(xì)描述。本發(fā)明公開的方案中,服務(wù)器發(fā)生主備倒換時(shí),主服務(wù)器發(fā)生故障時(shí),備用服務(wù)器切換自己的IP地址為主服務(wù)器的IP地址,并刷新服務(wù)器表中IP地址、主備狀態(tài),即將預(yù)置的備用服務(wù)器轉(zhuǎn)為主服務(wù)器。故障的主服務(wù)器重新啟動(dòng)后,流程與初始啟動(dòng)類似,使用臨時(shí)IP地址,發(fā)現(xiàn)主服務(wù)器已經(jīng)存在,則重新配置自己的IP地址為備用地址,并刷新服務(wù)器表中IP為備用IP地址,即將主服務(wù)器轉(zhuǎn)為備用服務(wù)器。本發(fā)明公開了一種雙機(jī)備份方法,如圖1所示,包括如下步驟:步驟101:第一服務(wù)器讀取本地配置文件,使用臨時(shí)地址訪問數(shù)據(jù)庫;所述本地配置文件為一個(gè)本地磁盤中的文件,網(wǎng)絡(luò)配置好后,將相應(yīng)的配置數(shù)據(jù)存放在該文件中,系統(tǒng)上電或復(fù)位,讀取該文件進(jìn)行系統(tǒng)配置。第一服務(wù)器中包括三個(gè)進(jìn)程:業(yè)務(wù)進(jìn)程、心跳進(jìn)程、喂狗進(jìn)程;分別讀取本地配置文件進(jìn)行加載。數(shù)據(jù)庫中保存服務(wù)器表,該數(shù)據(jù)庫中也可以存放其他業(yè)務(wù)表項(xiàng)。啟動(dòng)時(shí),由于第一服務(wù)器無法預(yù)知是以主用機(jī)還是備用機(jī)的角色工作,因此將讀取本地配置文件并暫時(shí)使用臨時(shí)地址來訪問數(shù)據(jù)庫,由數(shù)據(jù)庫中已有的服務(wù)器表中的狀態(tài)來決定自己的工作角色,并在數(shù)據(jù)庫中添加服務(wù)器信息。其中,臨時(shí)地址為人為指定,本實(shí)施例中,設(shè)定10.10.10.10為主服務(wù)器地址,10.10.10.11為備用服務(wù)器地址,10.10.10.12為臨時(shí)地址。服務(wù)器表結(jié)構(gòu)示例步驟102:第一服務(wù)器讀取數(shù)據(jù)庫中的服務(wù)器表,根據(jù)服務(wù)器表中的狀態(tài)判斷工作角色:如果沒有偵測到作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為主服務(wù)器地址,將第一服務(wù)器設(shè)置為主服務(wù)器;如果偵測到數(shù)據(jù)庫中已經(jīng)有一個(gè)作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為備用服務(wù)器地址,將第一服務(wù)器設(shè)置為備用服務(wù)器;數(shù)據(jù)庫訪問沒有特別之處,第一服務(wù)器表初始化時(shí)并無記錄。當(dāng)?shù)谝环?wù)器(如SERVERA)啟動(dòng)后,第一服務(wù)器的網(wǎng)絡(luò)接口使用臨時(shí)地址10.10.10.12訪問數(shù)據(jù)庫(如IP地址為:10.20.20.20),讀取數(shù)據(jù)庫中的服務(wù)器表,根據(jù)服務(wù)器表中的狀態(tài)判斷第一服務(wù)器的工作角色,如果沒有偵測到主服務(wù)器,則第一服務(wù)器更改自己的地址為主服務(wù)器地址10.10.10.10,并在數(shù)據(jù)庫中增加一條記錄,如下表所示:10.10.10.10(SERVER_IP)SERVERA(SERVER_NAME)1(ACTIVE_STATUS)如果偵測到數(shù)據(jù)庫中已經(jīng)有一個(gè)作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為備用服務(wù)器地址10.10.10.11,并在數(shù)據(jù)庫中增加一條記錄,如下表所示:10.10.10.11(SERVER_IP)SERVERB(SERVER_NAME)0(ACTIVE_STATUS)主服務(wù)器中,業(yè)務(wù)進(jìn)程實(shí)現(xiàn)相應(yīng)業(yè)務(wù),心跳進(jìn)程服務(wù)證主備服務(wù)器之間的通信,從而使備用服務(wù)器能夠獲知主服務(wù)器是否健康工作,喂狗進(jìn)程,用于保證本機(jī)正常工作,發(fā)生故障后能夠自行復(fù)位。故障主機(jī)重新復(fù)位后,主服務(wù)器使用臨時(shí)IP地址,偵測到主服務(wù)器已經(jīng)存在,則重新配置自己的IP地址為備用服務(wù)器地址,并刷新所述服務(wù)器表中IP為備用IP地址和主備狀態(tài)。第一服務(wù)器工作中主用狀態(tài)時(shí),心跳進(jìn)程處于監(jiān)聽狀態(tài),接收并響應(yīng)來自備用服務(wù)器的心跳探測。喂狗進(jìn)程打開操作系統(tǒng),如Linux的內(nèi)核提供的軟狗(softwarewatchdog),并定時(shí)給系統(tǒng)喂狗,避免系統(tǒng)被軟狗復(fù)位。當(dāng)喂狗進(jìn)程異常,此時(shí)被認(rèn)為業(yè)務(wù)異常,系統(tǒng)將被軟狗復(fù)位。實(shí)現(xiàn)系統(tǒng)的自動(dòng)恢復(fù)。其中,主服務(wù)器中的心跳進(jìn)程處于監(jiān)聽狀態(tài),接收并響應(yīng)來自備用服務(wù)器的心跳探測;喂狗進(jìn)程打開操作系統(tǒng)內(nèi)核提供的應(yīng)用,并定時(shí)給系統(tǒng)喂狗,避免系統(tǒng)被軟狗復(fù)位;當(dāng)喂狗進(jìn)程異常時(shí),系統(tǒng)將被軟狗復(fù)位。心跳進(jìn)程發(fā)起向主服務(wù)器的心跳探測,業(yè)務(wù)進(jìn)程與主服務(wù)器定時(shí)更新業(yè)務(wù)數(shù)據(jù)。主備服務(wù)器之間的心跳通過LAN進(jìn)行通信(與客戶端、服務(wù)器業(yè)務(wù)接口相同)。服務(wù)器工作中備用狀態(tài)時(shí),心跳進(jìn)程處于主動(dòng)發(fā)起狀態(tài),發(fā)起向主用服務(wù)器的心跳探測;備用狀態(tài)時(shí),喂狗進(jìn)程不啟動(dòng),業(yè)務(wù)進(jìn)程只與主用服務(wù)器定時(shí)更新業(yè)務(wù)數(shù)據(jù)。步驟103:當(dāng)備用服務(wù)器偵測到主服務(wù)器故障時(shí),則修改自己的IP地址為主服務(wù)器地址,將備用服務(wù)器配置為主服務(wù)器;當(dāng)備用服務(wù)器SERVERB偵測到主服務(wù)器故障,即主服務(wù)器連續(xù)多次沒有心跳反饋時(shí),則修改數(shù)據(jù)庫中服務(wù)器的狀態(tài),并修改自己的IP地址為主服務(wù)器地址:10.10.10.10(其他記錄則狀態(tài)改為0),并將備用服務(wù)器配置為主服務(wù)器。10.10.10.10(SERVER_IP)SERVERB(SERVER_NAME)1(ACTIVE_STATUS)當(dāng)原主服務(wù)器SERVERA重新啟動(dòng)后,偵測到主服務(wù)器已經(jīng)存在,則SERVERA按照備用服務(wù)器配置自己。步驟104:當(dāng)主服務(wù)器偵測到主服務(wù)器已經(jīng)存在時(shí),則修改自己的IP地址為備用服務(wù)器地址,將主服務(wù)器配置為備用服務(wù)器。當(dāng)主服務(wù)器SERVERB啟動(dòng)時(shí),如果發(fā)現(xiàn)數(shù)據(jù)庫中已經(jīng)有一個(gè)主服務(wù)器,這時(shí),SERVERB把自己的地址設(shè)置為備用服務(wù)器地址10.10.10.11,并在數(shù)據(jù)庫中增加一條記錄,如下10.10.10.11(SERVER_IP)SERVERB(SERVER_NAME)0(ACTIVE_STATUS)心跳進(jìn)程檢測到主服務(wù)器發(fā)生故障時(shí),備用服務(wù)器配置自己的IP地址為主服務(wù)器地址,并刷新數(shù)據(jù)庫表中IP地址、主備狀態(tài);將自己配置為備用服務(wù)器,從而完成轉(zhuǎn)換過程。本發(fā)明實(shí)施例提供的一種雙機(jī)備份的方法和裝置,使用同一配置文件監(jiān)測業(yè)務(wù)級(jí)狀態(tài),可以檢測出服務(wù)器通信正常而業(yè)務(wù)出現(xiàn)故障的情況;主備服務(wù)器發(fā)生倒換時(shí),原主服務(wù)器重新啟動(dòng)后,不會(huì)產(chǎn)生二次倒換;且服務(wù)器直接提供服務(wù),無地址轉(zhuǎn)換過程,增強(qiáng)了業(yè)務(wù)處理的效率。本發(fā)明還公開了一種雙機(jī)備份裝置,如圖2所示,包括如下步驟:讀取模塊201,供第一服務(wù)器讀取本地配置文件,使用臨時(shí)地址訪問數(shù)據(jù)庫;角色判斷模塊202,供第一服務(wù)器讀取數(shù)據(jù)庫中的服務(wù)器表,根據(jù)服務(wù)器表中的狀態(tài)判斷工作角色:如果沒有偵測到作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為主服務(wù)器地址,將第一服務(wù)器設(shè)置為主服務(wù)器;如果偵測到數(shù)據(jù)庫中已經(jīng)有一個(gè)作為主服務(wù)器的第二服務(wù)器,則配置第一服務(wù)器的地址為備用服務(wù)器地址,將第一服務(wù)器設(shè)置為備用服務(wù)器;第一配置模塊203,供當(dāng)備用服務(wù)器偵測到主服務(wù)器故障時(shí),則修改自己的IP地址為主服務(wù)器地址,將備用服務(wù)器配置為主服務(wù)器;第二配置模塊204,供當(dāng)主服務(wù)器偵測到主服務(wù)器已經(jīng)存在時(shí),則修改自己的IP地址為備用服務(wù)器地址,將主服務(wù)器配置為備用服務(wù)器。優(yōu)選的,所述第一服務(wù)器中包括三個(gè)進(jìn)程:業(yè)務(wù)進(jìn)程、心跳進(jìn)程、喂狗進(jìn)程。優(yōu)選的,所述主服務(wù)器中的心跳進(jìn)程處于監(jiān)聽狀態(tài),接收并響應(yīng)來自備用服務(wù)器的心跳探測;喂狗進(jìn)程打開操作系統(tǒng)內(nèi)核提供的應(yīng)用,并定時(shí)給系統(tǒng)喂狗,避免系統(tǒng)被軟狗復(fù)位;當(dāng)喂狗進(jìn)程異常時(shí),系統(tǒng)將被軟狗復(fù)位。優(yōu)選的,所述心跳進(jìn)程發(fā)起向主服務(wù)器的心跳探測,業(yè)務(wù)進(jìn)程與主服務(wù)器定時(shí)更新業(yè)務(wù)數(shù)據(jù)。優(yōu)選的,裝置還包括檢測模塊,供所述心跳進(jìn)程檢測到發(fā)生故障時(shí),備用服務(wù)器配置自己的IP地址為主服務(wù)器地址,并刷新所述服務(wù)器表中IP地址、主備狀態(tài);故障主機(jī)重新復(fù)位后,主服務(wù)器使用臨時(shí)IP地址,偵測到主服務(wù)器已經(jīng)存在,則重新配置自己的IP地址為備用服務(wù)器地址,并刷新所述服務(wù)器表中IP為備用IP地址,主備狀態(tài)。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。