您好,登錄后才能下訂單哦!
Linux上Pacemaker介紹
在Windows Server操作系統上,由Windows Server Failover Cluster(WSFC)提供高可用性、故障檢測和SQL Server AlwaysOn AG的自動故障轉移。WSFC是一個群集資源管理器(CRM),運行在集群上的所有節點上負責維護群集的一個一致性鏡像。群集管理器的目的是提供對運行在群集上的資源的高可用和容錯。
在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版支持。
Pacemaker棧由以下組件組成:
Pacemaker軟件本身,它類似于Windows上的群集服務。
Corosync,一組通訊系統,它類似于Windows上的心跳和仲裁(不要與Heartbeat搞混了,它是功能類似于Corosync的一個Linux程序);它也負責重啟失敗的應用進程。
libQB,一個高性能的日志、跟蹤、進程間通訊和輪詢系統,類似于cluster.log在Windows上如何產生的。
Resource Agents,資源代理,允許Pacemaker管理服務和資源的軟件,像啟動或停止SQL Server AlwaysOn AG資源,像Windows上的群集資源DLL。
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。