在 Azure VM 上使用 SQL Server 的 Windows Server 容錯移轉叢集

適用于:Azure VM 上的SQL Server

本文說明在 Azure VM 上搭配 SQL Server 使用 Windows Server 容錯移轉叢集功能的差異,以提供高可用性和災害復原 (HADR),例如 Always On 可用性群組 (AG),或容錯移轉叢集執行個體 (FCI)。

若要深入了解 Windows 功能本身,請參閱 Windows Server 容錯移轉叢集文件

概觀

Windows 上的 SQL Server 高可用性解決方案,例如 Always On 可用性群組 (AG) 或容錯移轉叢集執行個體 (FCI) 都依賴基礎 Windows Server 容錯移轉叢集 (WSFC) 服務。

叢集服務會監視網路連線和叢集中節點的健康情況。 這項監視是指 SQL Server 在可用性群組或容錯移轉叢集執行個體功能中所做的健康情況檢查。 如果叢集服務無法連線到節點,或叢集中的 AG 或 FCI 角色變成狀況不良,則叢集服務會起始適當的復原動作,以在叢集中的相同或另一個節點上,復原應用程式和服務,並使其恢復上線。

叢集狀況監控

為了提供高可用性,叢集必須確保組成叢集解決方案之不同元件的健康情況。 叢集服務會根據一些系統和網路參數監視叢集的健康情況,以偵測和回應失敗。

設定用來宣告失敗的臨界值是很重要的,因為這可讓您在立即回應失敗時達成平衡,並避免錯誤發生。

有兩種監視策略:

監視 Description
主動 提供硬碟失敗的快速失敗偵測和復原,以提供最高等級的可用性。 叢集服務和 SQL Server 對暫時性失敗的容許程度較低,而且在某些情況下,可能會在發生暫時性中斷時,提前容錯移轉資源。 一旦偵測到失敗,接下來的修正動作可能需要額外的時間。
寬鬆 針對短暫的暫時性網路問題提供更大的容錯,以提供更多的容許失敗偵測。 避免暫時性失敗,但也會引進延遲偵測真正失敗的風險。

在雲端中的叢集環境中進行積極的設定可能會導致提前的失敗和較長的中斷,因此建議對 Azure VM 上的容錯移轉叢集使用寬鬆的監視策略。 若要調整閾值設定,請參閱群集最佳做法以取得詳細資料。

叢集活動訊號

影響叢集核心訊號以及節點之間健康情況偵測的主要設定:

設定 Description
延遲 這會定義在節點之間傳送叢集活動訊號的頻率。 延遲是傳送下一個活動訊號之前的秒數。 在相同的叢集中,在相同子網路上的節點與位於不同子網路上的節點之間,可能會有不同的延遲設定。
臨界值 閾值是在叢集採取復原動作之前可能遺漏的活動訊號數目。 在相同的叢集中,在相同子網路上的節點與位於不同子網路上的節點之間,可能會有不同的閾值設定。

針對雲端環境,這些設定的預設值可能會太低,而且可能會因為暫時性的網路問題而造成不必要的失敗。 若要提高容錯程度,請針對 Azure VM 中的容錯移轉叢集使用寬鬆閾值設定。 如需詳細資訊,請參閱叢集最佳做法

Quorum

雖然雙節點叢集在沒有仲裁資源的情況下運作,但客戶必須使用仲裁資源,才能取得生產支援。 叢集驗證不會傳遞沒有仲裁資源的任何叢集。

技術上來說,有三個節點的叢集在沒有仲裁資源的情況下,可以承受單一節點遺失 (減少至兩個節點)。 但在叢集減少至兩個節點之後,如果發生節點遺失或節點間通訊失敗,叢集資源就會有離線的風險,以防止核心分裂情節。 設定仲裁資源將允許叢集資源在線上只有一個節點的情況下保持連線。

磁碟見證是最有彈性的仲裁選項,但若要在 Azure VM 上的 SQL Server 上使用磁碟見證,您必須使用 Azure 共用磁碟,以對高可用性解決方案施加一些限制。 因此,當您使用 Azure 共用磁碟設定容錯移轉叢集執行個體時,請使用磁碟見證,否則請盡可能使用雲端見證。

