專利名稱:通信系統(tǒng)中實現(xiàn)高可用性(ha)的裝置和方法
技術(shù)領域:
本發(fā)明屬于通信領域,具體涉及通信系統(tǒng)中實現(xiàn)高可用性(HA)的裝置和方法。
目前的HA系統(tǒng)基本上是以硬件平臺和軟件兩個方面進行設計來提高系統(tǒng)的HA特性。硬件平臺的實現(xiàn)方法主要包括硬件冗余備份、硬件故障的監(jiān)測和隔離、增強的高可用性結(jié)構(gòu)等。軟件的實現(xiàn)方法主要包括監(jiān)測本地任務或線程的運行狀態(tài),對對端的(硬件冗余備份時)任務或線程進行監(jiān)測,發(fā)現(xiàn)軟件故障并進行報告和處理(隔離、恢復)并向?qū)Χ?硬件冗余備份時)報告處理的結(jié)果等。
目前的HA系統(tǒng)或者只提供對硬件冗余的支持和管理,或者只對軟件的HA提出一些解決方法或支持。在硬件實現(xiàn)中,提供盡可能的硬件冗余資源(節(jié)點、網(wǎng)絡、磁盤);在軟件管理方面,一般的解決方案為應用提供具有一致性和完整性的數(shù)據(jù)訪問,包括卷管理、文件系統(tǒng)、在線數(shù)據(jù)備份等;提供進程守護,對本地任務進行守護,并對守護的任務進行維護,這種方法考慮的是單機情況下的操作,沒有考慮冗余備份時的數(shù)據(jù)一致和狀態(tài)一致的解決辦法,并不完全滿足于冗余系統(tǒng)的HA實現(xiàn)。對于電信設備的高HA要求,由于對硬件和軟件的HA缺乏一定的管理和協(xié)調(diào),不管采用現(xiàn)有技術(shù)的那一種方案(包括兩種方案同時使用),可能不能保證可以實現(xiàn)電信系統(tǒng)的HA要求。
本發(fā)明提供一種通信系統(tǒng)中實現(xiàn)高可用性(HA)的裝置,包括面向平臺的裝置(HA-OP),用于與所述通信系統(tǒng)中使用的平臺進行數(shù)據(jù)交互,其中,包括中斷接口裝置和異常觸發(fā)裝置,分別用于處理所述平臺的中斷請求和異常觸發(fā)信號;面向應用的裝置(HA-OA),用于監(jiān)測本地任務或線程的運行;監(jiān)測對端任務或者線程和進行心跳檢測;HA判決裝置(HA-ARB),包括平臺決策裝置,用于決策所述面向平臺的裝置中不能處理的異常觸發(fā)信號;和任務決策裝置,根據(jù)所述面向應用的裝置的檢測結(jié)果,決定切換或重新啟動。
可選地,所述面向平臺的裝置還包括檢測裝置,用于檢測本端和對端的硬件資源;管理裝置,用于管理節(jié)點之間的競爭資源,獲得競爭資源的所屬關(guān)系,決定面向平臺部分的狀態(tài)信息,其中,競爭資源的所屬關(guān)系可以通過在高層軟件的控制而改變;其中,所述HA判決裝置處理所述管理裝置和檢測裝置的信息。
優(yōu)選地,所述管理裝置包括管理看門狗定時器的裝置;管理備板I/O的驅(qū)動器的裝置;管理當前節(jié)點的狀態(tài)(變量值)的裝置;所述檢測裝置包括檢測CPU、風扇和電源模塊、以太網(wǎng)卡及串口、并口和SCSI(小型計算機系統(tǒng)接口)接口的子裝置。
可選地,所述面向應用的裝置包括判斷裝置,用于判斷本地和對端任務或線程的運行是否死鎖,其中,包括發(fā)送裝置,通過發(fā)送信息判定線程或者任務是否出現(xiàn)問題;心跳檢測裝置,用于檢測對端的HA-OA的狀態(tài),發(fā)現(xiàn)對端心跳丟失時,向所述HA判決裝置報告;傳輸裝置;連接所述判斷裝置和所述心跳檢測裝置,用于與所述HA判決裝置進行交互。
優(yōu)選地,所述HA判決裝置還包括記錄裝置,用于記錄節(jié)點的工作狀態(tài),平臺的狀態(tài),節(jié)點任務或線程的狀態(tài);
處理裝置,用于根據(jù)所述記錄裝置記錄的信息和與所述面向平臺的裝置和所述面向應用的裝置交互的信息,確定所述HA的決策。
本發(fā)明還提供一種利用如權(quán)利要求1所述的裝置實現(xiàn)通信系統(tǒng)中高可用性(HA)的方法,其特征在于,包括步驟確定至少兩個HA-OA的狀態(tài),其中,一個為主用,其它為備用;主用端HA-OA對本節(jié)點上的應用和對端的備用節(jié)點進行心跳檢測;HA-ARB根據(jù)檢測結(jié)果,判斷所述應用是否可以重啟且重啟是否成功;如果可以重啟且成功,結(jié)束本方法;如果不可以重啟或重啟不成功,HA-OA向HA-ARB請求切換。
如果HA-ARB向HA-OA返回可以切換,進行切換;如果返回不可以切換,結(jié)束本方法。
可選地,所述主用端HA-OA對本節(jié)點上的應用和對端的備用節(jié)點進行心跳檢測的步驟;包括如果失去某一個應用的心跳檢測,HA-OA向HA-ARB詢問需要重啟或切換;如果失去了對端的備用節(jié)點HA-OA的心跳,記錄該狀態(tài),并向HA-ARB報告。
優(yōu)選地,所述進行心跳檢測的步驟包括連續(xù)三次未收到心跳應答,判斷為失去心跳檢測。
可選地,所述進行切換的步驟包括HA-OA向HA-ARB通知進行應用切換,同時啟動一個定時器;
如果在定時器間隔內(nèi)收到應用的切換完成應答,或者定時器超時,通知HA-ARB進行切換。
優(yōu)選地,所述確定至少兩個HA-OA的狀態(tài)的步驟還包括設定初始化所述HA系統(tǒng)或協(xié)商初始化所述HA系統(tǒng);其中,所述設定初始化所述HA系統(tǒng)的步驟包括讀取預存儲的設定信息,設定主用HA和備用HA;所述協(xié)商初始化所述HA系統(tǒng)的步驟包括判定所述至少兩個HA-OA中的一個獲取對系統(tǒng)控制的HA-OA,設定所述獲取控制的HA-OA為主用HA-OA,通知其它HA-OA為備用HA-OA。
可選地,所述判定所述至少兩個HA-OA中的一個獲取對系統(tǒng)控制的HA-OA的步驟包括判斷所述至少兩個HA-OA的那個首先加電,設定首先加電的HA-OA為主用,其它為備用;和/或判斷系統(tǒng)總線由所述至少兩個HA-OA中的那個控制,設定所述獲得控制權(quán)的HA-OA為主用,其它為備用;如果沒有一個HA-OA控制系統(tǒng)總線或首先加電,所有HA-OA通信確認一個HA-OA為主用,其它為備用。
優(yōu)選地,所述所有HA-OA通信確認一個HA-OA為主用的步驟包括根據(jù)設定優(yōu)先權(quán)確定主用;或根據(jù)所有的HA-OA產(chǎn)生的隨機數(shù)的大小確定主用。
可選地,所述所有HA-OA通信確認一個HA-OA為主用的步驟包括所述至少兩個HA-OA中的任一個發(fā)出要求控制或被控制的請求,如果未在預定時間內(nèi)收到其它HA-OA的拒絕消息,確認該HA-OA為主用或備用。
優(yōu)選地,所述確定至少兩個HA-OA的狀態(tài)的步驟由HA-ARB執(zhí)行,其中,還包括步驟所述HA-ARB通知HA-OA當前節(jié)點的狀態(tài)。
可選地,所述判斷所述應用是否可以重啟的步驟包括,在本地應用故障和/或本地平臺故障和本地和對端節(jié)點故障時,HA-ARB發(fā)送不可重啟消息,在本地和對端節(jié)點正常運行或?qū)Χ斯?jié)點故障時,HA-ARB根據(jù)預先設定,發(fā)送可以或不可以重啟消息;所述方法還包括步驟在HA-OA報告應用異常時,如果出現(xiàn)本地平臺故障,進入本地應用和平臺故障狀態(tài),如果節(jié)點正常運行,進入本地應用故障狀態(tài);如果對端節(jié)點故障,進入對端節(jié)點和本地故障狀態(tài);所述如果HA-ARB向HA-OA返回可以切換的步驟包括,判斷對端節(jié)點是否正常,如果正常,可以切換;所述方法還包括步驟,在切換后,改變系統(tǒng)的狀態(tài),如果不能切換,報告故障。
本發(fā)明提供硬件冗余資源;和軟件管理冗余備份時的數(shù)據(jù)一致和狀態(tài)一致的解決辦法,可以實現(xiàn)電信系統(tǒng)的HA要求。
圖4為圖3中的主用端HA面向應用部分(HA-OA)的工作流程圖;圖5為圖3中的備用端HA面向應用部分(HA-OA)的工作流程圖;圖6為圖3中的HA判決部分(HA-ARB)的工作流程圖。
針對電信設備對HA管理系統(tǒng)的較高要求,本發(fā)明的實施例的HA管理裝置和方法解決在對HA特性要求高(采用硬件和軟件共同來實現(xiàn)高可用性)的系統(tǒng)的HA管理的實現(xiàn)。
圖1是本發(fā)明的實施例中HA裝置在系統(tǒng)中的原理示意圖。本發(fā)明的實施例的系統(tǒng)中存在兩個節(jié)點,工作在2N冗余模式下。在不同系統(tǒng)中,存在不同的硬件平臺和操作系統(tǒng)。而HA的軟件經(jīng)過較小的修改后,可以運行在不同的操作系統(tǒng)和硬件平臺上。本發(fā)明的實施例中,在RNC(無線網(wǎng)絡控制器)的應用中,采用CPCI(Compact PCI)平臺ZT5083(這是INTEL公司生產(chǎn)的CPCI HA平臺),在CPCI平臺操作系統(tǒng)采用VxWorks 5.4(這是WIND RIVER公司的嵌入式操作系統(tǒng))。
HA管理系統(tǒng)位于應用程序和硬件平臺之間。其主要功能是管理本節(jié)點和對端節(jié)點硬件和軟件上的HA實現(xiàn),使兩個節(jié)點能夠協(xié)調(diào)一致的工作,并和對端的HA管理系統(tǒng)來協(xié)商完成整個系統(tǒng)的HA實現(xiàn)。
在這個實施例中,實現(xiàn)了硬件冗余備份、硬件故障的監(jiān)測和隔離。軟件能夠監(jiān)測本地任務或線程的運行狀態(tài),對對端的任務或線程進行監(jiān)測,發(fā)現(xiàn)軟件故障并進行報告和處理(隔離、恢復),并把處理的結(jié)果報告給對端節(jié)點。
系統(tǒng)中存在兩個節(jié)點,工作在2N冗余模式下。在不同系統(tǒng)中,存在不同的硬件平臺和操作系統(tǒng)。HA軟件經(jīng)過較小的修改后,可以運行在不同的操作上。在RNC(無線網(wǎng)絡控制器)的應用中,采用CPCI(Compact PCI)平臺ZT5083(INTEL公司的CPCI HA平臺),在CPCI平臺操作系統(tǒng)采用VxWorks 5.4(WIND RIVER公司的嵌入式操作系統(tǒng))。
在本發(fā)明的實施例中的2N(1+1備份)冗余工作模式下,節(jié)點的狀態(tài)有兩種Active(主用)和Standby(備用)。其中,主用端10狀態(tài)的節(jié)點具有對競爭資源的控制權(quán),向外提供正常的功能;備用端20的節(jié)點一般主要是保持和主用節(jié)點之間的狀態(tài)和數(shù)據(jù)同步,準備在主用節(jié)點發(fā)生故障時,接替主用節(jié)點的位置。
主用端10和備用端20的硬件結(jié)構(gòu)是相同的,因此,這里僅描繪主用端10。其中,硬件(HW)通過操作系統(tǒng)(OS)與HA相互作用,硬件(HW)和HA也可以直接相互作用,然后用于應用層(Application)。主用端10和備用端20通過心跳線進行交互和控制。
在CPCI平臺上,主用端10和備用端20的兩個CPU板對CPCI總線的控制權(quán)在系統(tǒng)加電以后就決定了,因此節(jié)點的主用/備用狀態(tài)只能根據(jù)對總線的控制權(quán)來決定,即加電時主用端10獲得了對總線的控制權(quán)。而在兩個獨立工作站構(gòu)成的雙機系統(tǒng)中,不存在類似的競爭資源,因此節(jié)點的狀態(tài)需要根據(jù)事先指定的狀態(tài)或者協(xié)商決定(在兩個獨立工作站構(gòu)成的雙機系統(tǒng)中,共享的磁盤系統(tǒng)和對外提供服務通信線路為競爭資源,但競爭資源的歸屬由節(jié)點狀態(tài)決定,此時的節(jié)點狀態(tài)主要由預先指定和協(xié)商共同作用決定)。綜合這些情況,節(jié)點狀態(tài)初始化的設定可以有三種方法預先設定、競爭、或者協(xié)商。節(jié)點初始化時首先會查詢是否存在競爭資源和競爭資源的所屬關(guān)系來決定節(jié)點的初始化狀態(tài)。如果沒有競爭資源,節(jié)點會查詢是否存在預先設定的狀態(tài),如果存在預先設定的狀態(tài),就依據(jù)預先設定的狀態(tài)來決定節(jié)點的狀態(tài)。如果不存在預先設定的狀態(tài),或者預先設定的狀態(tài)存在沖突,則進行協(xié)商設定。
在本發(fā)明的實施例1中,采用競爭設定競爭設定與HA實現(xiàn)的硬件環(huán)境密切相關(guān),此時系統(tǒng)中的兩個節(jié)點之間存在競爭資源,并且,這種競爭資源的最初所屬關(guān)系在系統(tǒng)加電后就可以明確是那一個節(jié)點獲得了競爭資源。硬件平臺應該保證不存在節(jié)點狀態(tài)的沖突。針對CPCI平臺,在CPCI中存在競爭資源(CPCI總線)。BSP(板級支持包)中存在函數(shù),HA軟件可以通過這些函數(shù)來查詢或者改變競爭資源的所屬關(guān)系。
在本發(fā)明的實施例2中采用預先設定HA軟件中,存在變量明確規(guī)定節(jié)點的狀態(tài)。HA軟件獲得這個狀態(tài)后,需要和另外的節(jié)點進行確認,如果存在沖突,則通過協(xié)商設定的方法解決。如果另外節(jié)點不存在,則本身設為主用狀態(tài)。
協(xié)商設定如果節(jié)點狀態(tài)沒有預先設定和競爭設定,或者預先設定的狀態(tài)存在沖突,就進行協(xié)商設定。節(jié)點之間需要通過一種通信方式來協(xié)商主備關(guān)系。
節(jié)點狀態(tài)的設定過程如下步驟a、系統(tǒng)啟動以后,在CPCI中調(diào)用BSP提供的函數(shù),來判斷當前節(jié)點對CPCI總線的控制權(quán),獲得控制權(quán)的節(jié)點狀態(tài)是主用,沒有控制權(quán)的節(jié)點狀態(tài)是備用,節(jié)點狀態(tài)初始化完畢,跳到步驟d;在雙節(jié)點系統(tǒng)中,跳過該步驟。
步驟b、讀取HA軟件中變量規(guī)定的節(jié)點狀態(tài),如果沒有設置節(jié)點狀態(tài)則跳到步驟c;否則和對端進行通信來確認節(jié)點的狀態(tài),如果對端不存在,則設置自己為主用,狀態(tài)設置結(jié)束,跳轉(zhuǎn)道步驟d。否則,如果存在狀態(tài)沖突,且對端的狀態(tài)是明確的(一個節(jié)點首先啟動,只可能是主用),因此,只能設置本節(jié)點為備用,狀態(tài)設置完畢,跳到步驟d。如果對方狀態(tài)不明確(同時啟動),就跳轉(zhuǎn)到步驟c進行協(xié)商確定。如果狀態(tài)不沖突,狀態(tài)設置完畢,跳到步驟d.
步驟c、協(xié)商設定和對端進行通信來協(xié)商確定節(jié)點的狀態(tài)。如果對端節(jié)點不存在,則設置自己為主用,狀態(tài)設置結(jié)束,跳轉(zhuǎn)道步驟d。如果對端節(jié)點存在且狀態(tài)明確(一個節(jié)點首先啟動,只可能是主用),因此,只能設置本節(jié)點為備用,狀態(tài)設置完畢,跳到步驟d。否則根據(jù)策略進行協(xié)商。協(xié)商策略有很多種,例如,雙方各產(chǎn)生一個隨機數(shù),隨機數(shù)大的就是主用,小的就是備用。
步驟d、結(jié)束。
圖2示出了圖1的包括HA裝置的系統(tǒng)的節(jié)點初始化時的狀態(tài)的流程圖。
在步驟10,HA管理系統(tǒng)開始初始化,然后在步驟11,判斷是否存在競爭資源如果存在競爭資源,到步驟12;如果不存在競爭資源,到步驟14;在步驟12,調(diào)用平臺HA的函數(shù)來判斷當前競爭資源的控制權(quán)屬于那個節(jié)點。在步驟13,根據(jù)步驟12的結(jié)果,得到競爭資源的節(jié)點狀態(tài)為主用,沒有得到競爭資源的節(jié)點狀態(tài)為備用。初始化結(jié)束。
在步驟14,判斷本端節(jié)點的狀態(tài)是否設定,如果設定,到步驟15;如果沒有設定,到步驟21。
在步驟15,和對端節(jié)點通信,在步驟16,根據(jù)通信結(jié)果來判斷對端節(jié)點是否存在,如果對端節(jié)點存在,到步驟17;如果對端節(jié)點不存在,到步驟20;在步驟17,詢問對端節(jié)點狀態(tài)是否明確,如果狀態(tài)明確,到步驟18,如果不明確,到步驟1,是步驟21的開始;在步驟18,判斷和對端節(jié)點的狀態(tài)是否存在沖突,如果存在沖突,到步驟19;如果不存在沖突,初始化結(jié)束。在步驟19,設置本端節(jié)點的狀態(tài)為對端節(jié)點相反的狀態(tài),初始化結(jié)束。
在步驟20,由于對端節(jié)點不存在,設置本端節(jié)點的狀態(tài)為主用,初始化結(jié)束。
在步驟21,判斷對端節(jié)點是否存在,如果存在,到步驟22;如果不存在到步驟25。在步驟22,判斷對端節(jié)點的狀態(tài)是否明確,如果對端節(jié)點的狀態(tài)明確,到步驟23;如果對端節(jié)點的狀態(tài)不明確,到步驟24。在步驟23,設置本端節(jié)點的狀態(tài)為對端節(jié)點相反的狀態(tài),初始化結(jié)束。
在步驟24,根據(jù)一定的策略和對端節(jié)點協(xié)商確定節(jié)點的狀態(tài)。初始化結(jié)束。
在步驟25,由于對端節(jié)點不存在,設置本端節(jié)點的狀態(tài)為主用,初始化結(jié)束。
圖3為圖1的本發(fā)明實施例中HA裝置在系統(tǒng)中更具體的原理框圖。HA包括三個部分面向應用的部分(HA-OA),面向平臺的部分(HA-OP)和HA判決部分(HA-ARB)。
面向平臺的部分(HA-OP)在圖3中的框33或者框33’,隨著平臺的不同而不同,一般不作為獨立任務或進程運行,主要由各種中斷和異常觸發(fā)來完成。在操作系統(tǒng)允許的情況下,盡可能的接管平臺運行過程中的各種異常中斷。如果這些異常操作系統(tǒng)不能處理的話,HA-OP(面向平臺的部分)(圖3中的框33或者框33’)向HA-ARB(HA判決部分)報告這一事件,由HA-ARB(圖3中的框32或者框32’)來進行決策。這些異??赡馨ǔ悖欠ㄖ噶?,數(shù)據(jù)對齊等異常操作(需要操作系統(tǒng)的支持)。進行雙機的硬件資源的檢測,管理節(jié)點之間的競爭資源,獲得競爭資源的所屬關(guān)系,決定面向平臺部分的狀態(tài)信息,在高層軟件的控制下,可以改變這種所屬關(guān)系。
1、存在競爭資源,并且已經(jīng)獲得競爭資源的控制權(quán)。
在CPCI系統(tǒng)中,競爭資源包括對CPCI總線的控制權(quán)(對背板總線的獲得和釋放)。
2、存在競爭資源,但沒有獲得競爭資源的控制權(quán)。
在CPCI系統(tǒng)中,競爭資源包括對CPCI總線的控制權(quán)(對背板總線的獲得和釋放)3、不存在競爭資源。
在雙工作站構(gòu)成的雙機系統(tǒng)中,不存在競爭資源。
4、平臺資源的狀態(tài)(正常或者故障)。
在CPCI系統(tǒng)中,應可報告或檢查的平臺資源(非競爭資源)有a)Watchdog timer(看門狗定時器)超時
b)備板I/O的Driverc)當前節(jié)點的狀態(tài)(變量值)d)對端節(jié)點否存在CPCI系統(tǒng)使用hot swap(熱插拔)標準監(jiān)測。
e)風扇和電源模塊是否正常(CPCI系統(tǒng))f)CPU溫度是否異常g)監(jiān)測以太網(wǎng)卡是否異常h)監(jiān)測串口、并口和SCSI(小型計算機系統(tǒng)接口)接口是否正常i)監(jiān)測I/O板的Hot swap。(CPCI系統(tǒng))面向應用部分(HA-OA)(圖3中的框31或者框31’)一般作為一個獨立線程或任務運行,具有以下功能1、監(jiān)測本地任務或線程的運行是否死鎖(死鎖檢測具體由HA-OA完成),并向HA-ARB(圖中的框32或者框32’)報告,由HA-ARB(圖中的框32或者框32’)來決定是否切換,或者重新啟動該應用,策略需要預先由應用告訴HA-ARB(圖中的框32或者框32’)。檢測通過發(fā)送消息的方式,判定線程或者任務是否出現(xiàn)問題。此外,根據(jù)應用的程序的具體情況,平衡各個任務或線程之間對檢測的響應時間的不同。
2、監(jiān)測對端任務或者線程是否正常,記錄對端報告的每個對應線程或者任務狀態(tài),并向HA-ARB報告。由HA-ARB來決策。
3、心跳檢測由于HA-OA作為獨立的任務或者線程運行,因此需要通過心跳方式,監(jiān)測對方HA-OA的狀態(tài)。當發(fā)現(xiàn)對端心跳丟失時,向HA-ARB報告這一事件,由HA-ARB來決策。
圖4描繪了圖3中的主用端HA-OA的工作流程圖。
在步驟41,HA-OA開始執(zhí)行。
在步驟42,主用端HA-OA向本節(jié)點上的應用和對端的備用節(jié)點發(fā)送心跳檢測。
在步驟43,如果失去某一個應用的心跳檢測(連續(xù)3次沒有收到心跳應答)。
在步驟44,HA-OA向HA-ARB詢問,該應用是否可以重啟。如果可以重啟,到步驟45;如果不可以重啟,到步驟46。
在步驟45,判斷重啟任務是否成功,如果成功,結(jié)束。
在步驟46,HA-OA記錄該應用異常,并向HA-ARB報告這一異常。
在步驟47,HA-OA向HA-ARB請求切換。如果,HA-ARB向HA-OA返回可以切換,到步驟48,如果返回不可以切換,結(jié)束。
在步驟48,通知應用切換,并啟動一個定時器。
在步驟49,在定時器間隔內(nèi)收到應用的切換完成應答,或者定時器迢時,到步驟410。
在步驟410,通知HA-ARB進行切換。
在步驟411,如果失去了對端HA-OA的心跳(連續(xù)3次沒有收到心跳應答)。
在步驟412,認為對端HA-OA故障或者不存在。
在步驟413,記錄對端HA-OA故障或者不存在。并向HA-ARB報告這一異常。
圖5為圖3中的備用端HA-OA的工作流程圖。
在步驟51,HA-OA開始執(zhí)行。
在步驟52,備用端HA-OA向本節(jié)點上的應用和對端的備用節(jié)點發(fā)送心跳檢測。
在步驟53,如果失去某一個應用的心跳檢測(連續(xù)3次沒有收到心跳應答)。
在步驟54,HA-OA向HA-ARB詢問,該應用是否可以重啟。如果可以重啟,到步驟55;如果不可以重啟,到步驟56。
在步驟55,判斷重啟任務是否成功,如果成功,結(jié)束。
在步驟56,HA-OA記錄該應用異常,并向HA-ARB報告這一異常。
在步驟57,如果失去了對端HA-OA的心跳(連續(xù)3次沒有收到心跳應答)。
在步驟58,認為對端HA-OA故障或者不存在。
在步驟59,記錄對端HA-OA故障或者不存在。并向HA-ARB報告這一異常。
在步驟510,通知應用切換,并啟動一個定時器。
在步驟511,在定時器間隔內(nèi)收到應用的切換完成應答,或者定時器超時,到步驟510。
在步驟512,通知HA-ARB進行切換。
HA判決部分(HA-ARB)(圖中的框32或者框32’)也是作為一獨立的線程或任務運行。
圖6為圖3中的HA判決部分(HA-ARB)的工作流程圖。
在步驟61,HA-ARB開始運行。
在步驟62,HA-ARB調(diào)用HA管理系統(tǒng)的初始化過程得到當前的節(jié)點狀態(tài),具體過程參見圖2和圖2的執(zhí)行過程在步驟63,HA把當前節(jié)點的狀態(tài)通知HA-OA.,在步驟64,HA-ARB根據(jù)HA-OA和HA-OP的信息來決定是否切換。
下面結(jié)合表1用狀態(tài)FSM(有線狀態(tài)機)來描述HA-ARB決定是否切換的方法。
表1HA-ARB工作的FSM(有限狀態(tài)機) 注-無狀態(tài)變化/不期望事件,無狀態(tài)變化。
HA判決部分(HA-ARB)具有如下功能1、記錄節(jié)點的工作狀態(tài)(主用/備用)(來自初始化過程),記錄平臺的狀態(tài)(是否有資源故障,并對資源故障分級別記錄)來自HA-OP(圖3中的框33或者框33’),記錄本節(jié)點和對端節(jié)點任務或線程的狀態(tài)(是否工作異常或死鎖,并對故障進行分級別記錄),來自本節(jié)點的HA-OA(圖中的框31或者框31’)和對端的HA-ARB(圖3中的框2或者框2’)。
2、提供一定的算法,和對端的HA-ARB(圖3中的框32或者框32’)一起,對HA-OA(圖3中的框31或者框31’)和HA-OP(圖3中的框33或者框33’)報告的HA信息進行綜合處理,并決定相應的決策。
3、故障分類critical(嚴重)故障立即進行切換。
Major(重要)故障需要進行切換隔離故障,但可進行應用的同步。
Minor(微小)故障可以忍受的故障,可不進行切換。
其中,具體的決策策略和算法在下文描繪切換過程中詳細描述。
4、決定心跳信息和檢測、傳輸方法。
切換過程●應用(非HA管理系統(tǒng))發(fā)起的切換請求應用發(fā)起的切換命令通過任務或線程轉(zhuǎn)發(fā)給HA-OA,由HA-OA轉(zhuǎn)發(fā)給HA-ARB,由HA-ARB決定是否能夠切換,如果不能夠切換,則返回不能夠切換的原因。同時允許應用強制改變節(jié)點的狀態(tài),即HA_ARB接到切換命令后,略過切換判斷策略,直接進行切換。
主用端任務或線程發(fā)現(xiàn)內(nèi)部故障,首先本身進行故障恢復,如果恢復不了,則通知HA-OA,由HA-OA轉(zhuǎn)發(fā)給HA-ARB,HA-ARB決定是否重新啟動或者進行切換,HA-ARB同時向備用端的HA-ARB報告,更新備用端記錄的任務或線程狀態(tài)。備用端任務或線程發(fā)現(xiàn)內(nèi)部故障同樣進行處理,只是,備用端不進行切換過程。
在錯誤恢復的過程中,如果任務或者線程允許,應該首先選擇重新啟動發(fā)生故障的任務或者線程。HA-根據(jù)當前節(jié)點和另一個節(jié)點運行的狀態(tài)(包含應用的狀態(tài)),決定是否允許進行切換。如果可以切換,則首先發(fā)送切換準備消息到各個任務或者線程,設定定時器,如果在定時器間隔內(nèi)收到應答,或者定時器超時,根據(jù)不同的情況,進行處理如果不存在競爭資源,則HA-OA和對方協(xié)商新的狀態(tài)。
如果存在競爭資源,則調(diào)用HA-OP,獲得或者釋放競爭資源。
不管切換是否成功,向各個任務或者線程報告新的節(jié)點狀態(tài)。如果切換是由于任務或者線程通過請求發(fā)起的,則應答?!馠A管理系統(tǒng)發(fā)起的切換請求1、HA-OA發(fā)現(xiàn)本地的任務或線程死鎖或異常如果節(jié)點處于主用狀態(tài),HA-OA向HA-ARB報告這一事件,HA-ARB根據(jù)預先設定的策略,選擇重新啟動或進行切換;如果節(jié)點處于備用狀態(tài),則不發(fā)生切換過程,其它處理相同。
如果需要進行切換,則切換的過程和應用(非HA管理系統(tǒng))發(fā)起的切換請求的處理相同。
2、HA-ARB收到HA-OP故障報告根據(jù)故障的級別,決定是否進行切換,如果需要切換,則切換過程和應用(非HA管理系統(tǒng))發(fā)起的切換請求的處理相同。
HA_OP通過檢測,將發(fā)現(xiàn)的故障上報給HA_ARB,由HA_ARB發(fā)出切換的請求。
當HA-OP檢測到硬件、操作系統(tǒng)發(fā)生故障時,通知HA_ARB,考慮應用情況的復雜性,這些故障需要依據(jù)不同故障類型進行分類,不同故障采取不同的處理。
有些故障,HA-OP會采取相應的動作,正常的節(jié)點主動獲得競爭資源,此時,HA-OP向HA-ARB報告競爭資源的狀態(tài)發(fā)生了變化,HA-ARB來判定新的狀態(tài)。
有些故障,HA-OP只是進行檢測,由HA-ARB決定是否進行切換到新的狀態(tài)。如果HA-ARB決定切換,則首先通過HA-OA向各個任務或者線程發(fā)送通知準備切換,啟動定時器,在定時器超時或者全部收到應答后,和對方協(xié)商新的狀態(tài)。
無論那種方法,當新的狀態(tài)決定之后,如果發(fā)生變化,則向任務或者線程進行報告,以便任務或者線程根據(jù)新的狀態(tài)進行不同的處理。
HA-OP存在故障和正常狀態(tài),應該盡可能的通知HA-ARB,以便HA-ARB進行決策時,能夠得到關(guān)于平臺的信息。
3、HA-OA收到HA-ARB競爭資源所屬關(guān)系變化的通知根據(jù)競爭資源,判斷當前的狀態(tài),然后向任務或者線程發(fā)送通知。
4、心跳監(jiān)測心跳監(jiān)測用來監(jiān)測兩個節(jié)點的HA運行是否正常。
如果,主用端監(jiān)測到備用端失去心跳,則認為備用端的HA故障,記錄故障發(fā)生,并向網(wǎng)管報告故障。如果主用HA-OA重新監(jiān)測到備用端HA-OA的心跳,則認為故障恢復,清除故障記錄。
如果,備用端監(jiān)測到主用端失去心跳,則認為主用端的HA故障,HA-ARB進行強制切換,調(diào)用HA-OP獲得競爭資源(如果需要),使其變?yōu)橹饔?,同時向各個任務或者線程發(fā)送狀態(tài)改變的通知。這時如果出現(xiàn)錯誤,則應當根據(jù)指定策略使備用端進行狀態(tài)躍遷。
雖然通過實施例描繪了本發(fā)明,本領域普通技術(shù)人員知道,本發(fā)明有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本發(fā)明的精神。
權(quán)利要求
1.一種通信系統(tǒng)中實現(xiàn)高可用性(HA)的裝置,其特征在于,包括面向平臺的裝置(HA-OP),用于與所述通信系統(tǒng)中使用的平臺進行數(shù)據(jù)交互,其中,包括中斷接口裝置和異常觸發(fā)裝置,分別用于處理所述平臺的中斷請求和異常觸發(fā)信號;面向應用的裝置(HA-OA),用于監(jiān)測本地任務或線程的運行;監(jiān)測對端任務或者線程和進行心跳檢測;HA判決裝置(HA-ARB),包括平臺決策裝置,用于決策所述面向平臺的裝置中不能處理的異常觸發(fā)信號;和任務決策裝置,根據(jù)所述面向應用的裝置的檢測結(jié)果,決定切換或重新啟動。
2.如權(quán)利要求1所述的裝置,其特征在于,所述面向平臺的裝置還包括檢測裝置,用于檢測本端和對端的硬件資源;管理裝置,用于管理節(jié)點之間的競爭資源,獲得競爭資源的所屬關(guān)系,決定面向平臺部分的狀態(tài)信息,其中,競爭資源的所屬關(guān)系可以通過在高層軟件的控制而改變;其中,所述HA判決裝置處理所述管理裝置和檢測裝置的信息。
3.如權(quán)利要求2所述的裝置,其特征在于,所述管理裝置包括管理看門狗定時器的裝置;管理備板I/O的驅(qū)動器的裝置;管理當前節(jié)點的狀態(tài)(變量值)的裝置;所述檢測裝置包括檢測CPU、風扇和電源模塊、以太網(wǎng)卡及串口、并口和SCSI(小型計算機系統(tǒng)接口)接口的子裝置。
4.如權(quán)利要求1所述的裝置,其特征在于,所述面向應用的裝置包括判斷裝置,用于判斷本地和對端任務或線程的運行是否死鎖,其中,包括發(fā)送裝置,通過發(fā)送信息判定線程或者任務是否出現(xiàn)問題;心跳檢測裝置,用于檢測對端的HA-OA的狀態(tài),發(fā)現(xiàn)對端心跳丟失時,向所述HA判決裝置報告;傳輸裝置;連接所述判斷裝置和所述心跳檢測裝置,用于與所述HA判決裝置進行交互。
5.如權(quán)利要求1所述的裝置,其特征在于,所述HA判決裝置還包括記錄裝置,用于記錄節(jié)點的工作狀態(tài),平臺的狀態(tài),節(jié)點任務或線程的狀態(tài);處理裝置,用于根據(jù)所述記錄裝置記錄的信息和與所述面向平臺的裝置和所述面向應用的裝置交互的信息,確定所述HA的決策。
6.一種利用如權(quán)利要求1所述的裝置實現(xiàn)通信系統(tǒng)中高可用性(HA)的方法,其特征在于,包括步驟確定至少兩個HA-OA的狀態(tài),其中,一個為主用,其它為備用;主用端HA-OA對本節(jié)點上的應用和對端的備用節(jié)點進行心跳檢測;HA-ARB根據(jù)檢測結(jié)果,判斷所述應用是否可以重啟且重啟是否成功;如果可以重啟且成功,結(jié)束本方法;如果不可以重啟或重啟不成功,HA-OA向HA-ARB請求切換。如果HA-ARB向HA-OA返回可以切換,進行切換;如果返回不可以切換,結(jié)束本方法。
7.如權(quán)利要求6所述的方法,其特征在于,所述主用端HA-OA對本節(jié)點上的應用和對端的備用節(jié)點進行心跳檢測的步驟;包括如果失去某一個應用的心跳檢測,HA-OA向HA-ARB詢問需要重啟或切換;如果失去了對端的備用節(jié)點HA-OA的心跳,記錄該狀態(tài),并向HA-ARB報告。
8.如權(quán)利要求7所述的方法,其特征在于,所述進行心跳檢測的步驟包括連續(xù)三次未收到心跳應答,判斷為失去心跳檢測。
9.如權(quán)利要求6所述的方法,其特征在于,所述進行切換的步驟包括HA-OA向HA-ARB通知進行應用切換,同時啟動一個定時器;如果在定時器間隔內(nèi)收到應用的切換完成應答,或者定時器超時,通知HA-ARB進行切換。
10.如權(quán)利要求6所述的方法,其特征在于,所述確定至少兩個HA-OA的狀態(tài)的步驟還包括設定初始化所述HA系統(tǒng)或協(xié)商初始化所述HA系統(tǒng);其中,所述設定初始化所述HA系統(tǒng)的步驟包括讀取預存儲的設定信息,設定主用HA和備用HA;所述協(xié)商初始化所述HA系統(tǒng)的步驟包括判定所述至少兩個HA-OA中的一個獲取對系統(tǒng)控制的HA-OA,設定所述獲取控制的HA-OA為主用HA-OA,通知其它HA-OA為備用HA-OA。
11.如權(quán)利要求10所述的方法,其特征在于,所述判定所述至少兩個HA-OA中的一個獲取對系統(tǒng)控制的HA-OA的步驟包括判斷所述至少兩個HA-OA的那個首先加電,設定首先加電的HA-OA為主用,其它為備用;和/或判斷系統(tǒng)總線由所述至少兩個HA-OA中的那個控制,設定所述獲得控制權(quán)的HA-OA為主用,其它為備用;如果沒有一個HA-OA控制系統(tǒng)總線或首先加電,所有HA-OA通信確認一個HA-OA為主用,其它為備用。
12.如權(quán)利要求11所述的方法,其特征在于,所述所有HA-OA通信確認一個HA-OA為主用的步驟包括根據(jù)設定優(yōu)先權(quán)確定主用;或根據(jù)所有的HA-OA產(chǎn)生的隨機數(shù)的大小確定主用。
13.如權(quán)利要求11所述的方法,其特征在于,所述所有HA-OA通信確認一個HA-OA為主用的步驟包括所述至少兩個HA-OA中的任一個發(fā)出要求控制或被控制的請求,如果未在預定時間內(nèi)收到其它HA-OA的拒絕消息,確認該HA-OA為主用或備用。
14.如權(quán)利要求11所述的方法,其特征在于,所述確定至少兩個HA-OA的狀態(tài)的步驟由HA-ARB執(zhí)行,其中,還包括步驟所述HA-ARB通知HA-OA當前節(jié)點的狀態(tài)。
15.如權(quán)利要求6所述的方法,其特征在于,所述判斷所述應用是否可以重啟的步驟包括,在本地應用故障和/或本地平臺故障和本地和對端節(jié)點故障時,HA-ARB發(fā)送不可重啟消息,在本地和對端節(jié)點正常運行或?qū)Χ斯?jié)點故障時,HA-ARB根據(jù)預先設定,發(fā)送可以或不可以重啟消息;所述方法還包括步驟在HA-OA報告應用異常時,如果出現(xiàn)本地平臺故障,進入本地應用和平臺故障狀態(tài),如果節(jié)點正常運行,進入本地應用故障狀態(tài);如果對端節(jié)點故障,進入對端節(jié)點和本地故障狀態(tài);所述如果HA-ARB向HA-OA返回可以切換的步驟包括,判斷對端節(jié)點是否正常,如果正常,可以切換;所述方法還包括步驟,在切換后,改變系統(tǒng)的狀態(tài),如果不能切換,報告故障。
全文摘要
本發(fā)明提供了一種通信系統(tǒng)中實現(xiàn)高可用性(HA)的裝置和方法。其中裝置包括面向平臺的裝置(HA-OP),用于與所述通信系統(tǒng)中使用的平臺進行數(shù)據(jù)交互,其中,包括中斷接口裝置和異常觸發(fā)裝置,分別用于處理所述平臺的中斷請求和異常觸發(fā)信號;面向應用的裝置(HA-OA),用于監(jiān)測本地任務或線程的運行;監(jiān)測對端任務或者線程和進行心跳檢測;HA判決裝置(HA-ARB),包括平臺決策裝置,用于決策所述面向平臺的裝置中不能處理的異常觸發(fā)信號;和任務決策裝置,根據(jù)所述面向應用的裝置的檢測結(jié)果,決定切換或重新啟動。本發(fā)明提供硬件冗余資源;和軟件管理冗余備份時的數(shù)據(jù)一致和狀態(tài)一致的解決辦法,可以實現(xiàn)電信系統(tǒng)的HA要求。
文檔編號H04B1/74GK1476178SQ0314628
公開日2004年2月18日 申請日期2003年7月8日 優(yōu)先權(quán)日2003年7月8日
發(fā)明者李海民, 滕建剛, 李敏行 申請人:大唐移動通信設備有限公司