集羣組管理原理與系統的實現

學識都 人氣:1.3W

歡迎瀏覽,以下是本站求職網給您推薦一篇關於集羣組管理原理與系統的實現的計算機應用畢業論文


摘要:集羣系統的出現允許用戶把普通商用硬件系統組成集羣,並根據需要隨時在集羣中增加新的硬件,提高了系統的伸縮性和可用性,從而能夠在價格相對低廉的中低端平臺上享用過去只有高端系統才具備的高可伸縮性和高可用性,既提高了系統的性能,同時也降低了成本。因此,集羣成爲了高性能計算領域矚目的焦點。

引言

隨着Internet商業服務的飛速發展,服務系統的可用性程度對服務提供者的商業利益具有重大的影響。同時,由於通過計算機服務系統提供的服務內容和服務範圍都在不斷擴大,計算機服務系統的規模也需不斷擴大,現有的小規模的高可用系統己經難以滿足這樣大規模計算機系統對高可用性支持的需求。因此研究可擴展的高可用集羣系統十分重要。

1、心跳技術

失效監測是所有高可用性的基礎,如何才能做到儘快、儘可能準確地對節點的失效進行監測,這需要有一個好的模型。

心跳模型被廣泛應用於2~8個節點的小規模集羣中。相對於上百個節點的大規模集羣來說,小規模的集羣使用心跳模型監測,對系統造成的負荷較小,並且小規模集羣的網絡帶寬大、速度較快、延遲較小,這樣心跳模型可以作出較爲精確的判斷。當心跳模型應用於兩個服務器的集羣時,兩個服務器採用活動/備份,或者活動/活動集羣模型工作,它們之間使用心跳模型進程相互監測,這個框架應用得相當普遍。但是當集羣的節點數大於2的`時候,心跳模型同樣也能較好的保證準確、迅速地對失效節點作出判斷。

2、集羣組管理原理

(1)節點加入:每一個節點在啓動的時候,會讀取自身的配置文件,配置文件中包括節點ID號,自身IP地址,多播IP地址和端口號,初始化消息和自身節點。接着會週期性地發送

加入請求消息,直到收到其他節點的加入確認消息。

(2)節點的離開/故障:首先需要監控節點的狀態,是通過對方發送的心跳消息來監測的,即如果在三個周期內沒有收到某節點的心跳消息,則認爲它離開了或出現故障了。這裏有兩種情況:一是備份節點的離開/故障,直接將該節點從節點列表中刪除即可。二是主節點的離開/故障,那麼需要重新從剩餘的節點中選擇一個新的主節點,選擇策略很簡單,即從剩餘節點中選擇一個ID號最小的爲新主節點,並刪除離開或出現故障的主節點。

(3)正常運行:由於節點正常運行,它會週期性的發送心跳消息,標識自己的存在,那麼其他節點會週期性的收到該節點的心跳消息,從而維護着一個集羣節點列表。

3、集羣組管理系統的實現

3.1 節點加入前的準備工作

每一個節點都有一個配置文件,存放在./config目錄下。前面定義了節點類型,消息類型,在節點啓動的時候,首先讀取配置文件(主要由函數read_profile( )實現),將配置信息:節點ID號,自身IP地址,多播IP地址和端口號等初始化自身節點和待發送的消息,並將自身節點首先加入到節點列表中。

3.2線程同步的實現

一個進程中的所有線程共享相同的全局內存,這使得線程很容易共享信息,但是這種簡易性也帶來了同步(synchronization)問題。一個進程中的所有線程不僅共享全局變量,而且共享:進程指令、大多數數據、打開的文件(如描述字)、信號處理程序和信號設置、當前工作目錄、用戶ID和組ID。現實中,涉及到多個線程同時運行,比如gm_listener線程,它負責監控接收到的多播消息,並作相應的處理,比如收到加入消息判斷是否在節點列表中,不在則將之加入,併發送加入確認消息,收到加入確認消息,判斷是否在節點列表中,不在則將之加入,收到心跳信息,則將對應節點標誌變量加一。heartbeater線程,通過對狀態的查詢每隔一個心跳週期發送加入請求消息或心跳消息,add_flag線程對標識每個節點的狀態的標誌變量flag作週期性的減一操作,而test線程週期性的對每個列表中的節點檢測標誌變量是否小於0,也即是列表中的節點是否失效或離開。

4、結果測試與分析

爲了跟蹤消息來源,每次都將收到的消息、類型、發送節點的IP地址、角色、狀態都在控制檯顯示出來,以便分析程序中的問題。而且也在每次test線程執行一次檢測後輸出整個節點列表,這樣有助於瞭解哪些節點加入進來了,哪些節點離開或失效了。

實驗的過程主要通過結束集羣管理進程來模擬節點的失效或離開,通過啓動某節點的集羣管理進程來模擬節點的加入,正常運行的進程來模擬節點正常運行。爲此設計了以下幾個測試用例:

(1)第一個啓動的節點的確立。在集羣組中還沒有成員的情況下,第一個啓動的節點自動成爲主節點,後來啓動的節點爲備份節點。實驗過程爲:啓動其中任何一個節點集羣管理程序,接着啓動其他節點集羣管理程序。實驗結果與預期一致。

第一個啓動4號節點,實驗截圖如圖1:

圖 1 第一個啓動的節點默認爲主節點

(2)節點的加入。其實這個過程已經在上述測試用例中達到了目的。新加入的節點按預期的要求加入到集羣組中,並維護着統一的成員列表。

6、總結

在商業和科學領域,集羣管理還涉及到許多其他的內容,因此針對一些具體的應用,還有很多的不足。我覺得可以從以下方面來考慮:

(1)   建立一個對集羣節點信息的詳細監控。比如針對機櫃系統環境、每節點硬件配置情況、每節點電壓、各部件溫度、風扇轉速等硬件狀態、系統CPU、內存、網絡使用情況等,可指定節點,也可以圖形方式對各節點的單項數據進行對比。以便針對具體故障進行處理。

(2) 事件服務。系統管理員應該能夠通過事件服務設置系統對事件的自動響應。

(3)基於網絡的管理:重起,關機;基於串口的管理:開電源、關電源、硬件重監測、控制檯重定向。

(4)實現任務分發,負載均衡,高可用性。

(5)開發友好的管理界面,提高管理的安全性和方便性。

參考文獻:

[1] 胡慶平.新型心跳監測技術的研究與實現.華中科技大學.2004:31~44

[2  萬春.基於linux數據庫集羣系統的研究.華中科技大學.2004

[3] 李英壯,李先毅等.基於linux的集羣管理系統設計與實現[J].大連理工大學學報.2003,12:168~170

集羣組管理原理與系統的實現