王江江 李志強 趙 亮
通過對已有雙機熱備系統的研究,在傳統主備切換決策方法的基礎上,提出了有效的解決方案,形成了更準確、高效的主備切換決策方法。該方法已在青藏鐵路格拉線CTC系統中得以應用,取得了良好的效果,并在2008年獲得專利局授權。
雙機熱備是鐵路信號系統中用來提高設備可靠性的常見辦法。使用一臺機器做主機,另外一臺做備份。當主機故障時,備機自動成為主機繼續運行。這種簡單互斥機制雖對設備可靠性和可維護性都有明顯的提升,但也表現出以下缺點。
1.切換決定對單機是正確的,但從雙機整體角度看,切換目標不一致,雙機均想成為主機,可能導致反復切換或競爭。
2.主機不知道備機的狀態,主機使用時,備機的故障狀態沒有送給主機,備機也不參與整個系統的運算,因不能及時發現備機故障,等到主機也出現故障時,備機無法熱備。
3.會出現不必要的主備切換和雙機因爭搶導致的故障。比如有些系統設置了A機優先于B機成為主機,那么在A機發生間歇式故障時,會出現A機故障后切換B機為主機,A機故障暫時排除以后,又切換回A機。由于間歇性故障而導致主備機反復切換,從而導致系統不可用。
4.對故障沒有分級機制,只有故障狀態和正常狀態,不能根據故障等級的差異進行主備切換的決策。
在既有的主備切換中,無論是否向第三方仲裁模塊申請成為主機,都是本機先做出主備切換的決策,然后通知伴機,通過互斥方法對決策結果再進行修正。在這個過程中,是先決策后協商。因此決策結果存在一種不確定性,即本次切換可能由于伴機的原因而不能成功。主備切換并不是一臺機器可以決定的,需要雙機采取一致性行動。如果A機和B機的主備切換意圖有沖突,那么雙機熱備的主備切換都會出現反復和不確定性。即使暫時切換成功,也會出現不必要的反復。為此,提出了一種先協商,后決策,確保雙機采取一致性行動的主備切換辦法。
該方法先由A、B機分別檢測自身的故障,然后A、B機之間進行同步,使2臺機器均做到既了解自己的工作狀態,也了解伴機的工作狀態,雙機熱備結構圖如圖1所示。2臺機器分別根據故障比較來自行決策是成為主機還是成為備機。具體步驟如下。

圖1 雙機熱備結構
1.A、B機根據自身的檢測機制判斷自身的故障情況,然后加上本機的當前主備標記和A、B機標記,作為雙機熱備工作狀態字。
雙機熱備工作狀態字定義:
Bit0:狀態字的最低位,AB機位,如果是A機則為1,否則為0,表示A機具有變成主機的優先權。
Bit1:主備機位,主機為1,備機為0,表示主機具有繼續保持主機的優先權。
Bit2:低級故障位,如果沒有故障,則為1,否則為0,表示沒有故障的機器具有成為主機的優先權。
Bit3:高級故障位,如果沒有故障,則為1,否則為0,表示沒有故障的機器具有成為主機的優先權。故障級別低的機器具有成為主機的優先權。
Bit4:更高級別的故障。
Bit5:再高級別的故障。
…
BitN:最高級別的故障。
Bit2到BitN又稱為故障狀態字。
2.雙機工作狀態字的同步。使用多條串口和網線同時負責雙機的通信,保證通信有足夠的冗余。不管是A機還是B機,每次通信均需要記錄,并向伴機發送2個工作狀態字:一個是本機當前工作狀態字,一個是本機上次從伴機收到的伴機工作狀態字。
3.如果從伴機收到的2個工作狀態字與本機記錄的2個工作狀態字一致,(本機當前工作狀態字與對方送來的對方伴機工作狀態字相同,且本機記錄的伴機狀態字與對方的本機工作狀態字相同),則表示完成一次工作狀態字的同步,此時比較本機和伴機工作狀態字的大小,來決定本機是當主機還是備機。如果本機的工作狀態字大于伴機的工作狀態字,本機做主機,否則本機做備機。
4.如果長時間無法收到伴機送來的工作狀態字,則認為伴機已經關機或死機,本機做主機。
新方法和舊方法的狀態對比圖如圖2和圖3所示,主要區別在于黑體文字部分,新方法可保證2臺機器的主備切換目標一致,從而保證一次性切換成功。

圖2 既有雙機熱備切換狀態

圖3 新方法的雙機熱備切換狀態
1.在某些安全系統中,為了保證只有一個主機,可以采用繼電器做第三方仲裁機構,同步后,如本機狀態字大于伴機狀態字時,不是直接切換為主機,而是向第三方仲裁模塊申請成為主機。同樣,如本機狀態字小于伴機狀態字時,也不直接切換為備機,而是向第三方仲裁模塊申請成為備機。
2.為了實現人工強制切換,可以采集強制切換開關,并將該采集位作為最高故障位。如此,則當強制切換開關指向A機時,A機的狀態字必然大于B機,從而成為主機。
3.本機不僅檢測自身的故障,同時檢測伴機的故障,并將該故障納入故障狀態字的計算,然后進行比較,即可實現對故障的冗余檢測。避免本機故障導致本機故障檢測模塊出問題,而導致的故障判斷失誤。
4.可將多個采用本策略的雙機熱備決策機進行級連。從而實現多機熱備。
新的雙機熱備方法邏輯簡單,只需一次同步、一次比對,就可以迅速地讓2臺機器搞清自己的主備狀態。該方法充分利用了所有的故障信息,使所有設備的故障、主備狀態、AB機排序均被每一個雙機熱備決策模塊所獲知。采用了分布式計算的概念,在熱備決策過程中,杜絕了與伴機的反復信息交互,實現了給出任務,分布運算,從上到下一次性完成熱備決策。該方法強調了結果的惟一性,通過AB機排序,消除了決策結果的隨機性;同時強調了可擴展性,使用分級別的故障狀態字,適配不同的故障檢測機制和未來的多機熱備擴展,為未來的多機熱備和冗余故障檢測預留了擴展的空間。所以該方法具有主機了解所有相關機器故障,單機的間歇性故障不會導致主備反復切換,可根據故障級別進行切換決策,便于擴展等優點。
[1] 王秀娟.調度集中系統中雙機熱備機制的實現 [D].北京交通大學學報:自然科學版,2009(2).
[2] 楊曉芬.實時數據庫系統雙機熱備機制設計與實現[J].計算機工程與應用,2012(29).
[3] 王飛,曹桂均.雙機熱備系統心跳失效的防護方案[J].鐵路計算機應用,2013(3).