Linux HA集羣

HA(High Availability,高可用)集羣的主要目的是提高服務的在線率,也就是縮短平均無故障的時間。實際上就是當一個提供服務的服務節點不在線時,有另一個提供相同服務的節點可以繼續提供服務,避免出現單點故障。

HA集羣相關概念

一、相關名詞解釋

1、在線率

在線率是衡量HA集羣的一個重要指標,就算方式如下:

    在線率=平均無故障時間/(平均修復時間 + 平均無故障時間)

所以提高系統的可用性:

    1)、增加平均無故障時間

    2)、縮短平均修復時間 (可以通過冗餘機制實現)

2、資源

這裏的資源指的是 HA 集羣提高服務時所需要的資源。例如:提供mysql服務時,需要的資源有ip地址(訪問數據庫的接口),mysql服務腳本(提供數據庫服務),文件系統(提供數據的存儲位置,可以是本地的文件系統也可以是共享文件系統,例如:nfs等)。

對於不同的 HA 集羣來說所需要的資源也是不同的。

3、資源類型

  • 主資源:primitive/native,只能運行在某一節點

  • 組資源:是多個資源的集合

  • clone:克隆資源,一個資源可以運行於多個節點。包括克隆的份數,每個節點最多運行的克隆份數都要指定

  • master/slave:主從資源,特殊的克隆資源。(drbd)

4、資源切換

FailOver:故障轉移,當節點出現故障時,需要實現資源的轉移。

FailBack:資源恢復,當出現故障的節點重新上線時,是否重新接管資源。

5、資源約束

定義資源與資源之間的粘性和約束。常見的約束有位置約束、排練約束、順序約束。

二、HA 集羣架構

這裏提到的架構是使用軟件的方式來實現高可用,能實現高可用集羣的軟件都應該實現以下幾個方面的內容。

1、Messaging Layer(消息層)

    此層的主要目的是爲了傳遞“心跳”信息。“心跳”信息: (也稱爲狀態信息)是一定大小的廣播、組播或多播數據包。可爲以每個節點配置其向其它節點通報“心跳”信息的頻率,以及其它節點上的進程爲了確認主節點出節點出現了運行等錯誤之前的等待時間。

能實現此功能的軟件有:

  • heartbeat v1

  • heartbeat v2

  • heartbeat v3

  • corosync

  • cman

2、CRM(Cluster Resource Manager集羣資源管理)

所在的HA集羣中的每個節點都運行的,爲高可用集羣提供核心組件,包括資源的定義,屬性。另外,在每個節點上都維護一個CIB(集羣信息庫 XML文檔)和LRM(本地資源管理)組件。對於CIB只有工作在DC(主節點)上的文檔纔是可以修改的。對於LRM,是執行CRM傳遞過來的本地執行某個資源和停止的具體執行人。當某個節點發生故障時,是由DC通過PE(策略引擎)和TE(實施引擎)來決定是否搶奪資源。

實現此層功能的軟件有:

1)、heartbeat v1: 自帶資源管理器haresources,haresources:需要的是配置文件,文件名爲haresources

2)、heartbeat v2: 自帶資源管理器crm,crm:需要在各節點運行crmd。配置接口:命令行:crmsh;GUI:ha-gui

3)、heartbeat v3 = heartbeat + pacemaker + cluster-glue

  pacemaker:CLI: crm(SuSE),pcs;GUI接口:hawk,pacemaker-mgmt

4)、rgmanager(cman作爲Message Layer):會使用到Failover Domial,Node priority這些機制來管理集羣。

    配置接口:CLI: clustat,cman_tool;GUI: Conga(lici + ricci)

3、RA(Resource Agent資源代理)

能夠管理本節點上的屬於集羣的某一資源的啓動、停止和狀態信息的腳本。

常見的資源代理:

LSB:在/etc/init.d/目錄下的所有腳本

OCF(Open Cluster Framework 開源集羣架構):相比LSB來說,更加通用。

hb legcy: /etc/ha.d/haresource.d/下的所有文件

三、資源約束

資源運行的傾向性:(資源轉移傾向性) 
資源粘性:資源傾向於留在當前節點的值 (-oo +oo)      
    -oo的意思是:只有此節點提供服務時,才選擇。      
    +oo 優先選擇此節點。

資源約束:      
位置約束:資源對某一節點運行的傾向性      
     inf -inf      
排列約束:定義資源之間的傾向性      
     inf:      
     -inf:      
順序約束:多個資源運行於同一節點時,啓動和關閉的次序

 


STONITH機制:

普通文件系統:不知道對方的鎖信息(原因是鎖信息所有內核),可能會出現文件錯亂

分佈式鎖管理系統:藉助於Messaging Layer通知其他節點的鎖管理系統,鎖管理系統通知內核。分佈式文件鎖管理系統管理的文件系統叫做分佈式文件系統。

未完待續......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章