簡介node
高可用集羣,是指以減小服務中斷(如因服務器宕機等引發的服務中斷)時間爲目的的服務器集羣技術。簡單的說,集羣就是一組計算機,它們做爲一個總體向用戶提供一組網絡資源。這些單個的計算機系統就是集羣的節點。python
高可用集羣的出現是爲了減小由計算機硬件和軟件易錯性所帶來的損失。它經過保護用戶的業務程序對外不間斷提供的服務,把因軟件/硬件/人爲形成的故障對業務的影響下降到最小程度。若是某個節點失效,它的備援節點將在幾秒鐘的時間內接管它的職責。所以,對於用戶而言,集羣永遠不會停機。高可用集羣軟件的主要做用就是實現故障檢查和業務切換的自動化。服務器
高可用集羣框架圖:微信
請點擊此處輸入圖片描述
網絡
架構總體說明:架構
隨着互聯網技術的迅速發展不少大中小型公司已經離不開互聯網辦公及其提供服務,例如淘寶、美團等網站宕機幾個小時損失是致命的,不少網站對其高可用性愈來愈強,這就意味着運維人員需作到從硬件和軟件兩方面保證服務器的平均無端障時間減少,才能提升其可用性。框架
corosync是一個集羣管理套件的部分,它在傳遞信息的時候能夠經過一個簡單的配置來定義信息傳遞的方式和協議等,能實現資源間的高可用。目前,corosync功能和特性已經很是完善了,因此pacmaker獨立出來以後一般都將pacmaker和corosync結合來使用,corosync並無通用的資源管理器,所以要藉助pacmaker來實現,pacemaker是做爲corosync的插件來使用的,因此只須要在corosync配置文件中啓動pacemaker插件便可;可是真正啓動corosync而且配置它須要命令行接口進行調用,沒配置pcs那麼這裏咱們只能使用crm工具來對其進行資源的管理。運維
架構詳細說明圖:ssh
請點擊此處輸入圖片描述
ide
corosync集羣常見的組合方式及配置接口:
heartbeat v1 + hasource
heartbeat v2 + crm
heartbeat v3 + pacemaker + crmsh(corosync v1版本時沒有投票系統,corosync v2有投票系統,當系統發生網絡分區、腦裂時則將會將全部的資源轉移至可用的其餘主機之上)
corosync v1 + pacemaker corosync v2 + pacemaker
cman +rgmanager corosync v1 + cman + pacemaker
CRM:集羣資源管理
資源類型:
primitive:基本資源,主資源,僅能運行一個節點
group:組,將組成一個高可用服務所須要的全部資源集合在一塊兒
clone:克隆,同一資源科出現多份,可運行在多個節點
multi-state(master/slave):多狀態類型,是克隆資源的特殊表現,副本間可存在主從的關係
RA:資源代理
資源代理類別:
LSB:位於/etc/rc.d/init.d/*,支持start,stop,restart,reload,status,force-reload
注意:使用LSB資源類型的不能開機自動運行
OCF(open cluster framework):/usr/lib/ocf/resource.d/provider/,相似於LSB的腳本,但僅支持start,stop,status,monitor,meta-data
STONITH:調用stonith設備的功能,systemd:unite ifle,/usr/lib/systemd/system/
注意:必須設置enable,設置爲開機自動啓動
資源約束方式:
位置約束:定義資源對節點的傾向性
排序約束:定義資源彼此可否運行在同一個節點的傾向性
順序約束:多個資源啓動順序的依賴關係
HA集羣經常使用的工做模型:
A/P:兩節點,active/passive,工做於主備模型
A/A:兩節點,active/active,工做於主主模型
N-M:N>M,N個節點,M個服務,假設每一個節點運行一個服務,活動節點數爲N,備用節點數爲N-M
在集羣分裂(split-brain)時須要使用到資源隔離,有兩種隔離級別:
STONITH:節點級別的隔離,經過斷開一個節點的電源或者從新啓動節點
fencing:資源級別的隔離,相似經過向交換機發出隔離信號,特地讓數據沒法經過此接口
當集羣分裂,即分裂後的一個集羣的法定票數小於總票數一半時採起對資源的控制策略
corosync安裝及其配置
安裝:
要求:1.基於主機名之間進行相互解析 2.各個節點之間時間需同步
安裝:yum -y install pacemaker (CentOS7)
corosync配置詳解:corosync的主要配置分爲totem、logging、quorum、nodelist配置段
請點擊此處輸入圖片描述
完成上訴配合後需生成密碼:corosync-kegen -l
將上訴配置文件和祕鑰文件拷貝至另外一臺cluster便可。
啓動服務:
systemctl start corosync
systemctl start pacemaker
安裝crmsh接口工具來管理集羣資源及其配置:yum -y install crmsh-2.1.4-1.1.x86_64.rpm pssh-2.3.1-4.2.x86_64.rpm python-pssh-2.3.1-4.2.x86_64.rpm
corosync+pacemaker+nfs實現高可用案例
此實驗需將另外一臺服務器啓動nfs服務並掛載至兩節點上配置一樣的頁面文件
請點擊此處輸入圖片描述
實驗測試圖:
將節點一手動設置爲standby模式,則資源會自動轉移至節點二
請點擊此處輸入圖片描述
上訴配置可用排列約束和順序約束實現而且能實現節點之間的粘性和啓動順序
請點擊此處輸入圖片描述
定義資源監控配置以下:當httpd服務中止時,將自動重啓httpd,如重啓失敗則將資源轉移至可用的節點
請點擊此處輸入圖片描述
總結:
綜合上訴的配置整體感受corosync+pacemaker的方式實現高可用比lvs略微複雜,corosync一樣可實現對RS的健康狀態檢測,可藉助ldirectory實現自動生成ipvs規則。
做者:小耳朵
來源:http://purify.blog.51cto.com/10572011/1872962
來源:馬哥教育
官網微信:magedu-Linux