SQL Server 2017 on Linux failover cluster設定(下)

上一篇6大步驟已完成1.安裝及設定 Linux 2.安裝及設定 SQL Server 3.設定主機檔案 4.設定共用存放裝置,並移動資料庫檔案

本篇繼續往 5.安裝和設定每個叢集節點上 Pacemaker 6.設定容錯移轉叢集執行個體前進

5.安裝和設定每個叢集節點上 Pacemaker

在主要及次要端建立供Pacemaker登入的帳號及密碼

sudo touch /var/opt/mssql/secrets/passwd
sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd
sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd 
sudo chmod 600 /var/opt/mssql/secrets/passwd

開啟防火牆

sudo firewall-cmd --permanent --add-service=high-availability
sudo firewall-cmd --reload

安裝Pacemaker套件

sudo yum install pacemaker pcs fence-agents-all resource-agents

此時會發現有3個套件無法安裝,請參閱另一篇Red Hat Enterprise Linux 7.3 安装Pacemaker

安裝 Pacemaker 和 Corosync 套件時會建立一個使用者hacluster,此時要設定密碼,且在這兩個節點上使用的密碼要相同

sudo passwd hacluster

啟動pcsc及pacemaker

sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker

安裝FCI資源代理套件

sudo yum install mssql-server-ha

6.設定容錯移轉叢集執行個體

建立cluster

sudo pcs cluster auth **<nodeName1 nodeName2 …>** -u hacluster
sudo pcs cluster setup --name **<clusterName>** **<nodeName1 nodeName2 …>**
sudo pcs cluster start --all

我的範例如下

sudo pcs cluster auth sql2017-1 sql2017-2 -u hacluster
sudo pcs cluster setup --name sql2017cluster sql2017-1 sql2017-2
sudo pcs cluster start --all

此時檢查叢集狀態尚未有任何resource

建立資源

pcs cluster cib cfg
pcs -f cfg resource create mssqlha ocf:mssql:fci 
pcs resource op defaults timeout=60s
pcs -f cfg resource create virtualip ocf:heartbeat:IPaddr2 ip=10.0.0.10
pcs -f cfg resource create fs Filesystem device="10.0.0.6:/mnt/nfs" directory="/var/opt/mssql/data" fstype="nfs4"
pcs -f cfg constraint colocation add virtualip mssqlha
pcs -f cfg constraint colocation add fs mssqlha
pcs cluster cib-push cfg

檢查服務是否正常

pcs status

若檢查resource時發現有stop狀況,有可能是在VM環境中,還要執行以下指令

pcs property set stonith-enabled=false
pcs property set start-failure-is-fatal=false