前言:想要寫出一篇引人入勝的文章?我們特意為您整理了嵌入式系統雙機熱備技術淺議范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:為構建一個強實時性和高可靠性的嵌入式系統,提出了一種嵌入式系統的雙機熱備方法。該方法首先采用“先啟為主”的主備機身份識別機制確認主備機身份;然后為主備機之間的心跳通信配備了2條心跳線,并且在處于正常工作運行狀態的主機上創建一個互斥信號量,以此確定當前只有一臺機器處于工作狀態,避免了雙主機現象的出現;建立主備機同步通信機制,確保主備機的狀態和相互之間接收數據的實時通信;通過對主備機工作狀態的實時監測,及時診斷系統故障,并采用主備機自動切換算法實現雙機熱備功能。
關鍵詞:嵌入式軟件;軟件測試;雙機熱備;實時系統
目前,嵌入式系統的健壯性和穩定性是用戶和系統設計人員都十分關注的問題。如果在嵌入式系統運行過程中,因為系統硬件或者軟件故障導致整個系統無法繼續正常工作,則可能會帶來不可預知的影響和損失。因此,為了維護嵌入式系統的高可用性和高可靠性,必須采取適當的措施來保證嵌入式系統不間斷的穩定運行,雙機容錯技術就是在這樣的背景下產生并在嵌入式系統中得到了廣泛應用[1]。當前嵌入式系統中最常見的雙機容錯技術有無磁盤型、共享磁盤型、磁盤鏡像型、共享和鏡像共存型等,這些方法大多應用在專用的容錯系統中,應用在通用的容錯系統中的較少[2]。上述這些方法大都是在應用層實現容錯的功能,因此不可避免地會帶來以下問題:①增加設計人員的工作量,設計人員在實現具體業務的同時必須考慮容錯功能的實現;②數據容錯的可靠性難以保證,設計人員只要有考慮不周的地方,就可能導致容錯系統無法正確備份,導致備份失效;③系統可擴展性較差,一旦在系統中增加新的功能,設計人員必須重新考慮備份功能的實現,系統的可測試性和可維護性差。為了能夠有效地保證嵌入式系統穩定、可靠、有效和持續運行,本文提出了一種嵌入式系統的雙機熱備方法。該方法能夠保證設備在無人監管的情況下不間斷正常運行,具有技術成熟、運行成本低和任務可靠性較高等優點。
1雙機熱備系統概述
雙機熱備技術一般是在服務器系統出現臨時故障時采取的一種熱備份技術,通過對服務器系統的熱備份,可以避免服務器系統發生故障時產生的長時間服務中斷,確保服務器系統能夠長時間可靠運行。雙機熱備概念分為廣義和狹義2種。從廣義上講,就是將2臺服務器中的重要服務進行相互備份,并且2臺服務器共同執行同一服務。當任意1臺服務器運行時出現故障,另外1臺服務器在最短的時間內接管該故障服務器的一切服務,該接管工作不需要人工進行干預,保證整個服務器系統正常不間斷運行。狹義上講,服務器數據同時寫入2臺服務器中,或者這2臺服務器采用1個共享存儲設備。在同一時間2臺服務器只有1臺處于激活(工作)狀態,另外1臺處于靜默狀態。當處于激活狀態的服務器故障時,通過心跳機制激活另外1臺服務器,讓其接管當前工作。雙機熱備系統采用故障隔離的工作原理,將發生故障的設備以故障點轉移的方式讓處于熱備份狀態的正常設備接管當前工作,保證整個系統的不間斷運行。故障的恢復不是在故障設備上,而是在熱備份的設備上,熱備份的方式不是用來修復當前故障設備,而僅僅是將故障隔離。雙機熱備系統中的關鍵技術有主備機身份識別技術、主備機之間心跳通信技術、主備機同步技術和主備機故障檢測和切換技術等。
2主備機身份識別
目前大多數的雙機熱備系統都采用在主備機端安裝不同軟件的方式。這種方法的優點是程序開發較為簡便、邏輯清晰;缺點是靈活性較差、不便于維護。為了使主機和備機具有完全對等性,采用“先啟為主”的主備機身份識別機制,即先啟動的為主機,后啟動的為從機。“先啟為主”的主備機身份識別機制采用端口監聽的方法實現。首先在主機和備機上分別配置好對方的IP地址和通信端口號,在嵌入式系統的任務啟動后立即創建一個套接字并向對方通信端口發出連接請求。如果連接成功說明對方已經啟動,本機標識為備機;如果連接失敗將本機標識為主機,并將套接字綁定到主備機通信端口進行監聽。這樣,無論備機何時啟動,主機都會接受備機的連接請求并與之建立連接。
3建立主備機之間的心跳通信
為了提高嵌入式雙機熱備系統的可靠性,首當其沖需要解決的是主機設備和備機設備之間的通信問題。雙方通信的可靠程度很大程度上決定了主機設備和備機設備數據的同步性、主機設備和備機設備相互監測的準確性、主機設備和備機設備數據傳輸的穩定性以及隔離故障機和備用機恢復重新切入雙機系統的健壯性。通常在主機設備和備機設備之間采用心跳信號來相互監測對方的工作狀態,并作為診斷設備故障的一種輔助手段。一旦主機設備和備機設備之間的心跳信號發生故障,則表明有一方設備出現了故障,同時也能初步確定故障設備的原因。因此,在主機設備和備機設備之間建立心跳通信機制,也是提高嵌入式系統安全性的一種有效方法。傳統的雙機熱備系統中雙機之間是通過心跳線互發心跳建立連接通信的。若心跳線發生故障,就會將原有協調的系統分為2個獨立的個體。由于雙機彼此失去聯系,都以為對方發生故障,備用機本能的升為主用機,而主用機由于本身工作正常,繼續保持主用,從而導致“雙主”現象的產生。傳統的解決“雙主”現象的辦法是增加心跳線的數量,但是該辦法的缺點是不僅會增加系統的硬件成本,而且還會占用系統的接口資源,新增加的心跳線還會成為潛在的故障點,降低了系統的可維護性。為了提高雙機熱備系統的可靠性,主機和備機均采用雙網卡工作,雙網通過交換機連接到局域網中,采用一條心跳線進行雙機之間的通信。因此,雙機之間通過心跳線、雙網的狀態3種通道傳遞心跳信號。只要這3種通道有一個能收到對方的心跳,即可認為心跳正常。當出現心跳失效的情況時,分別選取雙網上的一臺設備(主機或者備機)或設備的某個端口作為該通道的遠程檢測點。當某個網絡通道心跳失效時,雙機通過該網絡通道檢查設置的遠程檢測點,若檢測不到則表明故障出現在本機端;若可以檢測到則表明故障出現在對方。為了進一步提高雙機熱備系統的可用性,雙網通道在收到對方心跳時加入時間戳。在心跳無效的情況下,根據心跳時間戳,選擇最后收到心跳的網絡,然后去檢查對應此網絡的遠程檢測點,若可以檢測到,表明對方宕機下線,本機正常,可作為主機運行;否則,標明本機宕機,此時應工作在備機。雙機通信的流程如圖1所示。
4實現主備機同步
雙機熱備系統中主機設備與備機設備必須保持嚴格意義上的同步,它們之間同步性的好壞直接影響到主機設備和備機設備發生切換后雙方數據的一致性。若兩方數據同步性不好,則當一方接管另一方(故障設備)工作時,就會造成數據的不完整性,從而影響整個嵌入式系統的工作流程。因此,主備機的同步是確保整個系統主機設備及其備機設備中程序與數據同步運行和實現雙機無縫切換的基礎。此外,主備機設備在運行過程中的相互監測以及當一方發生故障時的故障診斷工作都對主備機之間的同步性能提出了更高的要求。主備機的同步不僅包括時鐘同步,還包括主備機狀態和數據同步。主備機的時鐘同步是指硬件上的同步,包括雙機時鐘周期和時鐘時序的同步。在主備機上電后,保證主備機使用的是同一外部有源晶振提供的時鐘周期,以此來保障系統的各個模塊完全按照相同的時鐘頻率運行。主備機的狀態和數據同步是指主備機之間需要實時進行通信,其中包括主備機的狀態和接收數據的實時通信。為了讓主備機的任務初始化能夠同步開始,必須對主備機同時上電。當主機任務啟動指令到達的第一時間通知備機啟動任務,使備機同時進入工作模式。在主備機均正常工作的情況下,主備機同時從網絡上接收信息,但只有主機有權限向外部設備發送信息,備機只接收外部信息,處于信息發送靜默狀態。主備機的同步過程如圖2所示。
5實現主備機故障檢測和切換
故障檢測技術是雙機熱備系統進行主機設備和備機設備切換的關鍵環節,通過對設備進行實時準確地狀態監視和檢測,能夠及時地發現并上報設備的故障,并啟動冗余設備繼續完成系統當前的工作任務,是保證了雙機熱備系統可靠性和穩定性的前提和基礎。采用如下3種措施實現主備機故障檢測:①在主備機中配備看門狗定時器。在系統上電后,處理器在正常工作時會每隔固定的時間對看門狗計數器進行清零操作。若主機或者備機出現故障,看門狗計數器值會超過某個閾值,最終會導致看門狗產生復位信號,使處理器復位,通過上述方式可判斷主備機是否出現故障。②在主備機上電后,可對系統進行自檢操作,包括CPU檢測、內存檢測、I/O設備檢測等,可在上電時檢測系統硬件是否工作正常。③在系統運行過程中,主備機之間通過心跳線和雙網的狀態相互監測對方的工作狀態。由于主備機在上電時通過身份識別已明確自身是主機還是備機,因此,如果在系統運行過程中,主機檢測到備機故障,則不進行切換,主機繼續保持工作;如果備機檢測到主機故障,則進行切換,由備機接管主機繼續工作。
6結束語
雙機熱備技術是保證嵌入式實時系統可靠性和穩定性最重要和最關鍵的方法,不僅有效降低了系統出現故障的概率,還大大提高了系統可用性。本文提出的方法具有成本低、易于實現、可靠性高、主備機切換時間短等優點,大大滿足短事務、強實時系統的要求,增強了雙機熱備系統在復雜、惡劣環境下的可維護性。
參考文獻:
[1]肖佳,王古城,楊旭,等.雙機熱備與負載均衡的設計與實現[J].電子設計工程,2015,23(18):176-179.
[2]羅貴舟,王錦杰,楊旭斌,等.一種多策略雙機熱備方法[J].計算機測量與控制,2019,27(3):231-234,239.
作者:劉慕霄 劉憲忠 趙昶宇 單位:海軍裝備部駐北京地區軍事代表局駐天津地區第二軍事代表室 海軍裝備部駐天津地區第二軍事代表室 天津津航計算技術研究所