SQL Server 2017 AlwaysOn on Linux 配置和維護(9)

2.3.3 配置羣集資源管理器Pacemaker


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
相關文章
相關標籤/搜索