專利名稱:移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)通訊領(lǐng)域的緊耦合多機(jī)系統(tǒng),特別是涉及一種在群集系統(tǒng)服務(wù)器本地建立數(shù)據(jù)庫以提高歸屬位置寄存器(Home Location Register,簡稱HLR)用戶數(shù)據(jù)可用性的裝置及其實(shí)現(xiàn)方法。
背景技術(shù):
移動(dòng)通訊系統(tǒng)中,對用戶數(shù)據(jù)的可用性要求很高,需要實(shí)現(xiàn)24小時(shí)可訪問,如果出現(xiàn)用戶數(shù)據(jù)不可用,就會(huì)造成大量用戶無法使用移動(dòng)電話,帶來難以估量的損失。
提高用戶數(shù)據(jù)的可用性,目前主要是采用群集服務(wù)器(Cluster)的系統(tǒng)來實(shí)現(xiàn),群集服務(wù)器是一種緊耦合多機(jī)系統(tǒng),它由一組獨(dú)立的計(jì)算機(jī)構(gòu)成的,這些計(jì)算機(jī)彼此相互協(xié)作,就像單機(jī)系統(tǒng)一樣,用以確保關(guān)鍵任務(wù)程序和資源始終能讓客戶使用。
現(xiàn)有技術(shù)的具體方案是兩臺服務(wù)器共用一個(gè)磁陣,數(shù)據(jù)庫建在磁陣上。兩臺服務(wù)器共享一個(gè)外部IP,啟動(dòng)時(shí)通過主/備競爭,其中一臺服務(wù)器獲得外部IP成為主機(jī),另外一臺則成為備機(jī);系統(tǒng)運(yùn)行時(shí),Cluster軟件監(jiān)控?cái)?shù)據(jù)庫服務(wù)是否正常,如果發(fā)現(xiàn)主機(jī)的數(shù)據(jù)庫服務(wù)出現(xiàn)異常,則進(jìn)行主/備切換,讓備機(jī)接管外部IP和處理SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)請求,繼續(xù)提供服務(wù)。由于整個(gè)數(shù)據(jù)庫是建立在公用磁陣上的,所以當(dāng)群集服務(wù)器做主/備切換時(shí),數(shù)據(jù)庫中的數(shù)據(jù)不會(huì)丟失。
采用群集服務(wù)器公用磁陣的方式雖然可以解決主備機(jī)數(shù)據(jù)一致性問題,但由此也帶來了巨大的隱患1.運(yùn)行過程中,數(shù)據(jù)的存放完全依賴公用磁陣,一旦公用磁陣損壞后,會(huì)造成數(shù)據(jù)丟失,并且無法恢復(fù);2.使用公用磁陣的成本費(fèi)用過高;3.市場上的Cluster軟件為通用管理軟件,無法和現(xiàn)有的移動(dòng)通訊系統(tǒng)緊密結(jié)合,當(dāng)數(shù)據(jù)庫出現(xiàn)故障時(shí),Cluster軟件不能實(shí)時(shí)告警。
發(fā)明內(nèi)容
本發(fā)明的目的正是克服為了上述現(xiàn)有技術(shù)的缺陷,而提出一種移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)及其實(shí)現(xiàn)方法,在群集系統(tǒng)的服務(wù)器本地建立數(shù)據(jù)庫,及利用共享內(nèi)存裝置代替公用磁陣以提高HLR寄存器用戶數(shù)據(jù)庫中數(shù)據(jù)的可用性。
為了達(dá)到上述目的,本發(fā)明提供一種移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),包括若干個(gè)虛擬通訊節(jié)點(diǎn),其特征在于每個(gè)虛擬通訊節(jié)點(diǎn)由兩個(gè)服務(wù)器所在的通訊節(jié)點(diǎn)構(gòu)成,且該兩個(gè)服務(wù)器共同連接在一個(gè)共享內(nèi)存裝置上,每個(gè)服務(wù)器至少包括以下功能模塊一主控模塊,用于實(shí)現(xiàn)虛擬通訊節(jié)點(diǎn)服務(wù)器雙機(jī)間的主/備狀態(tài)競爭、主/備機(jī)倒換及其互相監(jiān)控,同時(shí)用于監(jiān)控本機(jī)上的各監(jiān)控對象;多個(gè)監(jiān)控對象模塊,用于監(jiān)控系統(tǒng)中所有與業(yè)務(wù)相關(guān)的應(yīng)用程序,及其他應(yīng)用和資源的子監(jiān)控程序;一通訊模塊,用于當(dāng)本機(jī)處于主用狀態(tài)時(shí),綁定外部IP并與其他節(jié)點(diǎn)建立通信鏈路及提供與其他節(jié)點(diǎn)的通信接口。
本發(fā)明還提供一種移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,該方法包括以下步驟組成虛擬節(jié)點(diǎn)的兩個(gè)服務(wù)器上電時(shí),完成主/備狀態(tài)競爭;數(shù)據(jù)庫操作代理進(jìn)程收集所有客戶端的數(shù)據(jù)庫操作請求,并且把這些請求存儲到共享內(nèi)存區(qū);主用服務(wù)器的數(shù)據(jù)代理進(jìn)程對數(shù)據(jù)庫進(jìn)行實(shí)際操作,主用服務(wù)器的數(shù)據(jù)同步進(jìn)程進(jìn)行日志備份,并且將所述日志備份文件傳輸?shù)絺溆梅?wù)器,由備用服務(wù)器的數(shù)據(jù)同步進(jìn)程將數(shù)據(jù)應(yīng)用到該服務(wù)器的本地?cái)?shù)據(jù)庫中。
本發(fā)明與現(xiàn)有技術(shù)相比,由于采取了數(shù)據(jù)庫建在本地,不需要使用公用磁陣,節(jié)省了群集服務(wù)器成本,提高了數(shù)據(jù)的安全性和可用性;而且本發(fā)明主/倒換全部通過操作雙機(jī)控制板的硬件寄存器來實(shí)現(xiàn),徹底解決商用Cluster軟件倒換異常、失敗的情況。并提供數(shù)據(jù)庫實(shí)時(shí)告警功能,與現(xiàn)有移動(dòng)交換系統(tǒng)緊密結(jié)合,大大提高整個(gè)系統(tǒng)的運(yùn)行可靠性。
下面將結(jié)合實(shí)施例,并參照附圖對本發(fā)明進(jìn)行詳細(xì)說明,以便對本發(fā)明的目的、特征及優(yōu)點(diǎn)有更深入的理解。
圖1為本發(fā)明提供的硬件系統(tǒng)結(jié)構(gòu)圖;圖2為本發(fā)明提供的軟件系統(tǒng)功能模塊圖;圖3為本發(fā)明提供的主/備機(jī)競爭流程圖;
圖4為本發(fā)明提供的備機(jī)倒換為主機(jī)的操作流程圖;圖5a為本發(fā)明提供的主機(jī)倒換為備機(jī)的操作流程圖;圖5b為本發(fā)明提供的主機(jī)倒換為備機(jī)的操作流程圖;圖6為本發(fā)明提供的數(shù)據(jù)庫請求處理流程圖;圖7為本發(fā)明提供的主/備用數(shù)據(jù)庫同步操作流程圖;圖8是本發(fā)明提供的告警處理功能模塊圖。
具體實(shí)施例方式
如附圖1所示,為本發(fā)明所提供的群集系統(tǒng)硬件結(jié)構(gòu)圖,群集系統(tǒng)中的一個(gè)虛擬通訊節(jié)點(diǎn)由Server A和Server B的通訊節(jié)點(diǎn)共同組成,該兩個(gè)服務(wù)器Server A(服務(wù)器A)101和Server B(服務(wù)器B)102,共同連接一個(gè)共享內(nèi)存裝置103。其中兩個(gè)服務(wù)器可進(jìn)行主/備用狀態(tài)轉(zhuǎn)換,其CPU(中央處理器CentralProcessing Unit)、內(nèi)存、硬盤等具體配置取決于具體的應(yīng)用而定。
所述共享內(nèi)存裝置由兩部分組成一部分是雙機(jī)控制板,另一部分是共享內(nèi)存板。其中,雙機(jī)控制板作為一個(gè)獨(dú)立的計(jì)算機(jī)部件插在每個(gè)服務(wù)器主板的PCI插槽上,為服務(wù)器提供連接共享內(nèi)存板的總線接口、主/備狀態(tài)控制及其它服務(wù),具有擴(kuò)展頁面存儲器管理功能,可將邏輯地址映射為物理地址,以便服務(wù)器可以直接訪問共享內(nèi)存板上的存儲器資源;共享內(nèi)存板是一個(gè)物理存儲設(shè)備,在邏輯上分為2個(gè)部分一部分是監(jiān)控對象訪問的數(shù)據(jù)區(qū)、另一部分是主控模塊的消息接收、發(fā)送交換區(qū),它用于保存Server A與Server B可直接訪問的數(shù)據(jù),共享內(nèi)存板的容量可擴(kuò)充、可并行操作,同時(shí),為了避免服務(wù)器斷電造成的單點(diǎn)故障而帶來的共享內(nèi)存板數(shù)據(jù)丟失的后果,共享內(nèi)存板采用雙電源供電。
如圖2所示,本發(fā)明的系統(tǒng)功能模塊主要包括主控模塊201,通訊模塊202和監(jiān)控對象模塊203。其中,主控模塊用來實(shí)現(xiàn)雙機(jī)(如圖2所示的server A和server B)間的主/備狀態(tài)競爭、主/備機(jī)倒換及其互相監(jiān)控等功能,同時(shí)用于監(jiān)控本機(jī)上的各監(jiān)控對象;通信模塊202主要負(fù)責(zé)和通信接口實(shí)現(xiàn)、當(dāng)處于主用狀態(tài)時(shí)綁定外部IP并與其他節(jié)點(diǎn)建立通信鏈路和提供與其他節(jié)點(diǎn)的通信接口;監(jiān)控對象模塊203包括所有的被監(jiān)控對象,它們可以是與業(yè)務(wù)相關(guān)的應(yīng)用程序,也可以是監(jiān)控其他應(yīng)用或資源的子監(jiān)控程序(當(dāng)前版本中監(jiān)控對象就是DbAgent進(jìn)程和DbSync進(jìn)程)。
本系統(tǒng)中的服務(wù)器采用主/備用工作方式。正常工作時(shí),只允許一個(gè)機(jī)器工作在主用方式下。由于系統(tǒng)上電時(shí)兩服務(wù)器未確定主/備狀態(tài),因此需先啟動(dòng)主控模塊進(jìn)行主/備狀態(tài)競爭,在主/備機(jī)的雙機(jī)控制板上均有兩個(gè)資源配置寄存器伙伴機(jī)狀態(tài)寄存器與本機(jī)狀態(tài)寄存器,在雙機(jī)控制版上有一部分電路控制主備機(jī)上述兩個(gè)寄存器的狀態(tài)變化,競爭的原則是通過查詢雙機(jī)控制板上的伙伴機(jī)的狀態(tài)寄存器來確定。
如圖3所示,為本發(fā)明群集系統(tǒng)中服務(wù)器主/備狀態(tài)競爭流程圖,用以完成系統(tǒng)上電后的服務(wù)器主/備狀態(tài)競爭。其操作步驟如下主/備機(jī)上電后,首先初始化雙機(jī)控制板上的基本寄存器(包括在線標(biāo)志設(shè)置、主用允許、自復(fù)位允許、外部總線狀態(tài)錯(cuò)中斷允許、寄偶校驗(yàn)中斷允許、外部時(shí)鐘中斷允許、硬件看門狗打開、總線錯(cuò)誤隔離功能開放、5毫秒定時(shí)中斷清除、啟動(dòng)、故障中斷請求寄存器清除、通信中斷清除),開始本機(jī)主用狀態(tài)申請,步驟301;設(shè)置延時(shí)循環(huán),從伙伴機(jī)的狀態(tài)寄存器中讀出伙伴機(jī)的當(dāng)前狀態(tài),步驟302;判斷本機(jī)申請主用狀態(tài)是否成功,步驟303;如果失敗,設(shè)置伙伴機(jī)為主用,則本機(jī)狀態(tài)寄存器為備用,步驟304;否則,從伙伴機(jī)的狀態(tài)寄存器中讀出伙伴機(jī)的當(dāng)前狀態(tài),步驟305;如果伙伴機(jī)已設(shè)置為主用,則設(shè)置本機(jī)狀態(tài)寄存器為備用,步驟308;如果伙伴機(jī)未設(shè)置為主用,則設(shè)置本機(jī)狀態(tài)寄存器為主用,步驟306;設(shè)置伙伴機(jī)為備用,步驟307;主備競爭完成后,檢測本機(jī)是否已有外部IP,對于備機(jī),如果有則刪除該外部IP,對于主機(jī),如果本機(jī)已有外部IP,則不添加,否則添加外部IP。然后啟動(dòng)通訊模塊建立主備內(nèi)部通信鏈路及外部通訊鏈路。正常情況下,通信鏈路在2秒左右能建立成功。主備競爭完成后,根據(jù)本機(jī)狀態(tài)啟動(dòng)監(jiān)控模塊。
如圖4所示,為本發(fā)明群集系統(tǒng)中備機(jī)申請倒換成主機(jī)的操作流程,具體過程如下首先判斷本機(jī)是否處于備用狀態(tài),步驟401;如果否,則該程序結(jié)束;如果本機(jī)處于備用狀態(tài),則通過硬件獲取伙伴機(jī)的狀態(tài),即利用備機(jī)主控模塊中的10毫秒定時(shí)任務(wù)監(jiān)視作為主用機(jī)的伙伴機(jī)雙機(jī)控制狀態(tài)寄存器的狀態(tài),步驟402;判斷當(dāng)前作為主用機(jī)的伙伴機(jī)是否處于主用狀態(tài),若否,表明當(dāng)前主用機(jī)為非服務(wù)態(tài),則本機(jī)進(jìn)行主用申請,步驟404;由作為備機(jī)的本機(jī)主控模塊設(shè)置本機(jī)雙機(jī)控制狀態(tài)寄存器為主用狀態(tài),步驟405,該步驟也包括設(shè)置備機(jī)主控模塊為主用狀態(tài)、備機(jī)監(jiān)控模塊為主用狀態(tài)。
如圖5所示,為本發(fā)明群集系統(tǒng)中主機(jī)申請倒換成備機(jī)的操作流程,其具體步驟如下首先,判斷本機(jī)是否處于主用狀態(tài),步驟501;如否,則當(dāng)前操作結(jié)束;如果本機(jī)為主用狀態(tài),則判斷主/備機(jī)之間是否正在進(jìn)行數(shù)據(jù)同步操作,步驟502;判斷主/備機(jī)是否處于告警信息同步狀態(tài),步驟505;如果正在進(jìn)行數(shù)據(jù)同步,或主/備機(jī)處于告警信息同步狀態(tài),則需進(jìn)一步判斷當(dāng)前是否需要進(jìn)行主/備機(jī)狀態(tài)周期倒換,步驟503;如是,則延遲五分鐘后進(jìn)行主/備機(jī)狀態(tài)倒換,步驟504;如否,則操作流程結(jié)束,不進(jìn)行狀態(tài)倒換;若前面所述的主/備機(jī)不處于告警信息同步狀態(tài),則通過本機(jī)雙機(jī)控制狀態(tài)寄存器獲取伙伴機(jī)的當(dāng)前狀態(tài),步驟506;當(dāng)前伙伴機(jī)是否處于主用狀態(tài),步驟507;如果伙伴機(jī)為主用狀態(tài),則設(shè)置本機(jī)備用狀態(tài),步驟508;如果伙伴機(jī)不是主用狀態(tài),則判斷其是否處于備用狀態(tài),步驟509;如果此時(shí)伙伴機(jī)也不是備用狀態(tài),則設(shè)置本機(jī)的硬件處于主用狀態(tài),步驟510;及設(shè)置本機(jī)軟件處于主用狀態(tài),步驟511;若此時(shí)伙伴機(jī)為備用狀態(tài),則本機(jī)硬件為備用狀態(tài),步驟512;通過本機(jī)雙機(jī)控制板獲取系統(tǒng)中伙伴機(jī)的狀態(tài),步驟513;當(dāng)前伙伴機(jī)是否處于為主用狀態(tài),步驟515;如果是主用狀態(tài),則設(shè)置本機(jī)硬件為備用狀態(tài),步驟516;及設(shè)置本機(jī)軟件處于備用狀態(tài);步驟517;反之,如果伙伴機(jī)目前不處于備用狀態(tài),則判斷系統(tǒng)所設(shè)置的延時(shí)循環(huán)次數(shù)是否大于10,若是,則設(shè)置本機(jī)硬件處于主用狀態(tài),步驟519;及設(shè)置本機(jī)軟件處于主用狀態(tài),步驟510;反之,則延遲100ms后,返回步驟512;繼續(xù)后續(xù)的流程。
上述流程中,其倒換流程與備機(jī)/主機(jī)的倒換流程一樣,都是首先設(shè)置本機(jī)雙機(jī)控制板的狀態(tài)寄存器參數(shù),然后設(shè)置主機(jī)主控模塊為備用狀態(tài),主機(jī)監(jiān)控模塊為備用狀態(tài),下面幾種情況可以實(shí)現(xiàn)主機(jī)自動(dòng)倒換成備機(jī)1.人工倒換,按下主用面板上的倒換按鈕,如果滿足條件a.伙伴機(jī)處于備用狀態(tài);b.主備機(jī)非處于數(shù)據(jù)同步狀態(tài);c.主備機(jī)非處于告警信息同步狀態(tài);主機(jī)將倒換為備機(jī),備機(jī)將倒換為主機(jī)。
(2)后臺人機(jī)倒換,從后臺告警管理中選擇主用倒換命令,如果滿足(1)的倒換條件,主用將倒換為備用,備用將倒換為主用。
(3)周期倒換,在告警裝置上設(shè)置允許周期倒換,并設(shè)置倒換時(shí)間,倒換時(shí)間到,如果滿足(1)的倒換條件,倒換立即實(shí)現(xiàn)。若不滿足(1)倒換條件,將延遲5分鐘再倒換。
(4)主用檢測到數(shù)據(jù)庫操作失敗,若滿足(1)的倒換條件,將倒換為備用,伙伴機(jī)倒換為主用。
(5)主用檢測到跟其他移動(dòng)交換系統(tǒng)節(jié)點(diǎn)通信失敗,主用將向監(jiān)控模塊發(fā)送將倒換成備用請求命令,若滿足(1)的倒換條件,同時(shí)伙伴機(jī)與后臺通信正常,主用機(jī)將倒換為備用,備用將倒換為主用。
(6)主用檢測到磁盤剩余空間小,若滿足(1)的倒換條件,將倒換成備用,伙伴機(jī)將倒換成主用。
如圖6所示,為本發(fā)明提供的數(shù)據(jù)庫請求處理方框圖,它包括以下步驟客戶端程序601將客戶端的請求通訊節(jié)點(diǎn)602為通信接口,透過網(wǎng)絡(luò)603及對應(yīng)的服務(wù)器段的通訊節(jié)點(diǎn)604轉(zhuǎn)發(fā)到主用服務(wù)器的數(shù)據(jù)代理DBAgent進(jìn)程605;再由該主用的DbAgent進(jìn)程將操作請求和數(shù)據(jù)庫中獲得的最新日志序列號存儲到共享內(nèi)存區(qū)的共享數(shù)據(jù)606中;主用的DbAgent進(jìn)程將操作請求應(yīng)用于主用數(shù)據(jù)庫606,并將可能的操作結(jié)果返回給客戶端;主用的數(shù)據(jù)同步DbSync進(jìn)程607將數(shù)據(jù)庫最新變化的日志進(jìn)行備份,并且將備份文件傳輸?shù)絺錂C(jī),由備機(jī)的DbSync進(jìn)程負(fù)責(zé)將數(shù)據(jù)恢復(fù)到本地?cái)?shù)據(jù)庫中;備用的DbSync進(jìn)程做完數(shù)據(jù)庫恢復(fù)后,通知備機(jī)的DbAgent進(jìn)程,搜索并刪除共享內(nèi)存區(qū)的無用記錄。正如圖4和圖5中提到的,本發(fā)明所提供的群集系統(tǒng),其主/備狀態(tài)可根據(jù)情況人工或自動(dòng)倒換,所以,server A和server B的主/備狀態(tài)是相對的,圖6中假定server B為主用狀態(tài),則相對的server A就稱為備用狀態(tài)。
如圖7所示,為本發(fā)明提供的數(shù)據(jù)庫同步模塊的備機(jī)狀態(tài)遷移圖,以備機(jī)狀態(tài)遷移為例,圖中箭頭所示為狀態(tài)的遷移方向,箭頭旁邊的文字為觸發(fā)狀態(tài)遷移的條件,首先,同步進(jìn)程啟動(dòng)時(shí),備機(jī)處于啟動(dòng)狀態(tài)701;等待主控模塊的上電通知,收到備機(jī)上電通知后,切換到未初始化狀態(tài)702;進(jìn)行初始化操作,該操作內(nèi)容包括初始化SQL服務(wù)、FTP服務(wù)、進(jìn)行數(shù)據(jù)庫完全恢復(fù)、獲得和主機(jī)數(shù)據(jù)庫同一時(shí)間點(diǎn)等,初始化成功后切換到空閑狀態(tài)703;空閑狀態(tài)下,備機(jī)向主機(jī)發(fā)送日志同步請求,并且進(jìn)入日志請求狀態(tài)704;收到日志備份響應(yīng)(即完成通知)后,進(jìn)入日志恢復(fù)狀態(tài)707,完成數(shù)據(jù)恢復(fù);成功后,返回空閑狀態(tài)703,等待下一次請求的發(fā)出;如果在上述的日志同步中出現(xiàn)錯(cuò)誤,則從備機(jī)當(dāng)前的空閑狀態(tài)進(jìn)入差異數(shù)據(jù)請求狀態(tài)705,請求差異數(shù)據(jù)同步,待收到差異請求完成通知后,進(jìn)入差異恢復(fù)狀態(tài)708;如果差異同步中出現(xiàn)多次錯(cuò)誤,則提出完全數(shù)據(jù)請求,備機(jī)從空閑狀態(tài)進(jìn)入完全數(shù)據(jù)請求狀態(tài)706,請求數(shù)據(jù)庫完全數(shù)據(jù);收到完成通知后,進(jìn)入完全數(shù)據(jù)恢復(fù)狀態(tài)709;上述狀態(tài)遷移過程中,不論在任何狀態(tài)切換中發(fā)生的錯(cuò)誤,都會(huì)發(fā)送告警到系統(tǒng)的告警服務(wù)器,由告警服務(wù)器給用戶統(tǒng)一的告警,并由當(dāng)前的狀態(tài)轉(zhuǎn)入錯(cuò)誤態(tài)710;分析該告警的失敗類型711,一般包括日志恢復(fù)失敗、差異恢復(fù)失敗或完全恢復(fù)失敗,若為日志恢復(fù)失敗類型告警,則轉(zhuǎn)入差異請求狀態(tài)708,完成差異同步;若為差異恢復(fù)失敗,則提出完全數(shù)據(jù)請求,遷移至完全數(shù)據(jù)請求狀態(tài),請求數(shù)據(jù)庫完全數(shù)據(jù);若為完全恢復(fù)失敗,則備機(jī)狀態(tài)遷移至未初始化狀態(tài)702;重新進(jìn)行初始化及按照新的請求,進(jìn)行新的狀態(tài)遷移。為保證主備數(shù)據(jù)庫數(shù)據(jù)的一致,定時(shí)執(zhí)行完全數(shù)據(jù)備份和恢復(fù)功能,在各種請求態(tài)中,不斷發(fā)送狀態(tài)校驗(yàn)請求給主機(jī),由主機(jī)判斷主/備機(jī)狀態(tài)是否一致,如果狀態(tài)不一致,主機(jī)發(fā)送通知強(qiáng)制解除備機(jī)的請求狀態(tài),備機(jī)將重新發(fā)起請求。
如圖8所示,為本發(fā)明告警處理功能模塊圖,廣義的告警包括一般性通知和嚴(yán)重告警,前者只表明該系統(tǒng)運(yùn)行中出現(xiàn)的不可重復(fù)或瞬時(shí)故障,如備用服務(wù)器復(fù)位,其處理是很簡單的,主用服務(wù)器只是把此消息轉(zhuǎn)發(fā)給后臺。而嚴(yán)重告警會(huì)持續(xù)一段時(shí)間,直至故障的消失,其處理比較復(fù)雜,本發(fā)明所要的解決就是這種嚴(yán)重告警(以下簡稱為告警)。
當(dāng)服務(wù)器上的監(jiān)控進(jìn)程檢測到一故障時(shí),向主控模塊發(fā)送一告警消息,此消息中包含告警頭和告警體。告警頭中包括有告警碼、告警原因,其中告警碼和告警原因是統(tǒng)一編碼的。告警體中是各告警須進(jìn)一步描述此告警的內(nèi)容。主控模塊收到一條告警后,保存在內(nèi)存中,同時(shí)將其傳給后臺告警模塊。
當(dāng)一個(gè)告警產(chǎn)生后,圖中的實(shí)線部分表示監(jiān)控程序把告警傳給后臺告警模塊的流程,在此流程中,為了防止重復(fù)告警,各告警源在某一部分向主控模塊告警后,應(yīng)置一“已告警”標(biāo)志,主控模塊在收到一告警后,也會(huì)把相應(yīng)的部分置為告警態(tài)。
告警恢復(fù)時(shí)同樣也向主控模塊發(fā)送恢復(fù)消息,恢復(fù)消息中包括告警碼,以及和告警碼相關(guān)的標(biāo)識故障部位的內(nèi)容,如數(shù)據(jù)庫三級故障等。
在主控告警處理模塊中有一個(gè)可容納數(shù)百條告警的緩沖池用于保存本機(jī)的告警,當(dāng)一個(gè)新告警產(chǎn)生,將在緩沖池中占據(jù)一個(gè)位置,同時(shí)也分配一個(gè)Aid給它,目前Aid做成流水號形式,四字節(jié)長,可以做到各條告警的Aid不重復(fù)。
絕大多數(shù)情況下,發(fā)往后臺告警模塊的告警和告警恢復(fù)消息是不會(huì)丟的,但為了防止萬一,在程序中加入了同步措施,具體是后臺告警模塊定時(shí)把已經(jīng)收到一模塊所有告警Aid發(fā)給主機(jī)主控告警模塊,由主控告警模塊檢索告警緩沖池,當(dāng)后臺告警模塊傳來的同步消息中有某一Aid,而緩沖池中沒有,則給后臺發(fā)此Aid恢復(fù)消息,反之發(fā)此Aid的告警消息。上圖中虛線部分表示后臺向主機(jī)主控告警模塊同步告警的消息流程。
為進(jìn)一步說明本發(fā)明的技術(shù)方案,下面以WINNT操作系統(tǒng)+SQLSERVER2K用戶數(shù)據(jù)庫為例,說明本發(fā)明提供的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,其包括以下步驟第一步在假定的群集系統(tǒng)中的兩臺服務(wù)器Server A和Server B上分別安裝版本相同的SQL Server DBMS(Database Management System數(shù)據(jù)庫管理系統(tǒng)),在Server A和Server B的本地硬盤分別建構(gòu)相同的用戶數(shù)據(jù)庫。并分別安裝本發(fā)明提供的群集系統(tǒng)軟件;第二步服務(wù)器Server A和Server B上電時(shí),完成主/備競爭,具體流程參見圖4,主/備機(jī)分別進(jìn)入Active/standby狀態(tài);本發(fā)明提供的群集軟件中的主控模塊實(shí)時(shí)監(jiān)控主/備機(jī)資源以及外部通訊狀態(tài),同時(shí)主/備機(jī)之間通過讀取雙機(jī)控制板上的狀態(tài)寄存器信息來進(jìn)行互相監(jiān)測。Server A和Server B的通訊節(jié)點(diǎn)共同組成一個(gè)虛擬通訊節(jié)點(diǎn);第三步客戶端程序?qū)?shù)據(jù)庫服務(wù)器的訪問通過內(nèi)部消息交互機(jī)制實(shí)現(xiàn),數(shù)據(jù)庫操作代理進(jìn)程(DbAgent)收集所有客戶端的數(shù)據(jù)庫操作請求,并且把這些請求存儲到共享內(nèi)存區(qū),存儲內(nèi)容包括操作請求語句、最新日志序列號、以及完成狀態(tài)標(biāo)志。主用服務(wù)器的DbAgent進(jìn)程對數(shù)據(jù)庫進(jìn)行實(shí)際操作,操作完成后更新共享內(nèi)存區(qū)的“完成狀態(tài)”標(biāo)志,將該標(biāo)志置為“完成”;第四步主機(jī)的數(shù)據(jù)同步進(jìn)程DbSync將記錄數(shù)據(jù)庫最新變化的日志進(jìn)行備份,并且將該備份文件傳輸?shù)絺錂C(jī),由備機(jī)的DbSync進(jìn)程將數(shù)據(jù)應(yīng)用到本地?cái)?shù)據(jù)庫中;第五步備機(jī)的DbSync進(jìn)程完成數(shù)據(jù)庫恢復(fù)后,通知備機(jī)的DbAgent進(jìn)程,依據(jù)日志序列號搜索到共享內(nèi)存區(qū)中已經(jīng)完成的操作請求記錄,予以刪除。
上述流程中,若發(fā)生故障,則通過對共享內(nèi)存的數(shù)據(jù)讀取操作,請求數(shù)據(jù)的重新應(yīng)用,這樣可以保證主備機(jī)倒換后,數(shù)據(jù)庫數(shù)據(jù)不會(huì)丟失。故障處理操作的具體步驟為1)備機(jī)監(jiān)測到主機(jī)故障(規(guī)定一些監(jiān)測標(biāo)準(zhǔn))或者主機(jī)主動(dòng)發(fā)起到換的請求;2)備機(jī)的通訊節(jié)點(diǎn)接管虛擬節(jié)點(diǎn),接受客戶端發(fā)起的請求;3)備機(jī)DbAgent進(jìn)程檢索共享數(shù)據(jù)區(qū)中的記錄,將未刪除的紀(jì)錄的lsn與當(dāng)前數(shù)據(jù)庫中的lsn做比較,如果有記錄沒有應(yīng)用到當(dāng)前的數(shù)據(jù)庫中,則重新執(zhí)行之,隨后,清空共享內(nèi)存中已完成的操作請求;4)備機(jī)所有進(jìn)程轉(zhuǎn)變成主用狀態(tài),主機(jī)所有進(jìn)程轉(zhuǎn)成備用狀態(tài)。以上描述的實(shí)施例是說明性的而不是限制性的,在不脫離本發(fā)明的精神和范圍的情況下,所有的變化和修改都在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),包括若干個(gè)虛擬通訊節(jié)點(diǎn),其特征在于每個(gè)虛擬通訊節(jié)點(diǎn)由兩個(gè)服務(wù)器所在的通訊節(jié)點(diǎn)構(gòu)成,且該兩個(gè)服務(wù)器共同連接在一個(gè)共享內(nèi)存裝置上,每個(gè)服務(wù)器至少包括以下功能模塊一主控模塊,用于實(shí)現(xiàn)虛擬通訊節(jié)點(diǎn)服務(wù)器的主/備狀態(tài)競爭、主/備機(jī)倒換及其互相監(jiān)控,同時(shí)用于監(jiān)控本機(jī)上的各監(jiān)控對象;多個(gè)監(jiān)控對象模塊,用于監(jiān)控系統(tǒng)中所有與業(yè)務(wù)相關(guān)的應(yīng)用程序,及其他應(yīng)用和資源的子監(jiān)控程序;一通訊模塊,用于當(dāng)本機(jī)處于主用狀態(tài)時(shí),綁定外部IP并與其他節(jié)點(diǎn)建立通信鏈路及提供與其他節(jié)點(diǎn)的通信接口。
2.如權(quán)利要求1所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),其特征在于所述共享內(nèi)存裝置,包括雙機(jī)控制板和共享內(nèi)存板。
3.如權(quán)利要求2所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),其特征在于所述雙機(jī)控制板為一插接在服務(wù)器主板PCI插槽上的獨(dú)立部件。
4.如權(quán)利要求2所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),其特征在于所述共享內(nèi)存板為一物理存儲設(shè)備。
5.如權(quán)利要求1所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),其特征在于所述監(jiān)控對象包括數(shù)據(jù)庫代理進(jìn)程和數(shù)據(jù)庫同步進(jìn)程。
6.如權(quán)利要求1所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),其特征在于所述功能模塊包括一個(gè)告警處理模塊。
7.一種移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,該方法包括以下步驟組成虛擬節(jié)點(diǎn)的兩個(gè)服務(wù)器上電時(shí),完成主/備狀態(tài)競爭;數(shù)據(jù)庫操作代理進(jìn)程收集所有客戶端的數(shù)據(jù)庫操作請求,并且把這些請求存儲到共享內(nèi)存區(qū);主用服務(wù)器的數(shù)據(jù)代理進(jìn)程對數(shù)據(jù)庫進(jìn)行實(shí)際操作,主用服務(wù)器的數(shù)據(jù)同步進(jìn)程進(jìn)行日志備份,并且將所述日志備份文件傳輸?shù)絺溆梅?wù)器,由備用服務(wù)器的數(shù)據(jù)同步進(jìn)程將數(shù)據(jù)應(yīng)用到該服務(wù)器的本地?cái)?shù)據(jù)庫中。
8.如權(quán)利要求7所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,其中所述主/備狀態(tài)競爭的流程,包括以下步驟主/備服務(wù)器上電后,初始化所述雙機(jī)控制板上的基本寄存器,開始本機(jī)主用狀態(tài)申請;設(shè)置延時(shí)循環(huán),從伙伴機(jī)的狀態(tài)寄存器中讀出伙伴機(jī)的當(dāng)前狀態(tài);判斷本機(jī)申請主用狀態(tài)是否成功;如果失敗,設(shè)置伙伴機(jī)為主用,本機(jī)狀態(tài)寄存器為備用;否則,從伙伴機(jī)的狀態(tài)寄存器中讀出伙伴機(jī)的當(dāng)前狀態(tài);如果伙伴機(jī)已設(shè)置為主用,則設(shè)置本機(jī)狀態(tài)寄存器為備用;如果伙伴機(jī)未設(shè)置為主用,則設(shè)置本機(jī)狀態(tài)寄存器為主;設(shè)置伙伴機(jī)為備用;刪除備用服務(wù)器的外部IP;添加主用服務(wù)器外部IP;啟動(dòng)通訊模塊建立主備內(nèi)部通信鏈路及外部通訊鏈路。
9.如權(quán)利要求8所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,其中所述備機(jī)申請倒換成主機(jī)的操作流程,包括以下步驟判斷本機(jī)是否處于備用狀態(tài);如果本機(jī)處于備用狀態(tài),則通過硬件獲取伙伴機(jī)的狀態(tài);判斷當(dāng)前作為主用機(jī)的伙伴機(jī)是否處于主用狀態(tài),若否,表明當(dāng)前主用機(jī)為非服務(wù)態(tài),則本機(jī)進(jìn)行主用申請;由作為備機(jī)的本機(jī)主控模塊設(shè)置本機(jī)雙機(jī)控制狀態(tài)寄存器為主用狀態(tài)。
10.如權(quán)利要求8所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,其中所述主機(jī)申請倒換成備機(jī)的操作流程,包括以下步驟判斷本機(jī)是否處于主用狀態(tài);如果本機(jī)為主用狀態(tài),則判斷主/備機(jī)之間是否正在進(jìn)行數(shù)據(jù)同步操作;判斷主/備機(jī)是否處于告警信息同步狀態(tài);如果正在進(jìn)行數(shù)據(jù)同步,或主/備機(jī)處于告警信息同步狀態(tài),則需進(jìn)一步判斷當(dāng)前是否需要進(jìn)行主/備機(jī)狀態(tài)周期倒換;如是,則延遲五分鐘后進(jìn)行主/備機(jī)狀態(tài)倒換;如否,則操作流程結(jié)束,不進(jìn)行狀態(tài)倒換;若主/備機(jī)不處于告警信息同步狀態(tài),則獲取伙伴機(jī)的當(dāng)前狀態(tài);判斷當(dāng)前伙伴機(jī)是否處于主用狀態(tài);如果伙伴機(jī)為主用狀態(tài),則設(shè)置本機(jī)備用狀態(tài);如果伙伴機(jī)非主用狀態(tài),則判斷其是否處于備用狀態(tài);如果此時(shí)伙伴機(jī)也不是備用狀態(tài),則設(shè)置本機(jī)的硬件處于主用狀態(tài),及設(shè)置本機(jī)軟件處于主用狀態(tài);若此時(shí)伙伴機(jī)為備用狀態(tài),則本機(jī)硬件為備用狀態(tài);獲取系統(tǒng)中伙伴機(jī)的狀態(tài);判斷伙伴機(jī)是否處于為主用狀態(tài);如果是主用狀態(tài),則設(shè)置本機(jī)硬件為備用狀態(tài),及設(shè)置本機(jī)軟件處于備用狀態(tài);反之,如果伙伴機(jī)目前不處于備用狀態(tài),則判斷系統(tǒng)所設(shè)置的延時(shí)循環(huán)次數(shù)是否大于10;若是,則設(shè)置本機(jī)硬件處于主用狀態(tài),設(shè)置本機(jī)軟件處于主用狀態(tài);反之,則延遲100ms后,繼續(xù)后續(xù)的操作。
11.如權(quán)利要求7所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,其中所述數(shù)據(jù)庫請求處理的流程,還包括步驟將客戶端的請求轉(zhuǎn)發(fā)到主用服務(wù)器的數(shù)據(jù)代理進(jìn)程;由主用服務(wù)器的數(shù)據(jù)代理進(jìn)程將操作請求和數(shù)據(jù)庫中獲得的最新日志序列號存儲到共享內(nèi)存區(qū);主用服務(wù)器的數(shù)據(jù)代理進(jìn)程將操作請求應(yīng)用于主用服務(wù)器數(shù)據(jù)庫,并將結(jié)果返回客戶端;主用服務(wù)器的數(shù)據(jù)同步進(jìn)程將數(shù)據(jù)庫最新變化的日志進(jìn)行備份,并且將備份文件傳輸?shù)絺溆梅?wù)器;備用服務(wù)器的數(shù)據(jù)同步進(jìn)程將數(shù)據(jù)恢復(fù)到本地?cái)?shù)據(jù)庫中;搜索并刪除共享內(nèi)存區(qū)的無用記錄。
12.如權(quán)利要求7所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,其中所述備用服務(wù)器的數(shù)據(jù)同步進(jìn)程的操作,包括以下步驟同步進(jìn)程啟動(dòng),備機(jī)處于啟動(dòng)狀態(tài);收到上電通知后,備機(jī)切換到未初始化狀態(tài);進(jìn)行初始化操作,并將備用服務(wù)器切換到空閑狀態(tài);空閑狀態(tài)下,備機(jī)向主機(jī)發(fā)送日志同步請求,并且進(jìn)入日志請求狀態(tài);收到日志備份響應(yīng)后,進(jìn)入日志恢復(fù)轉(zhuǎn)臺,完成數(shù)據(jù)恢復(fù);如果在所述日志同步中出現(xiàn)錯(cuò)誤,則進(jìn)入差異數(shù)據(jù)請求狀態(tài),請求差異數(shù)據(jù)同步;如果差異同步中出現(xiàn)多次錯(cuò)誤,則進(jìn)入完全數(shù)據(jù)請求狀態(tài),請求數(shù)據(jù)庫完全數(shù)據(jù);將上述狀態(tài)切換中發(fā)生的錯(cuò)誤發(fā)送告警到系統(tǒng)的所述告警處理模塊,對用戶進(jìn)行統(tǒng)一告警。
13.如權(quán)利要求12所述的移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng)實(shí)現(xiàn)方法,其中所述告警處理模塊的操作流程,包括以下步驟分析該告警的失敗類型;若為日志恢復(fù)失敗類型告警,則將備用服務(wù)器轉(zhuǎn)入差異請求狀態(tài),完成差異同步;若為差異恢復(fù)失敗,則提出完全數(shù)據(jù)請求,將備用服務(wù)器轉(zhuǎn)入完全數(shù)據(jù)請求狀態(tài),請求數(shù)據(jù)庫完全數(shù)據(jù);若為完全恢復(fù)失敗,則將備用服務(wù)器轉(zhuǎn)入未初始化狀態(tài),重新接受新的請求,進(jìn)行新操作。
全文摘要
一種移動(dòng)通訊系統(tǒng)中使用共享內(nèi)存的群集系統(tǒng),包括若干個(gè)虛擬通訊節(jié)點(diǎn),其特征在于每個(gè)虛擬通訊節(jié)點(diǎn)由兩個(gè)服務(wù)器所在的通訊節(jié)點(diǎn)構(gòu)成,且該兩個(gè)服務(wù)器共同連接在一個(gè)共享內(nèi)存裝置上,每個(gè)服務(wù)器至少包括以下功能模塊一主控模塊;多個(gè)監(jiān)控對象模塊;一通訊模塊。本發(fā)明與現(xiàn)有技術(shù)相比,由于采取了數(shù)據(jù)庫建在本地,不需要使用公用磁陣,節(jié)省了群集服務(wù)器成本,提高了數(shù)據(jù)的安全性和可用性;提高了系統(tǒng)的可靠性。
文檔編號H04W88/18GK1553716SQ0313180
公開日2004年12月8日 申請日期2003年6月4日 優(yōu)先權(quán)日2003年6月4日
發(fā)明者田茂良, 昂衛(wèi)武, 汪伊明, 孫國華 申請人:中興通訊股份有限公司