鄢 斌
(海軍計算技術研究所 北京 100841)
?
一種基于健康管理的高可用系統設計與實現*
鄢斌
(海軍計算技術研究所北京100841)
摘要在綜合考慮故障檢測智能性、高可用軟件開銷和配置靈活性等多項因素的前提下,提出一種基于健康管理的高可用系統及實現方法,系統包含至少兩個控制節點和計算節點,控制節點通過采集、記錄和分析所有計算節點的健康狀態數據,將存在異常的計算節點上運行的任務遷移至其他健康的計算節點,試驗表明系統的故障提前感知能力和計算節點的可用性得到提升。
關鍵詞高可用; 故障檢測; 健康管理
Design and Implementation of Health-Management-Based High Available System
YAN Bin
(Computer Technology Institute of Navy, Beijing100841)
AbstractConsidering the factors of fault detection intelligence, HA software overhead and configuration flexibility, design and implementation of a health-management-based HA System is proposed. No less than two control nodes and computation nodes are included in the system, and control nodes collect, record and analyze the health data of all the computation nodes. Tasks running on unhealthy computation nodes are migrated to healthy computation nodes. Experiment shows that system fault perception ability and usability of computation nodes have been improved.
Key Wordshigh available, fault detection, health management
Class NumberTP302.1
1引言
可用性是測量計算機系統如何能夠持續地對客戶進行服務的尺度。計算機系統的高可用性(High Availability,HA)廣義地包括一切避免系統服務中斷的技術。
目前,較為熱門的計算機高可用技術主要包括:單機冗余技術[1~3]、雙機冷備份技術[4]、雙機熱備份技術[5~10]和虛擬機高可用容錯技術[11]等。其中,單機冗余技術主要是為了提高計算機自身的高可靠性,對易損部件進行冗余設計(例如:雙網冗余、電源冗余等);雙機冷備份和熱備份技術在當前高可用領域最為普遍,然而雙機冷備份和熱備份大多是針對某一確定服務進程進行設計,即為提高某一服務的高可用性而進行的專門設計,不支持其它應用程序的容錯計算,導致用戶難以利用自己開發的應用軟件通過商用高可用軟件實現高可用;虛擬機高可用容錯技術通過對服務器進行虛擬化后,在虛擬服務器上進行容錯熱備份和高可用冷備份配置,再通過心跳檢測和虛擬機實時遷移技術,來實現計算機系統所有應用的透明容錯計算功能,但是這種方法的高可用軟件本身的開銷較大。
綜上所述,在綜合考慮檢測智能性、高可用軟件開銷和配置靈活性等多項因素的前提下,本文提出一種基于健康管理的高可用系統(以下簡稱高可用系統)設計方法,包括至少兩個控制節點和至少兩個計算節點,將先啟動的控制節點作為主控制節點,其他控制節點作為備控制節點,每個控制節點通過BMC模塊的旁路同時采集所有計算節點的溫度、風扇、電壓、電流等健康狀態數據,并存儲固定時間間隔的歷史值。由主控制節點對健康狀態歷史值進行分析處理,當存在計算節點的健康狀態數據異常,則將其運行的任務遷移到其他健康的計算節點。本文接下來的章節將對高可用系統架構和實現方法進行詳細介紹,在搭建試驗平臺的基礎上,獲取試驗數據并對試驗數據進行了分析,數據分析表明高可用系統具有故障提前感知能力,并且提升了計算節點的高可用性。
2體系架構
本文設計的基于健康管理的高可用系統架構如圖1所示。