下表列出 Azure VM 上 SQL Server 可用的仲裁選項:

雲端見證 磁碟見證 檔案共用見證
支援的 OS Windows Server 2016+ 全部 全部
描述 雲端見證是一種容錯移轉叢集仲裁見證類型,其使用 Microsoft Azure 提供叢集仲裁投票功能。 預設大小約為 1 MB,而且只包含時間戳記。 雲端見證適用於多個網站、多個區域 (zone) 和多個區域 (region) 中的部署。 盡可能使用雲端見證,除非您的容錯移轉叢集解決方案具有共用的儲存體。 磁碟見證是叢集可用儲存體群組中的小型叢集磁碟。 此磁碟具有高可用性,而且可以在節點之間進行容錯移轉。 其包含叢集資料庫的複本,預設大小小於 1 GB。 磁碟見證是慣用的仲裁選項,且適用於使用 Azure 共用磁碟 (或任何共用磁碟解決方案,例如共用 SCSI、iSCSI 或光纖通道 SAN) 的任何叢集。 叢集共用磁碟區不能用來做為磁碟見證。 將 Azure 共用磁碟設定為磁碟見證。 檔案共用見證是一種 SMB 檔案共用,通常設定於執行 Windows Server 的檔案伺服器上。 其會在 witness.log 檔案中維護叢集資訊,但不會儲存叢集資料庫的複本。 在 Azure 中,您可以在相同虛擬網路內的個別虛擬機器上設定檔案共用。 如果您的環境中無法使用磁碟見證或雲端見證,請使用檔案共用見證。

若要開始使用,請參閱設定叢集仲裁

虛擬網路名稱 (VNN)

若要比對連線至可用性群組接聽程式或容錯移轉叢集執行個體的內部部署體驗,請將 SQL Server VM 部署至相同虛擬網路中的多個子網路。 擁有多個子網路,就不需要額外依賴 Azure Load Balancer,來將流量路由至 HADR 解決方案。 若要深入了解,請參閱多重子網路 AG多重子網路 FCI

在傳統的內部部署環境中,叢集資源 (例如容錯移轉叢集執行個體或 Always On 可用性群組) 會依賴虛擬網路名稱,將流量路由至適當的目標,也就是容錯移轉叢集執行個體或是 Always On 可用性群組的接聽程式。 虛擬名稱會繫結 DNS 中的 IP 位址,而用戶端可以使用虛擬名稱或 IP 位址來連線到其高可用性目標,不論目前有哪些節點該擁有資源。 VNN 是叢集管理的網路名稱和位址,而叢集服務會在容錯移轉事件期間,將網路位址從節點移至節點。 在失敗期間,會在原始主要複本上使位址離線,並在新的主要複本上上線。

在單一子網路中的 Azure 虛擬機器上,需要額外的元件,才能將來自用戶端的流量路由至叢集資源 (容錯移轉叢集執行個體,或是可用性群組的接聽程式) 的虛擬網路名稱。 在 Azure 中,負載平衡器會保存叢集 SQL Server 資源所依賴的 VNN IP 位址,而且必須將流量路由至適當的高可用性目標。 負載平衡器也會偵測到具有網路元件的失敗,並將位址移至新的主機。

負載平衡器會散發抵達前端的輸入流量,然後將該流量路由至由後端集區所定義的執行個體。 您可以使用負載平衡規則和健全狀態探查來設定流量流程。 使用 SQL Server FCI 時,後端集區執行個體是執行 SQL Server 的 Azure 虛擬機器,而使用可用性群組時,後端集區是接聽程式。 使用負載平衡器時,會有輕微的容錯移轉延遲,因為健全狀態探查預設會每隔 10 秒執行一次運作檢查。

若要開始使用,請了解如何為容錯移轉叢集執行個體可用性群組設定 Azure Load Balancer。

