HA(High Availability,高可用)集羣的主要目的是提升服務的在線率,也就是縮短平均無端障的時間。實際上就是當一個提供服務的服務節點不在線時,有另外一個提供相同服務的節點能夠繼續提供服務,避免出現單點故障。mysql
在線率是衡量HA集羣的一個重要指標,就算方式以下:sql
在線率=平均無端障時間/(平均修復時間 + 平均無端障時間)數據庫
因此提升系統的可用性:架構
1)、增長平均無端障時間分佈式
2)、縮短平均修復時間 (能夠經過冗餘機制實現)ide
這裏的資源指的是 HA 集羣提升服務時所須要的資源。例如:提供mysql服務時,須要的資源有ip地址(訪問數據庫的接口),mysql服務腳本(提供數據庫服務),文件系統(提供數據的存儲位置,能夠是本地的文件系統也能夠是共享文件系統,例如:nfs等)。ui
對於不一樣的 HA 集羣來講所須要的資源也是不一樣的。spa
主資源:primitive/native,只能運行在某一節點命令行
組資源:是多個資源的集合代理
clone:克隆資源,一個資源能夠運行於多個節點。包括克隆的份數,每一個節點最多運行的克隆份數都要指定
master/slave:主從資源,特殊的克隆資源。(drbd)
FailOver:故障轉移,當節點出現故障時,須要實現資源的轉移。
FailBack:資源恢復,當出現故障的節點從新上線時,是否從新接管資源。
定義資源與資源之間的粘性和約束。常見的約束有位置約束、排練約束、順序約束。
這裏提到的架構是使用軟件的方式來實現高可用,能實現高可用集羣的軟件都應該實現如下幾個方面的內容。
此層的主要目的是爲了傳遞「心跳」信息。「心跳」信息: (也稱爲狀態信息)是必定大小的廣播、組播或多播數據包。可爲以每一個節點配置其向其它節點通報「心跳」信息的頻率,以及其它節點上的進程爲了確認主節點出節點出現了運行等錯誤以前的等待時間。
能實現此功能的軟件有:
heartbeat v1
heartbeat v2
heartbeat v3
corosync
cman
所在的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)
可以管理本節點上的屬於集羣的某一資源的啓動、中止和狀態信息的腳本。
常見的資源代理:
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通知其餘節點的鎖管理系統,鎖管理系統通知內核。分佈式文件鎖管理系統管理的文件系統叫作分佈式文件系統。
未完待續......