圖1 基于健康管理的高可用系統體系架構
基于健康管理的高可用系統包括至少兩個控制節點和至少兩個計算節點,控制節點和計算節點通過高可靠網絡互聯。
高可用系統選擇最早啟動的控制節點作為主控制節點,其他控制節點作為備控制節點,并且配置優先級順序(優先級順序配置可以根據用戶要求,也可根據控制節點的處理能力)。每個控制節點都保存相同的配置文件,包括:主備節點及優先級順序等配置信息。
計算節點之間的主備關系,可選擇配置任一計算節點之外其它的所有計算節點都作為該計算節點的備計算節點,也可根據用戶的要求配置主備關系。計算節點平時都處理各自的任務。
每個控制節點通過BMC模塊的旁路同時采集所有計算節點的溫度、風扇、電壓、電流等健康狀態數據,并存儲固定時間間隔的歷史值。主控制節點對這些健康狀態歷史值進行分析處理。備控制節點不對這些健康狀態歷史值進行分析,只是通過高可靠心跳檢測網絡不斷探測主控制節點和優先級更高的備控制節點。
如果通過心跳檢測網絡,探測到主控制節點出現故障,優先級最高的第一備控制節點接管健康狀態歷史值分析處理任務。
如果通過心跳檢測網絡,探測到備控制節點出現故障,則比該備控制節點更低優先級的備控制節點自動提高一級優先級。主控制節點仍然繼續進行健康狀態歷史值分析處理任務。
3實現方法
基于圖1所示的體系架構,主備控制節點通過BMC模塊的旁路同時采集所有計算節點的溫度、風扇、電壓、電流等健康狀態數據,并存儲固定時間間隔的歷史值。主備控制節點通過高可靠心跳檢測各自狀態,保證控制節點的可用性。由主控制節點對健康狀態歷史值進行分析處理,若發現存在計算節點的健康狀態數據異常,則將其運行的任務遷移到其他健康的計算節點。
3.1主備控制節點工作流程
如圖1所示,高可用系統主備控制節點工作流程的具體實現方法如下。
1) 采集當前時間點所有計算節點的健康狀態數據,進入步驟2);
2) 如果采集的時間點個數小于p,則表示采集的歷史數據不夠,等待時間間隔T后進入步驟1)。如果采集的時間點個數大于或等于p,則進入步驟3);
3) 刪除多余的歷史數據,只保留最近p個時間點的健康狀態數據,此時共p個時間點下n個計算節點的數據組成一個p行n列的健康狀態數據歷史值矩陣。矩陣的行對應每個時間點,矩陣的列對應每個計算節點,進入步驟4);
4) 讀取配置文件,判斷當前控制節點是否為主控制節點。如果不是主控制節點(即備控制節點),進入步驟5);如果是主控制節點,進入步驟7);
5) 通過網絡心跳檢測主控制節點和優先級更高的備控制節點是否故障,如果有控制節點故障則進入步驟6),如果沒有控制節點故障則主備控制節點心跳同步后,進入步驟1);
6) 修改控制節點的優先順序,如果主控制節點故障,優先級最高的第一備控制節點成為主控制節點;如果備控制節點出現故障,則將小于故障備控制節點優先級的備控制節點的優先級提升一級??刂乒濣c優先順序修改完畢后,進入步驟4);
7) 對健康狀態數據進行分析和處理,具體實現方法在3.2節中介紹。

圖2 主備控制節點工作流程
3.2健康狀態數據分析處理
如圖3所示,由主控制節點對健康狀態歷史值進行分析和處理,當存在計算節點的健康狀態數據異常,則將其運行的任務遷移到其他健康的計算節點,具體實現方法如下。

圖3 健康狀態數據分析處理工作流程
1) 對健康狀態數據歷史值矩陣進行逐列分析,每列數據對應一個計算節點,進入步驟2);
2) 還有計算節點沒有分析完畢,進入步驟3);如果所有計算節點分析完畢,則當前時間點的健康狀態數據分析已經完成,進入步驟7);
3) 統計當前列超過健康狀態參考范圍的時間點次數,統計當前列低于健康狀態參考范圍的時間點次數,進入步驟4);
4) 如果超過健康狀態參考范圍的時間點次數小于k1,且低于健康狀態參考范圍的時間點次數小于k2,則仍然判定該計算節點為健康狀態,進入步驟5);如果超過健康狀態參考范圍的時間點次數大于等于k1,或者低于健康狀態參考范圍的時間點次數大于等于k2,則表示該計算節點多次超過或低于健康狀態參考范圍,且趨于穩定,判定該計算節點為非健康狀態,進入步驟6);
5) 將當前計算節點的非健康標志值置為0,進入步驟1);
6) 取超過健康狀態參考范圍的時間點次數和低于健康狀態參考范圍的時間點次數的最大值,作為該計算節點的非健康標志值,進入步驟1);
7) 分析所有計算節點的非健康標志值,如果不存在非0值的計算節點,則表示所有計算節點都是健康的,如果存在非0值的計算節點,則表示存在非健康計算節點,進入步驟8);
8) 對非健康計算節點的處理策略有兩種,其中,策略1包括提示告警、自動遷移任務、告警同時自動遷移任務等三個操作;策略2包括提示告警、自動關機、告警同時自動關機等三個操作。根據計算節點上運行任務的情況,采用不同的策略對非健康計算節點進行如下操作。
策略1:若非健康計算節點存在正在運行的任務,則主控制節點按照策略1執行操作;
策略2:若非健康計算節點不存在正在運行的任務,則主控制節點按照策略2執行操作。
需要說明的是,健康狀態數據分析處理中的參數說明如表1所示。

