目錄
1、引言
2、高可用架構框架
3、資源的約束與隔離
4、高可用模型
5、配置高可用架構的前提
1、引言
一言以蔽之,高可用集羣技術是爲了解決業務因服務器宕機而中斷業務的一種技術,它能保障業務7*24*365不間斷。
在linux開源的世界裏,常見的開源解決方案有如下:
keepalived(vrrp+script)
heartbeat
corosync+pacemaker
要想用好這些開源軟件,不得不先來了解一下一個高可用集羣中的一些基礎知識。
2、高可用架構框架
高可用架構一般可分爲以下幾個層次:
1、Messaging Layer(ML):基礎信息事務層,也叫心跳層,主要功能是心跳信息傳遞,集羣事務信息的傳遞,工作在此層次上的軟件有:heartbeat v1,v2,v3、corosync(openais)、cman(openais)
2、Cluster Resource Manager(CRM):集羣資源管理,主要功能將無HA能力的服務、資源能夠利用messaging layer層上的功能實現高可用功能,起到承上啓下的作用。
工作在此層次上的軟件有:
heartbeat v1自帶資源管理器haresources,此資源管理器的配置接口是一個叫haresources的配置文件
heartbeat v2自帶資源管理器crm,此資源管理器的配置需要在各節點上運行一個mgmtd(監控端口5560/tcp)的進程,配置文件爲cib.xml(cluster information base),配置接口可以是圖形化的程序(hb_gui)或命令接口(crmsh);
heartbeat v3版時項目進行了拆分,分成了三個子項目:heartbeat(提供基礎事務層功能),pacemaker(提供資源管理器),cluster-glue(集羣資源粘合器)。pacemaker的配置接口有:CLI客戶端程序爲crm和pcs,GUI接口有hawk,LCMC,pacemaker-mgmt
cman中的資源管理器是rgmanager(resource group manager),其配置接口有命令行接口:clustat,cman_tool;圖形化接口:Conga
3、LRM:Local Resource Manager(本地資源管理器)
是CRM的子模塊,不具備完整層次上的意義,因CRM不會直接去調用一個資源的啓動、關閉等,它只是去負責去調度RA(Resource Agent)上的腳本資源,
4、Resource Agent(RA):資源代理
4.1、RA有以下的類別:
heartbeat自帶的,v1版本的,傳統的資源代理,在/etc/ha.d/haresources.d/目錄下的腳本
LSB風格的腳本文件,通常在/etc/rc.d/init.d/目錄下
OCF(Open Cluster Framwork,開放集羣框架)專用於集羣環境下的腳本
STONITH:是一種隔離機制,爲防止資源被爭用而有意設計的控制機制,實現控制硬件實現“資源隔離”的腳本,以避免集羣分裂
4.2、Resource的類型:
primitive(native):表示主資源
group:表示組資源,組資源裏包含多個主資源
clone:表示克隆資源
master/slave:表示主從資源
3、資源的約束與隔離
在高可用環境下,默認時高可用集羣會把資源平均的運行在各個節點上,顯然這樣在實際的高可用方案中是不可取的,所以我們要定義這些高可用的資源,讓這些高可用的資源按照一定的規則組織在一起並運行在高可用的集羣的某一個節點上,這樣集羣才能正常的工作,能定義這樣高可用集羣的方法有兩種,一種是把資源定義成一個group資源,另一種方法是定義這些資源間的約束(constraint)關係,約束有以下幾種:
location:位置約束,表示一個資源對一個節點的傾向性,以一個分數(score)的表示,分數爲“inf”表示對一個資源對一個節點有正無窮的傾向性,“-inf”表示一個資源對一個節點有負無窮的傾向性,需要注意的是“inf”+"-inf"=“-inf”
order:順序約束,表示資源啓動及關閉的順序關係,啓動時的順序與關閉時的順序剛好相反
colocation:排列約束,表示各個資源在一起的傾向性有多大,也是可以用score來表示
在集羣分裂(split-brain)時需要使用到資源隔離,有兩種隔離級別:
a、節點級別的隔離,通過斷開一個節點的電源或者重新啓動節點的方式,這種叫STONITH
b、資源級別的隔離,類似通過向交換機發出隔離信號,特意讓數據無法通過此接口的方式,這就叫資源隔離級別的隔離,專業術語叫fencing。
當集羣分裂,即分裂後的一個集羣的法定票數小於總票數一半時採取對資源的控制策略,有以下幾種策略:
a、stopped,關閉、釋放資源
b、ignore,忽略分裂帶來的影響,在兩個節點的高可用方案中一般會配置成此種策略
c、freeze,凍結
d、suicide,自殺
4、高可用模型
HA集羣常用的工作模型:
1、A/P:兩節點,active/passive,工作於主備模型
2、A/A:兩節點,active/active,工作於主主模型
3、N-M:N>M,N個節點,M個服務,假設每個節點運行一個服務,活動節點數爲N,備用節點數爲N-M
5、配置高可用架構的前提
a、各節點時間保持同步(nfp服務器)
b、各節點必須使用名稱互相通信,使用/etc/hosts來解析,集羣中所使用的主機名與“uname -n”顯示相同
c、偶數節點需要ping node設備,或可忽略沒有足夠法定票數時的集羣報錯
d、各節點間互相無密鑰進行通信,這並非必須的