支援的 OS:全部
支援的 SQL 版本:全部
支援的 HADR 解決方案:容錯移轉叢集執行個體和可用性群組

設定 VNN 可能會很麻煩,其是額外的失敗來源,可能會導致失敗偵測的延遲,在管理其他資源會有相關負荷和成本。 為了解決其中一些限制,SQL Server 引進了分散式網路名稱功能的支援。

分散式網路名稱 (DNN)

若要比對連線至可用性群組接聽程式或容錯移轉叢集執行個體的內部部署體驗,請將 SQL Server VM 部署至相同虛擬網路中的多個子網路。 擁有多個子網路,就不需要額外依賴 DNN,來將流量路由至 HADR 解決方案。 若要深入了解,請參閱多重子網路 AG多重子網路 FCI

針對部署到單一子網路的 SQL Server VM,分散式網路名稱功能提供了另一種方式,讓 SQL Server 用戶端連線到 SQL Server 容錯移轉叢集執行個體或可用性群組接聽程式,而不需使用負載平衡器。 從 Windows Server 2016 和更新版本的 SQL Server 2016 SP3SQL Server 2017 CU25SQL Server 2019 CU8 開始,將提供 DNN 功能。

建立 DNN 資源時,叢集會將 DNS 名稱繫結至叢集中所有節點的 IP 位址。 用戶端會嘗試連線到此清單中的每個 IP 位址,以找出要連接的資源。 您可以藉由在連接字串中指定 MultiSubnetFailover=True 來加速此程序。 這項設定會指示提供者以平行方式嘗試所有 IP 位址,讓用戶端可以立即連接到 FCI 或接聽程式。

在可能的情況下,建議您在負載平衡器上使用分散式網路名稱,原因是:

  • 端對端解決方案更強大,因為您不再需要維護負載平衡器資源。
  • 排除負載平衡器探查可將容錯移轉持續時間降至最低。
  • DNN 可透過 Azure VM 上的 SQL Server,簡化容錯移轉叢集執行個體或可用性群組接聽程式的佈建和管理。

在使用 DNN 時,多數 SQL Server 功能都會以明確的方式與 FCI 和可用性群組搭配運作,但特定功能可能需要特別考量。

支援的 OS:Windows Server 2016 及更新版本
支援的 SQL 版本:SQL Server 2019 CU2 (FCI) 和 SQL Server 2019 CU8 (AG)
支援的 HADR 解決方案:容錯移轉叢集執行個體和可用性群組

若要開始使用,請了解如何為容錯移轉叢集執行個體可用性群組設定分散式網路名稱資源。

搭配其他 SQL Server 功能使用 DNN 時,還有其他考慮。 若要深入了解,請參閱 FCI 和 DNN 互通性以及 AG 和 DNN 互通性

復原動作

當偵測到失敗時,叢集服務會採取矯正措施。 這可能會重新啟動現有節點上的資源,或將資源容錯移轉至另一個節點。 一旦起始矯正措施之後,需要一些時間才能完成。

例如,重新啟動的可用性群組會依下列順序上線:

  1. 接聽程式 IP 已上線
  2. 接聽程式網路名稱已上線
  3. 可用性群組已上線
  4. 個別資料庫會經歷復原,視許多因素而定 (例如重做記錄的長度),這可能需要一些時間。 只有在資料庫完全復原之後,接聽程式才會路由連接。 若要深入了解,請參閱預估容錯移轉時間 (RTO)

由於復原可能需要一些時間,因此將積極監視設定為在 20 秒內偵測失敗,可能會在發生暫時性事件 (例如記憶體保留的 AZURE VM 維護) 時導致中斷。 將監視設定為較寬鬆的 40 秒值有助於避免服務中斷。

若要調整閾值設定,請參閱群集最佳做法以取得詳細資料。

節點位置

