Linux上Pacemaker介紹html
在Windows Server操做系統上,由Windows Server Failover Cluster(WSFC)提供高可用性、故障檢測和SQL Server AlwaysOn AG的自動故障轉移。WSFC是一個羣集資源管理器(CRM),運行在集羣上的全部節點上負責維護羣集的一個一致性鏡像。羣集管理器的目的是提供對運行在羣集上的資源的高可用和容錯。node
在Linux操做系統上,實際上這個集羣資源管理器是開源的軟件Pacemaker。它主要由ClusterLabs組織提供社區貢獻,Red Hat和SUSE來驅動合做開發。Pacemaker在大多數Linux發佈上都是可用的,SQL Server AlwaysOn AG只在當前的Red Hat Enterprise Linux 7.3/7.4版、SUSE Linux Enterprise Server 12 SP2版和Ubuntu 16.04版支持。linux
Pacemaker棧由如下組件組成:git
Pacemaker軟件自己,它相似於Windows上的羣集服務。github
Corosync,一組通信系統,它相似於Windows上的心跳和仲裁(不要與Heartbeat搞混了,它是功能相似於Corosync的一個Linux程序);它也負責重啓失敗的應用進程。bash
libQB,一個高性能的日誌、跟蹤、進程間通信和輪詢系統,相似於cluster.log在Windows上如何產生的。網絡
Resource Agents,資源代理,容許Pacemaker管理服務和資源的軟件,像啓動或中止SQL Server AlwaysOn AG資源,像Windows上的羣集資源DLL。ide
Fence Agents,隔離代理,容許Pacemaker隔離和阻止行爲異常的節點影響羣集可用性。工具
在全部節點上安裝Pacemaker包性能
sudo yum install pacemaker pcs fence-agents-all resource-agents
查看安裝的包,它們與不一樣的組件組成了Pacemaker棧:
pcs,即Pacemaker Configuration System,Pacemaker和Corosync配置工具
fence-agents-all,全部支持的隔離代理的一個集合
resource-agents,全部符合Open Cluster Framework(OCF)規範的資源代理的一個倉庫。
爲安裝 Pacemaker 和 Corosync 包時建立的默認用戶設置密碼
在全部節點上使用相同的密碼。
sudo passwd hacluster
啓用並啓動pcsd服務和Pacemaker
能在重啓後容許節點從新加入羣集。在全部節點上運行如下命令:
sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemaker
建立羣集
首先爲了防止有Cluster的殘餘配置文件影響後期搭建,能夠先執行以下命令刪除已經存在的Cluster:
sudo pcs cluster destroy # On all nodes sudo systemctl enable pacemaker
而後建立並配置羣集:
sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster> sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3> sudo pcs cluster start --all sudo pcs cluster enable --all
Pacemaker配置後,使用pcs來與羣集交互。在羣集中的一個節點上執行全部命令。
配置隔離
Pacemaker羣集供應商須要啓用STONITH,並對支持的羣集安裝配置隔離設備。當羣集資源管理器沒法肯定節點或者節點上資源的狀態時,隔離將羣集再次帶到一個已知狀態。
資源級別的隔離,經過配置資源,確保當發生中斷時沒有數據損壞。例如,當通訊鏈路損壞時,你試用資源級別的隔離來標記一個節點上的磁盤爲過期。
節點級別的隔離確保一個節點不運行任何資源。經過重置該節點實現。Pacemaker支持多種隔離設備,依賴於你的環境。你可使用智能電源分發單元(PDU)、網絡交換機、HP iLO設備或者像VMWare STONITH代理的插件。目前,還不支持Hyper-V和微軟Azure的STONITH代理。
注意:禁用STONITH僅出於測試目的。若是計劃在生產環境中使用Pacemaker,則應根據環境計劃STONITH實現,並使其處於啓用狀態。
生產部署隔離,參考官方文檔:Red Hat與Pacemaker的高可用性外接程序:隔離
因爲節點級別隔離配置很大程度取決於你的環境,在測試環境,用如下腳本能夠禁用節點級別的隔離:
sudo pcs property set stonith-enabled=false
配置羣集屬性cluster-recheck-interval
Cluster-recheck-interval表示檢查羣集資源參數、約束和其餘羣集選項中的更改的輪詢間隔。若是副本出現故障,羣集嘗試在必定的時間間隔內重啓副本,該間隔由failure-timeout值和cluster-recheck-interval值肯定。例如,若是failure-timeout設置爲60秒,cluster-recheck-interval設置爲120秒,重啓嘗試間隔大於60秒而且小於120秒。官方推薦設置failure-timeout爲60秒而且cluster-recheck-interval設置爲大於60秒。Cluster-recheck-interval不推薦設置爲更小的值。如下腳本更新該屬性值爲2分鐘:
sudo pcs property set cluster-recheck-interval=2min
配置羣集屬性start-failure-is-fatal
全部的包含RHEL 7.3和7.4的發佈,使用最新的可用Pacemaker包1.1.18-11.el7介紹了羣集配置start-failure-is-fatal爲false時的行爲改變。它影響了故障轉移工做流。若是主副本發生服務中斷,羣集應故障轉移到其中一個可用的輔助副本。相反,用戶會注意到該羣集會一直嘗試啓動失敗的主副本。若是該主副本永遠不會處於聯機狀態(因爲永久的中斷),羣集永遠不會故障轉移到另外一個可用的輔助副本。由於這個改變,以前推薦的對start-failure-is-fatal的推薦配置不在有效,而且該配置須要恢復回它的默認值true。
sudo pcs property set start-failure-is-fatal=true
此外,AG資源須要更新以包含failover-timeout屬性。
使用以下腳本更新ag1資源的failover-timeout屬性爲60s:
pcs resource update ag1 meta failure-timeout=60s