共用方式為


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

適用於:Azure VM 上的 SQL Server

本文說明將 Windows Server 容錯移轉叢集功能與 Azure 虛擬機器 (VM) 上的 SQL Server 搭配使用時的差異,以實現高可用性和災害復原 (HADR)。 例如,針對 Always On 可用性群組 (AG) 或容錯移轉叢集執行個體 (FCI)。

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

概觀

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

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

叢集健康情況監視

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

設定宣告故障的閾值很重要,以便在及時回應故障和避免假故障之間取得平衡。

有兩種監視策略:

監視 描述
主動 提供永久性故障的快速故障偵測和復原,以提供最高層級的可用性。 叢集服務和 SQL Server 都不太能容忍短暫的失敗,而且在某些情況下,當發生短暫的中斷時,可能會提早移轉資源。 一旦偵測到故障,隨後的糾正措施可能需要額外的時間。
寬鬆 提供更寬容的故障偵測,對短暫的暫時性網路問題有更大的容忍度。 避免暫時性故障,但也會導致延遲偵測到真故障的風險。

在雲端叢集環境中,積極的設定可能會導致過早失敗和更長的中斷時間,因此建議對於 Azure VM 上的容錯移轉叢集採用較為寬鬆的監控策略。 若要調整閾值設定,請參閱<叢集最佳做法>以取得詳細資料。

叢集活動訊號

影響叢集活動訊號和節點之間健康情況偵測的主要設定:

設定 描述
Delay 這會定義叢集活動訊號在節點之間傳送的頻率。 延遲是指傳送下一個活動訊號之前的秒數。 在相同的叢集內,相同子網路上的節點之間,以及不同子網路上的節點之間,可以設定不同的延遲設定。
臨界值 閾值是指叢集採取復原動作之前可以遺漏的活動訊號數目。 在相同的叢集內,相同子網路上的節點之間以及不同子網路上的節點之間可以設定不同的臨界值設定。

這些設定的預設值對於雲端環境來說可能太低,並且可能會因為暫時性網路問題而導致不必要的失敗。 為了提高容忍度,請對 Azure VM 中的容錯移轉叢集使用寬鬆的閾值設定。 如需詳細資料,請參閱<叢集最佳做法>。

Quorum

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

技術上來說,三節點叢集在沒有仲裁資源的情況下,可以承受單一節點遺失 (減少至兩個節點)。 但是,在叢集減少至兩個節點之後,如果節點遺失或節點之間存在通訊故障,叢集資源可能會離線,以防止核心分裂案例。 配置仲裁資源可讓叢集資源保持線上狀態,且只有一個節點在線上。

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

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

雲端見證 磁碟見證 檔案共用見證
支援的 OS Windows 伺服器 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 虛擬機器;對於可用性群組,後端集區是可成為接聽程式主要複本的 Azure 虛擬機器。 當您在使用負載平衡器時,會有輕微的故障容錯延遲,因為預設情況下,健康探查會每 10 秒執行一次存活檢查。

若要開始,請瞭解如何為 容錯移轉叢集執行個體可用性群組 配置 Azure 負載平衡器。

支援的 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 解決方案:容錯移轉叢集執行個體和可用性群組

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

將 DNN 與其他 SQL Server 功能搭配使用時,還有更多考量。 若要深入瞭解,請參閱 FCI 和 DNN 互通性AG 和 DNN 互通性

注意

相同叢集上的每個可用性群組或容錯移轉叢集執行個體都需要自己的獨立連線點,無論是 VNN 聆聽器還是 DNN 聆聽器。

復原動作

偵測到故障時,叢集服務會採取矯正措施。 此動作可能會重新啟動現有節點上的資源,或將資源轉移至其他節點。 一旦起始矯正措施,就需要一些時間才能完成。

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

  1. 接聽程式 IP 上線
  2. 接聽程式網路名稱上線
  3. 可用性群組上線
  4. 個別資料庫會進行復原,這可能需要一些時間,視數個因素而定,例如重做日誌的長度。 接聽程式不會路由連線,直到資料庫完全復原為止。 若要深入了解,請參閱<估計容錯移轉時間 (RTO)>。

由於復原可能需要一些時間,因此如果發生暫時性事件 (例如記憶體保留的 Azure VM 維護),則設定為在 20 秒內偵測故障的主動監視可能會導致幾分鐘的中斷。 將監視設定為更寬鬆的 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 即時移轉至不同的主機時,某些敏感工作負載 (例如 SQL Server) 可能會在導致 VM 暫停的幾分鐘內出現效能稍微降低。

平臺維護期間的資源瓶頸可能會使 AG 或 FCI 顯示為對叢集服務無法使用。 若要深入瞭解,請參閱本文的 資源限制 一節。

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

限制

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

MSDTC

Azure 虛擬機器支援 Windows Server 2019 上的 Microsoft 分散式交易協調器 (MSDTC),並在叢集共用磁碟區 (CSV) 和 Azure 標準負載平衡器 上,或在使用 Azure 共用磁碟的 SQL Server VM 上儲存。

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

  • 叢集化的 MSDTC 資源無法設為使用共用儲存體。 在 Windows Server 2016 上,如果您建立 MSDTC 資源,即使儲存體可用,它也不會顯示任何可供使用的共用儲存體。 此問題已在 Windows Server 2019 中修正。