Azure 中虛擬機器上 Windows 叢集中的節點,可能會在相同的 Azure 區域內進行實體分隔,或可位於不同的區域。 距離可能會導致網路延遲,就像在您自己的設施中,將叢集節點散佈在位置之間一樣。 在雲端環境中,差別在於區域內您可能不知道的節點之間的距離。 此外,還有一些其他因素,例如實體和虛擬元件、躍點數目等,也可能導致延遲增加。 如果節點之間的延遲是個問題,請考慮將叢集的節點放在鄰近放置群組內,以保證網路鄰近。

資源限制

當您設定 Azure VM 時,會決定 CPU、記憶體和 IO 的計算資源限制。 需要比購買的 Azure VM 更多資源的工作負載,或磁碟限制可能會導致 VM 效能問題。 效能降低可能會導致叢集服務或 SQL Server 高可用性功能的健康情況檢查失敗。 資源瓶頸可能會讓節點或資源對叢集或 SQL Server 出現關閉。

大量 SQL IO 作業或維護作業 (例如備份、索引或統計資料維護) 可能會導致 VM 或磁碟達到 IOPSMBPS 的輸送量限制,這可能會使 SQL Server 無法回應 IsAlive/LooksAlive檢查。

如果您的 SQL Server 遇到非預期的容錯移轉,請檢查以確定您已遵循所有效能最佳做法,並監視伺服器的磁碟或 VM 等級上限。

Azure 平台維護

與任何其他雲端服務類似,Azure 會定期更新其平台來提升虛擬機器之主機基礎結構的可靠性、效能及安全性。 這些更新的目的涵蓋修補主控環境中的軟體元件,以至升級網路元件或將硬體解除委任。

大部分的平台更新不會影響客戶 VM。 當更新會有影響時,Azure 會選擇對客戶 VM 影響最少的更新機制。 大部分會有影響的維護都會將 VM 暫停不到 10 秒。 在某些情況下,Azure 會使用記憶體保留維護機制。 這些機制會將 VM 暫停最多 30 秒,並將記憶體保留在 RAM 中。 然後 VM 會繼續執行,且其時鐘會自動同步。

記憶體保留維護適用於超過 90% 的 Azure VM。 但不適用於 G、M、N 和 H 系列。 Azure 越來越常使用即時移轉技術,並改進了記憶體保留維護機制以縮短暫停時間。 將 VM 即時移轉至不同主機時,有些敏感性工作負載可能會在幾分鐘內出現些微的效能降低,而導致 VM 暫停。

平台維護期間的資源瓶頸可能會讓 AG 或 FCI 對叢集服務出現關閉。 若要深入了解,請參閱本文的資源限制一節。

如果您使用積極的叢集監視,擴充的 VM 暫停可能會觸發容錯移轉。 容錯移轉通常會導致比維護暫停更長的停機時間,因此建議使用寬鬆的監視,以避免在 VM 暫停進行維護時觸發容錯移轉。 如需在 Azure VM 中設定叢集閾值的詳細資訊,請參閱叢集最佳做法

限制

當您在 Azure 虛擬機器上使用 FCI 或可用性群組和 SQL Server 時,請考慮下列限制。

MSDTC

Azure 虛擬機器支援在儲存體位於叢集共用磁碟區 (CSV) 和 Azure Standard Load Balancer 上的 Windows Server 2019 上使用 Microsoft 分散式交易協調器 (MSDTC),也支援在使用 Azure 共用磁碟的 SQL Server VM 上使用 MSDTC。

在 Azure 虛擬機器上,具有叢集共用磁碟區的 Windows Server 2016 或更早版本不支援 MSDTC,因為:

  • 叢集化的 MSDTC 資源無法設為使用共用儲存體。 若在 Windows Server 2016 上建立 MSDTC 資源,即使有儲存體可用,系統也不會顯示任何可用的共用儲存體。 Windows Server 2019 中已修正此問題。
  • 基本負載平衡器不處理 RPC 連接埠。

後續步驟

現在您已熟悉在搭配 Azure VM 上的 SQL Server 使用 Windows 容錯移轉叢集時的差異,請了解高可用性功能可用性群組容錯移轉叢集執行個體。 如果您已經準備好開始使用,請務必檢閱設定建議的最佳做法