
【摘要】針對現有煤礦測控類系統主控雙機熱備方案存在的定制性差、成本高和單點故障等問題,提出了一種以靈活性、低成本和可靠性為設計原則的雙機熱備軟件設計方案,重點闡述了煤礦測控類系統雙機熱備軟件整體架構、心跳檢測模塊、資源管理模塊和數據同步模塊的設計和實現方法。
【關鍵詞】雙機熱備;測控;心跳檢測;數據同步
1.引言
隨著基于工業以太網的測控技術不斷發展,煤炭監測監控類系統正在向網絡化、智能化方面加速發展,在此過程中,安裝在煤礦地面的主控計算機作為整體系統的指揮中心,是系統穩定運行的關鍵環節,需要使用雙機熱備功能,來達到一臺機器發生故障時另一臺機器自動接手業務并負責運行的目的,即主機通過網絡采集設備層數據,一旦主機發生異常,備機將在極短的時間內代替主機,進行實時監測并保存歷史數據;當主機重新啟動,備機會自動將主機丟失的歷史數據拷貝給主機[1]。煤礦企業的信息化建設實踐證明:基于共享存儲設備的簡單雙機熱備方案有很大的局限性,除了可能會形成新的單點故障點(磁盤陣列柜設備)外,硬件成本較高和軟件運行環境要求較高等都是這種解決方案在實際使用中無法避免的問題,不太符合大部分煤礦生產環境的要求。另外,商業化的一些純軟件雙機熱備方案數據同步時間較長,無法滿足測控類系統實時數據存儲的要求。因此,如何構建一個符合煤礦企業環境使用的雙機熱備平臺成為一個急需解決的問題。
筆者從方案的靈活性、低成本和可靠性方面考慮,設計了基于專用數據同步技術的雙機熱備純軟件解決方案。本文將著重闡述該解決方案的整體架構、心跳信號、數據同步等技術的原理與實現方法。
2.煤礦測控類系統雙機熱備軟件整體架構
在計算機的硬件配置方面,本文提出每臺計算機提供2個網卡,一個是心跳專用網卡,使用網線直接連接,用來提供專用的心跳信號傳輸通道,保證心跳信號發送快速和穩定;另一個是業務網卡,連接業務網絡的交換機,用來為監測監控業務數據提供傳輸通道。同時,業務網卡也可以作為備用的心跳網卡。
雙機熱備軟件分為心跳檢測模塊、資源管理模塊[2]和數據同步模塊,其中心跳檢測模塊用于主(A)機、備(B)機互相取得對方的存活狀態信息和其他必要信息,資源管理模塊用于監測和控制納入雙機熱備管轄的業務服務、進程等資源,數據同步模塊采用了為煤礦測控類系統專門開發的專用數據同步組件,如圖1所示。
雙機熱備軟件作為測控類系統軟件的一個重要的組成部分,設計使用接口的方式發布功能,所有相關的配置信息存放在雙機熱備軟件配置文件中。雙機熱備軟件對外提供主機、熱備的狀態信號,提供主機、熱備狀態的切換接口,但不負責對所監視的資源進行干預,所有的切換、清理、啟停等動作由業務軟件自行完成,雙機熱備軟件只提供狀態判別結果作為業務軟件后續執行動作的依據,這是本文提出的方案與其他方案之間的主要區別。這種設計可以提供極大的靈活性和軟件兼容性,給不同的業務軟件提供不同的切換策略定制空間。
3.煤礦測控類系統雙機熱備軟件心跳檢測模塊
煤礦測控類系統對穩定性要求極高,而心跳信號在兩臺計算機之間必須持續傳輸,因此在心跳信號的傳輸渠道上設計了冗余的方式,即:
(1)專用心跳網絡渠道
心跳網絡是心跳信號的專用網段,只能傳輸雙機熱備心跳信息,以保證及時性和可靠性;同時,該網絡應設置為物理獨立的一個網絡,不與辦公網或其他網絡進行連接,因此本文設計為使用網線直連兩臺計算機。
心跳信號使用UDP方式進行傳輸,主機、熱備分別啟動監聽服務,同時分別啟動UDP客戶端把信號信息發送給對方。監聽端口默認為11006,可以在配置文件中設定。
(2)業務網絡渠道
業務網絡中平時傳輸的是業務信息,但也可以作為心跳信號的備用網絡使用,當心跳網絡出現問題時,可以使用業務網絡進行對方存活狀態的判斷。心跳信號傳輸方法不變,監聽端口默認為11007,也可以在配置文件中設定。
在系統正常工作情況下,心跳交互信息由“服務正常嗎”查詢信息和對方計算機的“服務正常”應答信息構成[3]。而且心跳信號傳輸的內容必須精簡,以達到快速響應的目的。同時為了保證不被特殊情況下出現的雜亂信息干擾,需要使用一定格式的協議約束心跳數據,具體設計以一個常規心跳數據幀為例進行說明:
舉例:0xD1 0xE2 0x00 0x02 0x00 0x01 0x8A 0x4C,含義解釋如下:
起始幀頭:選取了2個字節的特定數據0xD1和0xE2來代表心跳幀的起始;
功能編號:0x00代表常規心跳命令;
數據單元長度:0x02代表后續的數據單元字節數;
數據單元:0x00代表發送者當前為備機,0x01代表發送者某項資源為正常狀態;
CRC校驗:0x8A 0x4C代表從起始幀頭到數據單元最后一個字節進行16位CRC校驗計算的結果。
4.煤礦測控類系統雙機熱備軟件資源管理模塊
本文中的資源管理不僅僅提供了如公用IP地址資源的分配管理,還把“資源”的范圍擴大到所有雙機切換策略中可作為判斷依據的資源對象,目前有如下幾種:
(1)對方心跳專用網心跳信號
即通過心跳專用網絡發來的對方的常規心跳信號,針對信號本身是否發來進行監視,如果正常發來常規心跳信號,則認為對方存活,如果超過一定時間沒有收到此信號,則認為對方可能故障。
(2)對方業務網絡心跳信號
即通過業務網絡發來的對方的常規心跳信號,同樣針對信號本身是否發來進行監視;與心跳專用網心跳信號不同的是,業務網絡心跳信號不是一直發送的,當本機收不到對方發來的心跳專用網信號時,主動通過業務網發送常規心跳信號(心跳專用網信號仍然繼續發送)。如果對方業務網絡心跳信號沒有回送常規心跳信號,則認為對方可能已故障或者所有網絡均中斷。
(3)Windows Service類型的業務服務
所有以Windows Service形式存在的業務服務均可加入受監視的資源列表,可以根據服務的各種狀態和持續時間調整切換策略,策略設定在雙機熱備服務的配置文件中。
服務狀態有:已停止、正在停止、正在運行、正在啟動。一般建議已停止、正在停止作為資源故障狀態,正在運行作為資源正常狀態,正在啟動作為資源未知狀態。
(4)Windows 進程資源
普通的exe程序可以作為Windows 進程資源加入受監視資源列表,可以根據進程的各種狀態和持續時間調整切換策略。
進程狀態有:存在、不存在。一般建議不存在作為資源故障狀態,存在作為資源正常狀態。
(5)定制業務資源
不同的業務軟件可能有不同的特殊資源需要監視,定制業務資源可以由業務軟件開發人員進行配置。配置時需要設定資源編號和資源名稱,資源編號用來唯一標識該資源,資源名稱用于在日志、接口輸出等環節描述該資源。定制業務資源的狀態不由雙機熱備軟件判斷,而是由業務軟件通過接口寫入雙機熱備服務,然后參與雙機切換策略的執行。
5.煤礦測控類系統雙機熱備軟件數據同步模塊
在雙機熱備軟件的設計中,數據同步是一個關鍵問題。本文采用的數據同步方式為:主機和備機兩個計算機上的數據庫同時工作,數據分別存放在兩臺計算機上[4]。互相同步的數據有:I/O實時數據、內存實時數據、報警數據、用戶口令數據等[5]。同步方法主要是利用數據庫操作的監視和分析技術,將測控類系統業務軟件數據庫的增刪改等操作信息以事務為單位,通過異步的方式,實時地傳輸到另一臺計算機上,并按原來的順序再執行一遍這些操作,這樣就可以達到主機數據庫和備機數據庫內的數據保持一致的目的。
6.結語
本文提出的雙機熱備軟件在煤礦實際應用中取得了較好的使用效果,特別是給予了測控業務軟件開發人員極大的定制靈活性,可以把煤礦測控類系統軟件中的一些特殊要求很容易的加入到雙機熱備切換策略中,例如串口通訊是否正常等這類定制的雙機監管資源。煤礦測控類系統軟件運行環境復雜,對穩定性要求高,雙機熱備軟件也在不斷的適應新情況,不斷改進設計方案,為煤礦用戶提供更加穩定可靠的測控系統軟件。
參考文獻
[1]張金豪.ES210模塊在煤礦瓦斯監控系統雙機熱備中的應用[J].礦業安全與環保,2011,38(6):63-66.
[2]倪文璽,張亞平.工控計算機雙機鏡像軟件設計[J].現代電子技術,2011,34(5):158-160.
[3]謝長生,胡慶平,譚志虎.Heartbeat-Gear:一種新型的實時心跳監測技術[J].計算機工程與科學,2004,26(5):62-65.
[4]李建榮,郝金庫,張芝艷.基于異構數據庫的雙機熱備策略的設計與實現[J].天津師范大學學報(自然科學版),2012,32(3):51-59.
[5]張金仙,郝英立,張利,等.工控組態軟件雙機熱備的研究與實現[J].計算機測量與控制,2005,13(11):1292-1295.
作者簡介:高文(1981—),男,山西朔州人,工程師,主要研究方向:煤礦信息化軟件、監測監控軟件、云計算等。