一、Corosync和pacemaker的了解:
Corosync是集群管理套件的一部分,他在傳遞信息的時候可以通過一個簡單的配置文件來定義信息傳遞的方式和協議等。也就是說,corosync是Messaging Layer集群信息層軟件,需要pacemaker資源管理器,才能構成一個完整的高可用集群。它也是運行於心跳層的開源軟件。(是集群框架引擎程序)
Pacemaker也就是Cluster Resource Manager(簡稱CRM),,是一個集群資源管理器。它利用群集基礎構建(corosync或heartbeat)提供的消息和成員管理能力來探測並從節點或資源級別的故障中恢復,以實現群集服務的最大可用性。
Pacemaker和corosync,前者用於資源的轉移,后者用於心跳的檢測。結合起來使用,實現對高可用架構的自動管理。心跳檢測使用來檢測服務器是否還在提供服務,若出現服務器異常,就認為它掛掉了,此時pacemaker將會對資源進行轉移。
Crmsh是pacemaker的命令行工具。
二、高可用集群的配置(實現環境:關閉selinux和火牆)
主要實現的是,在server1和server4上安裝corosync和pacemaker,當一個節點服務器出問題,則另一個節點服務器進行服務。
1)在server1和server4中安裝pacemaker和corosync
---> yum install pacemaker corosync -y
2)在server1中配置corosync的配置文件,完成后復制到server4中
---> cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
---> vim /etc/corosync/corosync.conf #修改內容如下
---> scp /etc/corosync/corosync.conf server4:/etc/corosync/corosync.conf
3)在server1和server4中安裝crm軟件(軟件包需要在網上下載)
---> yum install -y crmsh-1.2.6.0.rc2.2.1.x86_64.rpm pssh-2.3.1-4.1.x86_64.rpm
4)開啟服務 (server1和server4均需要啟動)
---> /etc/init.d/corosync start # 當corosync啟動后,pacemaker也會啟動
6)兩個節點均crm_verify -VL 校驗(會出現如下提示信息)
---> crm_verify -LV
# 出現錯誤時,我們可以設置STONITH的值,消除錯誤(Stonith 即shoot the other node in the head使Heartbeat軟件包的一部分, 該組件允許系統自動地復位一個失敗的服務器使用連接到一個健康的服務器的遙遠電源設備。 Stonith設備是一種能夠自動關閉電源來響應軟件命令的設備 )
7)我們在server4中添加策略(ip和apache),在server1中進行監控
# 首先添加vip (完成之后,可以在server1的監控中看到)
# 添加參數,當結點server1壞掉的時候,server4會自動接管(也相當於忽略結點的檢測)
在server1中執行 /etc/init.d/corosync stop后,在server4中監控結果為:
# 添加spache服務在集群中(警告:默認時間和自己設置的監控時間不同,忽略,它會以默認時間為准);但此時cpahce和vip不在同一主機上,需建立資源組,把vip和apache服務添加進去;(注意,添加進去的服務不需要手動啟動,pacamaker會幫我們啟動)
此時,server4中監控的情況為
7)此時,apache的高可用已經配置完成,我們可以進行測試。當運行的節點有問題時,會http會自動切換到另一個節點上。
三、含fence設備的高可用實現
在server1和server4中查看,是否有key文件。
1)在真機中安裝軟件
---> yum search fence-cirtd #查找相關軟件
---> mkdir /etc/cluster # 創建密碼生成目錄
---> cd /etc/cluster
---> systemctl start fence-virtd.service # 啟動服務(要關閉火牆)
2)將真機中生成的密鑰發送給server1和server4
---> scp /etc/cluster/fence_xvm.key server1:/etc/cluster # 若在server1或4中沒有cluster目錄。創建即可
---> scp /etc/cluster/fence_xvm.key server4:/etc/cluster
---> yum install fence-virt-0.2.3-15.el6.x86_64 -y
4)在corosync的策略中添加fence(當節點有問題時,可以自啟動)
crm(live)configure# primitive vmfence stonith:fence_xvm params pamk_host_map="server1:vm1;server4:vm4" op monitor interval=1min
4)在另一端監控情況如下:
5)測試,此時當我們對虛擬機server4使用命令---> echo c> /proc/sysrq-trigger 的時候,它會自動重啟,並添加在可用節點里面。
注意:當添加vmfence時,出現 vmfence_start_0 on server1 'unknown error' (1)錯誤的時候,我們可以進行如下操作:(對之前的數據進行清除)
