專利名稱:多機(jī)熱備的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及服務(wù)器熱備份技術(shù),尤其涉及一種多機(jī)熱備的方法及系統(tǒng)。
背景技術(shù):
目前廣泛應(yīng)用的服務(wù)器熱備實現(xiàn)是將服務(wù)器安裝為互為備份的兩臺或多臺服務(wù) 器,并且同時只有一臺服務(wù)器在運行,當(dāng)該服務(wù)器出現(xiàn)問題時,另一臺備機(jī)啟動并運行,從 而保證整個集群的正常運行。發(fā)明人在實施本發(fā)明過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下技術(shù)問題1.可能會由 于系統(tǒng)的原因?qū)е聦χ鳈C(jī)停止?fàn)顟B(tài)的誤判而使主機(jī)不適時機(jī)地切換為備機(jī)。2.在多臺備機(jī) 時存在多臺備機(jī)競爭主機(jī)的問題,可能會出現(xiàn)同一臺備機(jī)反復(fù)使用作為主機(jī)的問題。
發(fā)明內(nèi)容
本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種多機(jī)熱備的方法及系統(tǒng),以避 免不適時機(jī)切換主機(jī)和備機(jī),并避免同一備機(jī)被反復(fù)使用作為主機(jī)。為解決上述技術(shù)問題,本發(fā)明實施例采用如下技術(shù)方案提供一種多機(jī)熱備的方 法,方法包括設(shè)置主機(jī)和備機(jī)的用于標(biāo)示身份的啟動標(biāo)識,所述主機(jī)與所述備機(jī)的啟動標(biāo) 識之間滿足預(yù)設(shè)定順序;在啟動一為用戶提供服務(wù)的主機(jī)的同時,啟動至少兩臺備機(jī);檢 測所述主機(jī)的狀態(tài);當(dāng)所述主機(jī)處于停止?fàn)顟B(tài)時,各所述備機(jī)向所有比自身啟動標(biāo)識順序 靠后的所述備機(jī)發(fā)送推舉消息,收到預(yù)設(shè)定個數(shù)的推舉消息的備機(jī)確認(rèn)為代理主機(jī)開始為 用戶提供服務(wù)。本發(fā)明還提供一種多機(jī)熱備系統(tǒng),所述系統(tǒng)包括主機(jī),用于為用戶提供服務(wù);至 少兩臺備機(jī);啟動標(biāo)識設(shè)置單元,用于在所述主機(jī)啟動前對所述主機(jī)和各所述備機(jī)設(shè)置用 于標(biāo)示身份的啟動標(biāo)識,所述主機(jī)與所述備機(jī)的啟動標(biāo)識之間滿足預(yù)設(shè)定順序;監(jiān)控單元, 用于定時檢測所述主機(jī)及所述備機(jī)的運行狀態(tài);代理主機(jī)啟動單元,用于在所述監(jiān)控單元 檢測到所述主機(jī)為停止?fàn)顟B(tài)時,各所述備機(jī)向所有比自身啟動標(biāo)識順序靠后的所述備機(jī)發(fā) 送推舉消息,確認(rèn)收到預(yù)設(shè)定個數(shù)的推舉消息的備機(jī)為代理主機(jī)。本發(fā)明實施例的有益效果是只有在一臺備機(jī)收到所有其他備機(jī)的推舉消息時, 才確定主機(jī)為停止?fàn)顟B(tài),然后該備機(jī)啟動作為代理主機(jī),提高了多機(jī)熱備系統(tǒng)的穩(wěn)定性和
可靠度。主機(jī)及備機(jī)按一定順序設(shè)置啟動標(biāo)識,并且主機(jī)重啟后仍按照該順序設(shè)置啟動標(biāo) 識,保證了各備機(jī)之間在主機(jī)停止時按順序啟動作為主機(jī),防止一個備機(jī)多次競爭成為主 機(jī)使用,也提高了多機(jī)熱備系統(tǒng)的穩(wěn)定性和可靠度。下面結(jié)合附圖對本發(fā)明實施例作進(jìn)一步的詳細(xì)描述。
圖1是本發(fā)明多機(jī)熱備系統(tǒng)的結(jié)構(gòu)示意圖。
圖2是本發(fā)明多機(jī)熱備方法流程圖。圖3是本發(fā)明多機(jī)熱備系統(tǒng)的模塊圖。
具體實施例方式請參考圖1,是本發(fā)明多機(jī)熱備系統(tǒng)的結(jié)構(gòu)示意圖。該多機(jī)熱備系統(tǒng)是通過在后端 設(shè)置多臺運行服務(wù)程序的主機(jī)組成一服務(wù)器集群(Server Cluster),該服務(wù)器集群可以橫 向擴(kuò)展。該服務(wù)器集群由主機(jī)1和備機(jī)2-5組成,該主機(jī)1和備機(jī)2-5通過一交換機(jī)通訊 連接,遵循TCP協(xié)議。該多臺服務(wù)器同時啟動工作,該主機(jī)1為用戶提供服務(wù),該多機(jī)熱備 系統(tǒng)同時維護(hù)一個線程和三個隊列的增、刪、改,當(dāng)主機(jī)1的數(shù)據(jù)發(fā)生相應(yīng)的增、刪、改時同 時向增、刪、改隊列中的數(shù)據(jù),線程定期掃描這三個隊列,并將該數(shù)據(jù)廣播出去,備機(jī)2-5收 到消息并更新內(nèi)存或數(shù)據(jù)庫中的數(shù)據(jù),從而達(dá)到多個備機(jī)的數(shù)據(jù)同步。當(dāng)該主機(jī)停止服務(wù) 時,多機(jī)熱備系統(tǒng)推舉一備機(jī)作為代理主機(jī)開始為用戶提供服務(wù)。請參考圖2,是本發(fā)明多機(jī)熱備方法流程圖。步驟S21,通過一配置文件對主機(jī)及備機(jī)設(shè)置用于標(biāo)示身份的啟動標(biāo)識。該啟動標(biāo)識為每臺服務(wù)器唯一的身份標(biāo)識,且所述主機(jī)與所述備機(jī)的啟動標(biāo)識之 間滿足預(yù)設(shè)定順序;該預(yù)設(shè)定順序為數(shù)字順序或字母順序,例如0-9,啟動標(biāo)識為0的服務(wù) 器為主機(jī),其余為備機(jī);或a_j,啟動標(biāo)識為a的服務(wù)器為主機(jī),其余為備機(jī)。該預(yù)設(shè)定順序 可以為正序排列也可為倒序排列,如9-0,啟動標(biāo)識為9的服務(wù)器為主機(jī),其余為備機(jī);或 j_a,啟動標(biāo)識為j的服務(wù)器為主機(jī),其余為備機(jī)。本實施例中啟動標(biāo)識按照1-5的順序設(shè) 置,即主機(jī)啟動標(biāo)識為1,備機(jī)啟動標(biāo)識分別從2排列至5。步驟S22,在啟動一為用戶提供服務(wù)的主機(jī)的同時,啟動至少兩臺備機(jī)。通常備機(jī)的數(shù)量為2-9臺,本實施例中備機(jī)的數(shù)量為4臺,主機(jī)1啟動的同時,該 備機(jī)2-5同時全部啟動。啟動時主機(jī)1向子網(wǎng)內(nèi)的備機(jī)2-5發(fā)起連接,連接成功后每臺服 務(wù)器都向其他服務(wù)器發(fā)送“讀取啟動標(biāo)識”的請求,該請求攜帶了本機(jī)的啟動標(biāo)識。對方服 務(wù)器收到請求后,返回配置文件中的啟動標(biāo)識。步驟S23,檢測所述主機(jī)的狀態(tài);并判斷所述主機(jī)是否為停止?fàn)顟B(tài),若是則執(zhí)行步 驟S24,若否繼續(xù)檢測判斷主機(jī)狀態(tài)。當(dāng)主機(jī)的活動進(jìn)程或者該活動進(jìn)程所依賴的運行環(huán)境發(fā)生了故障時,主機(jī)的狀態(tài) 即為停止?fàn)顟B(tài),當(dāng)然導(dǎo)致主機(jī)的狀態(tài)為停止?fàn)顟B(tài)的原因還可以是現(xiàn)有技術(shù)中的其他原因, 在此不一一例舉。本實施例中檢測主機(jī)狀態(tài)的方法具體為,主機(jī)1為用戶提供服務(wù)的同時,向備機(jī) 2-5發(fā)送心跳信號,且各備機(jī)向比該備機(jī)啟動標(biāo)識順序靠后的大的備機(jī)發(fā)送心跳信號,該心 跳信號具體為表示本機(jī)處于活動狀態(tài)的心跳包,即優(yōu)先級高的備機(jī)向優(yōu)先級低的備機(jī)發(fā)送 心跳包標(biāo)示自己還處于活動狀態(tài),那么當(dāng)主機(jī)1停止時該優(yōu)先級高的備機(jī)則優(yōu)先競選為代 理主機(jī)。例如備機(jī)2向備機(jī)3-5發(fā)送心跳包。另一實施例中,啟動標(biāo)識按照倒序排列,主機(jī) 啟動標(biāo)識為5,備機(jī)啟動標(biāo)識為4-1,那么各備機(jī)向比該備機(jī)啟動標(biāo)識小的備機(jī)發(fā)送心跳信 號,不再贅述。步驟S24,若判斷所述主機(jī)處于停止?fàn)顟B(tài)時,根據(jù)一推舉機(jī)制推舉一備機(jī)作為代理 主機(jī)開始為用戶提供服務(wù)。
主機(jī)停止時,各個備機(jī)向所有比自身啟動標(biāo)識順序靠后的大的備機(jī)發(fā)送推舉消 息,收到預(yù)設(shè)定個數(shù)的推舉消息的備機(jī)確認(rèn)為主機(jī),所述預(yù)設(shè)定個數(shù)為所述主機(jī)與所述備 機(jī)的總數(shù)減2。本實施例中,如果該主機(jī)超過一定時間閥值未發(fā)送心跳包,各個備機(jī)向比自 己啟動標(biāo)識大的備機(jī)發(fā)送推舉消息,收到所述主機(jī)與所述備機(jī)的總數(shù)減2個即3個推舉消 息的備機(jī)確認(rèn)為主機(jī)。也即除本身和主機(jī)外所有的服務(wù)器都認(rèn)定主機(jī)已停止,并且該備機(jī) 收到了所有其他備機(jī)的推舉消息,那么該備機(jī)就確認(rèn)自己成為代理主機(jī)。另一實施例中,啟 動標(biāo)識按照倒序排列,各個備機(jī)向比自己啟動標(biāo)識小的備機(jī)發(fā)送推舉消息,收到所述主機(jī) 與所述備機(jī)的總數(shù)減2個推舉消息的備機(jī)確認(rèn)為主機(jī)。步驟S25,主機(jī)停止后重啟,根據(jù)所述預(yù)設(shè)定順序重設(shè)所述主機(jī)的啟動標(biāo)識。本實施方式中,主機(jī)1停止后重啟,根據(jù)由小到大的順序,該主機(jī)1的啟動該標(biāo)識 順次更改為6。請參考圖3,是本發(fā)明多機(jī)熱備系統(tǒng)的模塊圖。該多機(jī)熱備系統(tǒng)100包括主機(jī)10、 至少兩臺備機(jī)20、監(jiān)控單元30及代理主機(jī)啟動單元40。該主機(jī)10用于為用戶提供服務(wù)。該備機(jī)20用于再該主機(jī)10啟動的同時一起啟 動,作為備用服務(wù)器。該監(jiān)控單元30用于實時監(jiān)控該主機(jī)10及該備機(jī)20的如活動、停止等的運行狀 態(tài)。該代理主機(jī)啟動單元40,用于在所述監(jiān)控單元30檢測到所述主機(jī)10為停止?fàn)顟B(tài) 時,根據(jù)一推舉機(jī)制啟動一備機(jī)20作為代理主機(jī)為用戶提供服務(wù)。所述監(jiān)控單元30包括檢測模塊31,用于定時檢測所述主機(jī)10及所述備機(jī)20的運 行狀態(tài);判斷模塊32,用于判斷所述啟動標(biāo)識是否重復(fù)。該多機(jī)熱備系統(tǒng)100還包括啟動標(biāo)識設(shè)置單元50及報警單元60。該啟動標(biāo)識設(shè)置單元50用于在所述主機(jī)10啟動前對所述主機(jī)10和各所述備機(jī) 20設(shè)置用于標(biāo)示身份的啟動標(biāo)識,所述主機(jī)10與所述備機(jī)20的啟動標(biāo)識之間滿足預(yù)設(shè)定 順序,及在所述主機(jī)10停止后,根據(jù)各所述預(yù)設(shè)定順序重設(shè)所述主機(jī)10的啟動標(biāo)識。該報警單元60,用于在所述監(jiān)控單元30判斷所述啟動標(biāo)識有重復(fù)時發(fā)出報警提 示。該報警提示可以為聲音提示,閃光提示或者彈出一界面提示。然后,管理人員根據(jù)該報 警提示修改該錯誤的啟動標(biāo)識。其中,該預(yù)設(shè)定順序為數(shù)字順序或字母順序,可為倒序或順序排列的數(shù)字或字母 及其結(jié)合,所述推舉機(jī)制為各所述備機(jī)10向所有比自身啟動標(biāo)識順序靠后的備機(jī)20發(fā)送 推舉消息,收到預(yù)設(shè)定個數(shù)的推舉消息的備機(jī)20確認(rèn)為主機(jī),所述預(yù)設(shè)定個數(shù)為所述主機(jī) 10與所述備機(jī)20的總數(shù)減2。該主機(jī)10包括第一心跳單元101,所述備機(jī)20包括第二心跳單元201,分別用于 在所述主機(jī)10為用戶提供服務(wù)的同時,所述主機(jī)10向所有備機(jī)20發(fā)送心跳信號,及各所 述備機(jī)20向比該備機(jī)20啟動標(biāo)識順序靠后的備機(jī)20發(fā)送心跳信號。另外,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程, 是可以通過程序來指令相關(guān)的硬件來完成,該的程序可存儲于一計算機(jī)可讀存儲介質(zhì)中, 該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,該的存儲介質(zhì)可為磁碟、光 盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機(jī)存儲記憶體(Random AccessMemory,RAM)等。 以上該是本發(fā)明的具體實施方式
,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來 說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本 發(fā)明的保護(hù)范圍。
權(quán)利要求
一種多機(jī)熱備的方法,其特征在于,方法包括設(shè)置主機(jī)和備機(jī)的用于標(biāo)示身份的啟動標(biāo)識,所述主機(jī)與所述備機(jī)的啟動標(biāo)識之間滿足預(yù)設(shè)定順序;在啟動一為用戶提供服務(wù)的主機(jī)的同時,啟動至少兩臺備機(jī);檢測所述主機(jī)的狀態(tài);當(dāng)所述主機(jī)處于停止?fàn)顟B(tài)時,各所述備機(jī)向所有比自身啟動標(biāo)識順序靠后的所述備機(jī)發(fā)送推舉消息,收到預(yù)設(shè)定個數(shù)的推舉消息的備機(jī)確認(rèn)為代理主機(jī)開始為用戶提供服務(wù)。
2.如權(quán)利要求1所述的多機(jī)熱備的方法,其特征在于,所述預(yù)設(shè)定順序為數(shù)字順序或 字母順序,所述預(yù)設(shè)定個數(shù)為所述主機(jī)與所述備機(jī)的總數(shù)減2。
3.如權(quán)利要求1所述的多機(jī)熱備的方法,其特征在于,還包括 所述主機(jī)停止后重啟,根據(jù)所述預(yù)設(shè)定順序重設(shè)所述主機(jī)的啟動標(biāo)識。
4.如權(quán)利要求1所述的多機(jī)熱備的方法,其特征在于,所述主機(jī)為用戶提供服務(wù)的同 時,向所有備機(jī)發(fā)送心跳信號,且各所述備機(jī)向比該備機(jī)啟動標(biāo)識順序靠后的備機(jī)發(fā)送心 跳信號。
5.一種多機(jī)熱備系統(tǒng),其特征在于,所述系統(tǒng)包括 主機(jī),用于為用戶提供服務(wù);至少兩臺備機(jī);啟動標(biāo)識設(shè)置單元,用于在所述主機(jī)啟動前對所述主機(jī)和各所述備機(jī)設(shè)置用于標(biāo)示身 份的啟動標(biāo)識,所述主機(jī)與所述備機(jī)的啟動標(biāo)識之間滿足預(yù)設(shè)定順序; 監(jiān)控單元,用于定時檢測所述主機(jī)及所述備機(jī)的運行狀態(tài);代理主機(jī)啟動單元,用于在所述監(jiān)控單元檢測到所述主機(jī)為停止?fàn)顟B(tài)時,各所述備機(jī) 向所有比自身啟動標(biāo)識順序靠后的所述備機(jī)發(fā)送推舉消息,確認(rèn)收到預(yù)設(shè)定個數(shù)的推舉消 息的備機(jī)為代理主機(jī)。
6.如權(quán)利要求5所述的多機(jī)熱備的系統(tǒng),其特征在于,所述預(yù)設(shè)定順序為數(shù)字順序或 字母順序,所述預(yù)設(shè)定個數(shù)為所述主機(jī)與所述備機(jī)的總數(shù)減2。
7.如權(quán)利要求5所述的多機(jī)熱備系統(tǒng),其特征在于,所述主機(jī)停止后重啟,根據(jù)所述預(yù) 設(shè)定順序重設(shè)所述主機(jī)的啟動標(biāo)識。
8.如權(quán)利要求5所述的多機(jī)熱備的系統(tǒng),其特征在于,所述主機(jī)包括第一心跳單元,所 述備機(jī)包括第二心跳單元,分別用于在所述主機(jī)為用戶提供服務(wù)的同時,所述主機(jī)向所有 備機(jī)發(fā)送心跳信號,及各所述備機(jī)向比該備機(jī)啟動標(biāo)識順序靠后的備機(jī)發(fā)送心跳信號。
9.如權(quán)利要求5所述的多機(jī)熱備的系統(tǒng),其特征在于,所述監(jiān)控單元包括 檢測模塊,用于定時檢測所述主機(jī)及所述備機(jī)的運行狀態(tài);判斷模塊,用于判斷所述啟動標(biāo)識是否重復(fù); 所述多機(jī)熱備的系統(tǒng)還包括報警單元,用于在所述監(jiān)控單元判斷所述啟動標(biāo)識有重復(fù)時發(fā)出報警提示。
全文摘要
本發(fā)明涉及一種多機(jī)熱備的方法及系統(tǒng),該方法包括設(shè)置主機(jī)和備機(jī)的用于標(biāo)示身份的啟動標(biāo)識,所述主機(jī)與所述備機(jī)的啟動標(biāo)識之間滿足預(yù)設(shè)定順序;在啟動一為用戶提供服務(wù)的主機(jī)的同時,啟動至少兩臺備機(jī);檢測所述主機(jī)的狀態(tài);當(dāng)所述主機(jī)處于停止?fàn)顟B(tài)時,各所述備機(jī)向所有比自身啟動標(biāo)識順序靠后的所述備機(jī)發(fā)送推舉消息,收到預(yù)設(shè)定個數(shù)的推舉消息的備機(jī)確認(rèn)為代理主機(jī)開始為用戶提供服務(wù)。各備機(jī)之間在主機(jī)停止時按順序推舉作為主機(jī),防止一個備機(jī)多次競爭成為主機(jī)使用,也提高了多機(jī)熱備系統(tǒng)的穩(wěn)定性和可靠度。
文檔編號H04L1/22GK101917263SQ201010254150
公開日2010年12月15日 申請日期2010年8月16日 優(yōu)先權(quán)日2010年8月16日
發(fā)明者周中東 申請人:深圳市赫迪威信息技術(shù)有限公司