前言:尋找寫作靈感?中文期刊網用心挑選的指揮顯示系統雙工管理軟件設計,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:在靶場試驗訓練任務中,指揮顯示系統是靶場指揮控制系統的重要組成部分,有效的支撐試訓任務順利展開。本文針對靶場指控各分系統軟件雙工熱備需求,以QT為開發環境,經過需求分析把不同的功能,諸如雙工狀態、故障監測與切換、故障服務器重入、請求切換、事件記錄等分配給不同的邏輯包進行設計,各邏輯包再合理劃分成多個子單元進行詳細設計與實現。該軟件操作簡捷、功能完善,提升了指揮顯示系統可靠性。
關鍵詞:雙工;節點;心跳;故障檢測
1引言
指揮顯示系統是靶場指揮控制系統的重要組成部分,它擔負著試驗綜合態勢的實時顯示任務,輔助參試人員指揮決策[1]。為了保證系統高可靠性要求,系統中的各服務器均采用雙工熱備份的工作模式。在這種工作模式下,兩臺獨立的服務器通過兩條心跳線路連接起來,在雙工管理軟件的支持下組成互為備份的系統,雙工管理軟件提供雙機狀態實時監測與故障自動切換功能。
2設計思路
雙工熱備技術是利用冗余技術提高系統可靠性的一種方法。在雙工系統中,兩臺服務器配置相同,每一臺都具備單獨完成任務的能力。兩臺服務器同時工作,互為備份。在正常工作情況下,其中一臺服務器為主機,另一臺為副機。主機和副機上的應用程序,接收相同的數據,各自進行相同的處理,主副機得到相同的處理結果,但輸出任務只由主機完成,即由主機向外發送數據包。副機只是作為備份機工作。當雙工系統中的一臺服務器發生故障時,仍能夠繼續完成任務。在副機故障的情況下,主機的處理不受影響。在主機故障的情況下,原副機切換為主機,接替原主機完成任務。發生故障的機器,在排除故障后,可重新加入雙工系統。雙工管理軟件還為每個雙工熱備系統維護了一個虛擬IP地址(以下簡稱虛IP)。虛IP由主機擁有,當實施雙工切換時,虛IP也隨之漂移到新的主機上。
3軟件功能組成
雙工管理軟件由五部分功能模塊組成,包括建立雙工狀態、故障監測與切換、故障服務器重入、請求切換、事件記錄。為滿足國產化操作系統適用要求,本軟件采用Qt語言進行設計,Qt采用C++軟件開發框架[2],可實現“一次編寫,隨處編譯”[3],可支持Linux平臺。雙工管理軟件的主要功能是確保系統的不間斷運行[4],主要過程為:啟動優先原則,雙機中先啟動是主機,后啟動者為備機;互檢互顯,主備機能夠互相檢測連接狀態,并同時發送自身運行狀態,當檢測到本機故障時給予提示信息,以便于主備切換。主備自動切換原則為:當備機在網絡檢測周期內(40ms)未發現主機信息時,自動提升到主機狀態。人工切換原則為:特殊情況時可人工接入進行強行切換,確保設備安全[5]。
4邏輯包的劃分及設計
根據雙工軟件的功能,將其劃分為雙工服務包和雙工管理包,共2個邏輯包。其中雙工服務包、雙工管理包都采用結構化設計方法,雙工管理包采用面向對象設計方法。雙工服務包包括建立雙工狀態包、故障監測與切換包、故障服務器重入包、請求切換包、事件記錄包。建立雙工狀態包:根據配置參數建立初始雙工狀態,即確定哪臺服務器是主機,哪臺是副機;故障監測與切換包:在故障發生時進行雙工切換;故障服務器重入包:故障服務器恢復后,可重新加入雙工熱備系統;請求切換包:業務人員或應用軟件可在需要時進行雙工切換。切換后,原主機變為副機,原副機變為主機;事件記錄包:記錄各種事件到日志文件;雙工管理包:提供圖形界面,顯示雙工信息,允許業務人員對雙工進行配置或者操作。
4.1建立雙工狀態包設計
建立雙工狀態包由初始化單元、雙工狀態建立單元組成。初始化單元:程序的初始化,讀取配置文件,獲取配置參數。雙工狀態建立單元:建立初始的雙工狀態,根據配置信息確定本機的雙工狀態,即確定哪臺服務器是主機,哪臺是副機。編輯獲取雙工狀態(getDupStatus)API調用格式為:lstat表示本機的主/副狀態,值為2時本機為主機,值為1時本機為副機,值為0時表示脫機,其它值未定義。pstat表示它機的主/副狀態,值為2時它機為主機,值為1時它機為副機,值為0時表示它機狀態脫機,其它值未定義。mode表示雙工工作方式,值為0時為人工方式,值為1時為自動方式,其它值未定義。lnet表示本機數據網的狀態,值為1時正常,值為0時故障。lsoft表示本機關鍵軟件的狀態,值為1時正常,值為0時表示異常。pnet表示它機的數據網狀態,值為1時正常,值為0時故障。psoft表示它機的關鍵軟件的狀態,值為1時正常,值為0時故障。API成功完成時,返回值為0。否則返回值為-1。當返回值為-1時,可能的錯誤狀態如下:EFAULT//參數dpsts是一個不可訪問的地址。系統管理員可以通過配置相應的參數來給出希望的初始狀態。例如指定系統初始化時固定由某臺服務器作為主機,另一臺作為副機?;蛘咧付ㄓ呻p工系統中先啟動的服務器作為主機,后啟動的作為副機。
4.2故障監測與切換包設計
故障監測與切換包由服務器故障監測與切換單元、關鍵軟件故障監測單元、網絡連接故障監測與切換單元組成。服務器故障監測與切換單元:在兩個專用連接上監測心跳、兩個專用連接的狀態,確定其是否正常。主機故障時,副機自動切換為主機。在兩個專用連接上監測心跳。主機故障時,副機自動切換為主機。(1)每隔一段時間在兩個專用連接上監測另外一臺服務器的心跳;(2)定期檢查心跳是否超時,如果超時,認為服務器故障;(3)主機故障時,副機自動切換為主機;(4)向應用軟件報告雙工狀態改變;(5)在新的主機上創建虛擬IP(如果配置了虛擬IP),在新的副機上刪除虛擬IP。關鍵軟件故障監測單元:監測關鍵軟件的狀態,是否正常。主機每隔一段時間(如40ms)監視關鍵軟件(包括)的狀態,當狀態異常(如軟件異常退出)時,進行雙工切換。雙工管理軟件還提供另外一種工作模式,即關鍵軟件定期向雙工管理軟件報告狀態(時間長短可設置,暫定為20ms),雙工管理軟件如果在規定的時間內(大于關鍵軟件周期報告狀態時間)沒有收到狀態報告,則認為關鍵軟件故障,向其發送信號,將其“殺死”,并將其重啟。網絡連接故障監測與切換單元:監測節點數據網絡的連接狀態(向交換機發送一個ICMP回送包,交換機收到后返回一個ICMP回送相應包),當主機在一段時間內收不到交換機的應答時,認為連接已故障。主機數據網絡故障時,副機自動切換為主機。等待雙工狀態改變(waitDup)API調用格式:#include<dupserv.h>intwaitDup(void);//描述:應用程序通過該API等待雙工狀態的改變。當主副機狀態改變、雙工工作模式改變時,以及網絡狀態、軟件狀態發生改變時該函數返回。返回值:API成功完成時,返回值為0。否則返回值為-1。執行過程詳見圖1所示。
4.3故障服務器重入包設計
故障服務器重入包由故障服務器重入單元組成。故障服務器重入單元:處理故障節點重新加入雙工。故障服務器恢復后,可重新加入雙工熱備系統;加入后服務器的狀態為副機。
4.4請求切換包設計
請求切換包由故障服務器重入單元組成。雙工管理軟件提供了請求切換的功能,業務人員或應用軟件可在需要時(如系統維護時)進行雙工切換。切換后,原主機變為副機,原副機變為主機。請求雙工切換(reqDupSwitch)API調用格式:#include<dupserv.h>intreqDupSwitch(void);//描述:應用程序可調用此API請求改變雙工狀態。只有在自動方式下才可以由超級用戶在主機上請求切換。如果本機為副機,不允許切換;如果本機為主機,它機為副機,并且它機網絡或軟件異常,不允許切換;成功切換后,原主機變為副機,原副機變為主機。返回值:API成功完成時,返回值為0。當返回值為-1時,可能的錯誤狀態如下:EPERM:非root用戶;ENOTSUP:操作不支持。
4.5事件記錄包設計
事件記錄包由初始化單元、事件記錄單元組成。記錄雙工狀態改變的信息、切換請求和發現的故障信息,例如專用連接故障、雙工狀態改變等。
4.6雙工管理包設計
雙工管理包由雙工狀態顯示單元、雙工切換單元、雙工切換單元、設置雙工模式單元組成。執行過程詳見圖2所示。
5結束語
本文介紹了指揮顯示系統雙工管理軟件的設計,該軟件人性化設計程度高、操作簡捷,便于試驗指揮人員實時高效查看切換軟件雙工工作狀態;軟件設計基于跨平臺應用思想,應用的適用面廣[6]。該軟件的設計實現,有效提高了指揮顯示系統可靠性,該軟件對類似用途領域具有一定啟迪性和推廣價值。
作者:常興華 單位:中國人民解放軍92941部隊