共用方式為


操作 SQL Server 的 RHEL 容錯移轉叢集執行個體 (FCI)

適用於:SQL Server - Linux

此文件說明如何使用 Red Hat Enterprise Linux,針對共用磁碟容錯移轉叢集上的 SQL Server 執行下列工作。

  • 手動容錯移轉叢集
  • 監視容錯移轉叢集 SQL Server 服務
  • 新增叢集節點
  • 移除叢集節點
  • 變更 SQL Server 資源監視頻率

架構描述

叢集層是以建置於 Pacemaker 之上的 Red Hat Enterprise Linux (RHEL) HA 附加元件為基礎。 Corosync 和 Pacemaker 協調叢集通訊和資源管理。 SQL Server 執行個體在其中一個節點上為作用中狀態。

下圖說明了使用 SQL Server 的 Linux 叢集中的元件。

Red Hat Enterprise Linux 7 共用磁碟 SQL 叢集。

如需叢集設定、資源代理程式選項和管理的詳細資訊,請造訪 RHEL 參考文件 \(英文\)。

手動容錯移轉叢集

resource move 命令會建立限制式,強制在目標節點上啟動資源。  執行 move 命令之後,執行資源 clear 將會移除限制式,因此可以再次移動資源,或讓資源自動容錯移轉。

sudo pcs resource move <sqlResourceName> <targetNodeName>
sudo pcs resource clear <sqlResourceName>

下列範例會將 mssqlha 資源移至名為 sqlfcivm2 的節點,然後移除限制式,讓資源可以在之後移至不同的節點。

sudo pcs resource move mssqlha sqlfcivm2
sudo pcs resource clear mssqlha

監視容錯移轉叢集 SQL Server 服務

檢視目前的叢集狀態:

sudo pcs status

檢視叢集和資源的即時狀態:

sudo crm_mon

/var/log/cluster/corosync.log 檢視資源代理程式記錄

將節點新增至叢集

  1. 檢查每個節點的 IP 位址。 下列指令碼會顯示您目前節點的 IP 位址。

    ip addr show
    
  2. 新節點需要一個不超過 15 個字元的唯一名稱。 根據預設,在 Red Hat Linux 中,電腦名稱是 localhost.localdomain。 這個預設名稱可能不是唯一的,而且太長。 將電腦名稱稱設定為新的節點。 將電腦名稱新增至 /etc/hosts 來設定電腦名稱。 下列指令碼可讓您使用 vi 編輯 /etc/hosts

    sudo vi /etc/hosts
    

    下列範例顯示 /etc/hosts,以及適用於三個節點 (名稱為 sqlfcivm1sqlfcivm2sqlfcivm3) 的新增項目。

    127.0.0.1      localhost localhost4 localhost4.localdomain4
    ::1            localhost localhost6 localhost6.localdomain6
    10.128.18.128  fcivm1
    10.128.16.77   fcivm2
    10.128.14.26   fcivm3
    

    每個節點上的檔案應該都相同。

  3. 停止新節點上的 SQL Server 服務。

  4. 依照指示將資料庫檔案目錄裝載到共用位置:

    從 NFS 伺服器,安裝 nfs-utils

    sudo yum -y install nfs-utils
    

    在用戶端和 NFS 伺服器上開啟防火牆

    sudo firewall-cmd --permanent --add-service=nfs
    sudo firewall-cmd --permanent --add-service=mountd
    sudo firewall-cmd --permanent --add-service=rpc-bind
    sudo firewall-cmd --reload
    

    編輯 /etc/fstab 檔案以包含裝載命令:

    <IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
    

    執行 mount -a 讓變更生效。

  5. 在新的節點上,建立檔案以儲存 SQL Server 使用者名稱和密碼,以供 Pacemaker 登入使用。 下列命令會建立並填入這個檔案:

    sudo touch /var/opt/mssql/passwd
    sudo echo "<loginName>" >> /var/opt/mssql/secrets/passwd
    sudo echo "<loginPassword>" >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/passwd
    sudo chmod 600 /var/opt/mssql/passwd
    
  6. 在新的節點上,開啟 Pacemaker 防火牆連接埠。 若要使用 firewalld 開啟這些連接埠,請執行下列命令:

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

    如果您使用其他防火牆,其中沒有內建的高可用性設定,您需要開啟下列連接埠,Pacemaker 才能與叢集中的其他節點通訊:

    • TCP:連接埠 2224、3121、21064
    • UDP:連接埠 5405
  7. 在每個節點上安裝 Pacemaker 套件。

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  8. 設定安裝 Pacemaker 和 Corosync 封裝時建立的預設使用者密碼。 使用與現有節點相同的密碼。

    sudo passwd hacluster
    
  9. 啟用並啟動 pcsd 服務和 Pacemaker。 這將會允許新的節點在重新開機後重新加入叢集。 在新的節點上執行下列命令。

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  10. 安裝 SQL Server 的 FCI 資源代理程式。 在新的節點上執行下列命令。

    sudo yum install mssql-server-ha
    
  11. 在叢集中現有的節點上,對新節點進行驗證並將其新增至叢集:

    sudo pcs cluster auth <nodeName3> -u hacluster
    sudo pcs cluster node add <nodeName3>
    

    下列範例會將名為 vm3 的節點新增至叢集。

    sudo pcs cluster auth
    sudo pcs cluster start
    

從叢集中移除節點

若要移除叢集的節點,請執行下列命令:

sudo pcs cluster node remove <nodeName>

變更 sqlservr 資源監視間隔的頻率

sudo pcs resource op monitor interval=<interval>s <sqlResourceName>

下列範例會將 mssql 資源的監視間隔設定為 2 秒:

sudo pcs resource op monitor interval=2s mssqlha

針對適用於 SQL Server 的 Red Hat Enterprise Linux 共用磁碟叢集進行疑難排解

在對叢集進行疑難排解時,可有助於了解三個守護程式如何共同合作來管理叢集資源。

精靈 描述
Corosync 提供叢集節點之間的仲裁成員資格和訊息傳遞。
Pacemaker 位於 Corosync 頂端,並針對資源提供狀態機器。
PCSD 透過 pcs 工具管理 Pacemaker 和 Corosync。

必須執行 PCSD 才能使用 pcs 工具。

目前的叢集狀態

sudo pcs status 會傳回每個節點的叢集、仲裁、節點、資源和背景程式狀態的相關基本資訊。

狀況良好的 Pacemaker 仲裁輸出範例如下:

Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2016  Last change: Wed Oct 31 11:00:00 2016 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1  (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured

Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]

Full list of resources:

mssqlha (ocf::sql:fci): Started sqlvmnode1

PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online

Daemon Status:
corosync: active/disabled
pacemaker: active/enabled

在此範例中,partition with quorum 表示節點的多數仲裁已上線。 如果叢集失去節點的多數仲裁,則 pcs status 會傳回 partition WITHOUT quorum,而且所有資源都會停止。

online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] 會傳回目前參與叢集的所有節點名稱。 如果沒有任何節點參與,則 pcs status 會傳回 OFFLINE: [<nodename>]

PCSD Status 顯示每個節點的叢集狀態。

節點可能處於離線狀態的原因

當節點離線時,請檢查下列項目。

  • 防火牆

    下列連接埠必須在所有節點上開啟,Pacemaker 才能夠進行通訊。

    • **TCP: 2224, 3121, 21064
  • Pacemaker 或 Corosync 服務正在執行

  • 節點通訊

  • 節點名稱對應