表1 健康狀態數據分析參數說明
4實驗結果與分析
根據基于健康管理的高可用系統設計搭建原型系統,該系統包含:兩個控制節點和四個計算節點。其中,控制節點采用Intel Core i7 4790 3.6GHz和2G內存的物理機作為試驗對象,并且安裝中標麒麟3.2.4操作系統;計算節點采用Intel Xeon CPU-2650 v2 2.60GHz八核CPU和16G內存的物理機作為試驗對象,安裝Xen 4.2.2虛擬機管理器,并且其上分別建立兩個Intel Xeon CPU-2650 v2 2.60GHz雙核CPU和2G內存的虛擬機作為試驗對象,虛擬機操作系統為中標麒麟2.6.32或Windows Server 2008 R2。
為了說明的簡潔性,試驗以CPU溫度為例對計算節點的健康狀態進行采樣和監測,取歷史采集時間點個數p為5,健康參考范圍為10℃~80℃,k1=k2=4,獲取的健康狀態數據歷史值矩陣如表2所示。

表2 健康狀態數據歷史值矩陣(單位:℃)
從表2中可以看出,計算節點2的CPU溫度有五個時間點超過健康參考范圍,并且k1<5,屬CPU溫度超過健康狀態范圍。溫度異常的原因是因為虛擬機內部負載過重導致,因此系統將計算節點2上運行的虛擬機遷移至計算節點1,以此降低計算節點2的CPU溫度和工作負載,避免計算節點2的CPU出現趨勢性損耗故障。
5結語
本文設計并實現了一種基于健康的高可用系統,相比宕機時自動觸發遷移任務或手動進行任務遷移,健康狀態數據檢測更加科學和靈活,并且在計算節點出現趨勢性損耗故障前在健康狀態數據上呈現提前反應,因此該系統的故障提前感知能力得到提高;控制節點通過計算節點的BMC模塊的旁路獲取健康狀態數據,不占用計算節點的CPU、內存、網絡等資源,因此相比熱備份、冷備份、虛擬機容錯等實現高可用方法,該系統對計算節點本身的性能影響更小;任一計算節點之外其它的所有計算節點都可配置成該計算節點的備計算節點,因此計算節點的高可用性得到了提高。但是對于突然斷電等人為故障,系統缺乏故障感知能力,下一步的工作將考慮將熱備份容錯的機制融入該系統中。
參 考 文 獻
[1] 鄒娟.Windows下雙網卡冗余熱備的設計與實現[D].北京:中國艦船研究院,2012:1-10.
[2] 田煒,劉利強,袁贛南.VxWorks環境下雙網卡冗余備份技術的實現[J].自動化技術與應用,2003(7):32-34.
[3] 翟玉杰.并聯冗余通信電源系統可靠性的研究[D].大連:大連海事大學,2009:5-20.
[4] 樓智翔,張吉.雙機冷備計算機信號切換的設計與實現[J].電子技術,2011(2):20-12.
[5] 劉曉潔,黃永佳.基于Linux的雙機熱備系統的實現技術[J].計算機應用研究,2007(4):255-257.
[6] 胡兵全.基于Windows的雙機熱備系統的設計與實現[D].武漢:華中科技大學,2004:3-18.
[7] 王秀娟.調度集中系統中雙機熱備機制的實現[J].北京交通大學學報,2009(2):26-29.
[8] 蔣濤.一種面向客戶端的雙機熱備機制的研究與實現[D].北京:北京交通大學,2011:15-30.
[9] 閆劍平,汪希時.兩種方式雙機熱備結構的可靠性和安全性分析[J].鐵道學報,2000(3):124-127.
[10] 曹明濤.基于VxWorks的嵌入式控制器的雙機熱備系統應用[D].南京:南京郵電大學,2012:5-19.
[11] 任振芳.基于Xen虛擬機的雙機熱備可用性研究[D].鄭州:鄭州大學,2012:17-23.
中圖分類號TP302.1
DOI:10.3969/j.issn.1672-9730.2016.03.025
作者簡介:鄢斌,女,高級工程師,研究方向:信息安全。
收稿日期:2015年9月11日,修回日期:2015年10月27日