李華龍 張穎穎
摘要:隨著時代的發展,對于DCS系統的安全性和穩定性要求也越來越高,由于DCS系統的結構復雜繁多、運行環境多樣,為了提升系統的安全可靠性,大部分DCS系統中都為關鍵設備配備了主備冗余機制,當系統中的某個設備被診斷出故障時,為了保證系統的正常運行,可以根據故障情況進行切換或重啟。
關鍵詞:主備冗余;故障診斷;可靠性
中圖分類號:TP391 文獻標識碼:A
文章編號:1009-3044(2019)12-0253-02
開放科學(資源服務)標識碼(OSID):
1概述
在DCS系統中,關鍵設備(如服務器、控制器等)一般都采用主備冗余配置,當一臺服務器出現掉電、關鍵進程崩潰、網絡通訊中斷或手動切換等情況時,可以實現進程重啟或主備切換。本文主要講述一種包含進程PID監控、健康值決策功能的冗余結構設計和實現方法。
2冗余結構設計與實現
本文描述冗余軟件分為三層:頂層為監測層,監測主機主備狀態、網絡狀態和進程狀態;中間層為決策層,根據主機和進程狀態,發布主備切換、進程重啟或無動作等命令;底層為執行層,負責執行主備切換或者進程重啟動作。
本軟件主要由9個進程:主機監測、網絡監測、進程診斷、進程重啟、狀態同步、手動切換、主備切換、決策判斷和守護進程組成。冗余系統的軟件數據流圖如圖2:
2.1主機監測功能
主機監測功能負責在啟動時確定本機的啟動狀態以及在運行時探測對等機是否存在。若本機以主機狀態啟動,主機監測進程將會先探測對等機的工作狀態,若對等機存在且為主機,則將本機工作狀態設置為備機。探測結束后,進入心跳探測階段,監視對等機是否存在,是否存在雙主沖突或雙備沖突。
2.2狀態同步功能
狀態同步功能指主備之間的狀態信息同步,主要包括兩部分內容:發送狀態包,將本機狀態發送給對等機;接收狀態包和狀態強制包,獲知對等機的狀態以及對等機發來的命令,在接收到狀態強制包后返回狀態強制包。
2.3進程診斷功能
冗余管理進程與被管理的應用進程通信,分為N個消息區域,由冗余管理進程維護。應用進程1~N啟動時向管理進程注冊,冗余管理進程為其分配一個消息區域,進程診斷模塊根據應用進程的PID在操作系統中查詢應用進程的狀態,將狀態和健康值寫入屬于本進程的消息區域。決策進程周期性查詢各應用進程的狀態和健康值。
2.4網絡監控功能
服務器為了與其他節點進行通信,均需要與網絡進行連接。冗余服務會實時監控本機的網絡連接狀態,并將其存儲在特定的消息區域中,供決策進程調用,由決策進程根據網絡連接狀態來決定是否進行主備切換。
2.5決策功能
決策制定功能在冗余服務中擔任決策者的角色,每隔一段時間會根據當前主機狀態、對等機狀態、進程健康值、主機命令、雙機監控卡工作狀態、網絡狀態和強制命令進行一次邏輯計算,并發布執行不動作、進程重啟動作、主備切換動作。當進程崩潰或消失、或主機出現故障等情況是,主機的健康值會減少,為決策進程提供參考。
2.6主備切換功能
主備切換過程中狀態的切換包含兩部分,一是主機狀態的切換,二是進程狀態的切換。進程的狀態的切換跟隨著主機狀態的切換,使得在主機狀態改變時,每個應用進程能夠進入相應狀態,進行不同主機狀態下的相關處理。
2.7進程重啟功能
冗余服務的一個重要功能就是重啟故障的被管理應用進程。該功能會循環掃描決策進程發出的執行動作,如果該執行動作是重啟進程,則獲取所有故障進程信息,并重啟故障進程。
2.8守護進程
守護進程監控其余8個冗余管理模塊(主機監測、狀態同步、主備切換、進程診斷、進程重啟、網絡監控、硬冗余、決策制定),是冗余模塊的冗余。同時守護進程也被納入被管理應用進程范圍內。如果冗余管理的8個進程中有進程出現故障,守護進程會重啟該故障進程,如果守護進程出現故障,冗余管理進程也會重啟守護進程。
2.9手動切換
手動切換功能利用狀態強制命令來實現主備狀態的切換或保持,不依賴于進程或者主機的健康值。決策模塊在邏輯判斷中優先根據強制命令決定是否進行主備切換。狀態強制命令有6種:不強制、切為主機、切為備機、保持為主機、保持為備機、清除保持。
3結論
本文提出的冗余結構設計與實現方法,并詳細描述了每個冗余功能以及實現,該冗余系統已經應用在多個實際工程項目中,能夠在主服務器出現斷電、進程崩潰、網絡通訊中斷或者手動切換時,實現進程重啟和主備切換功能,切實提高工業冗余系統的安全行和可靠性,為DCS系統的安全、穩定運行保駕護航。
【通聯編輯:梁書】