在 Azure VM 上使用 SQL Server 的 Windows 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 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 虛擬機器;對於可用性群組,後端集區是可成為接聽程式主要複本的 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 SP3、SQL Server 2017 CU25 和 SQL 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 互通性。
注意
如果您在相同叢集有多個 AG 或 FCI,而且您使用 DNN 或 VNN 接聽程式,則每個 AG 或 FCI 都必須有自己的獨立連接點。
復原動作
偵測到故障時,叢集服務會採取矯正措施。 這可能會重新啟動現有節點上的資源,或將資源容錯移轉至另一個節點。 一旦起始矯正措施,就需要一些時間才能完成。
例如,重新啟動的可用性群組會依照下列順序上線:
- 接聽程式 IP 上線
- 接聽程式網路名稱上線
- 可用性群組上線
- 各個資料庫會經歷復原,這可能需要一些時間,具體取決於許多因素,例如重做記錄的長度。 只有在資料庫完全復原之後,接聽程式才會路由連線。 若要深入了解,請參閱<估計容錯移轉時間 (RTO)>。
由於復原可能需要一些時間,因此如果發生暫時性事件 (例如記憶體保留的 Azure VM 維護),則設定為在 20 秒內偵測故障的主動監視可能會導致幾分鐘的中斷。 將監視設定為更寬鬆的 40 秒值,可能有助於避免服務中斷較長的時間。
若要調整閾值設定,請參閱<叢集最佳做法>以取得詳細資料。
節點位置
Azure 中虛擬機器上 Windows 叢集中的節點可以在相同的 Azure 區域內實體分離,或位於不同的區域。 距離可能會導致網路延遲,就像將叢集節點分散在您自己的設施中的位置之間一樣。 在雲端環境中,差異在於,在一個區域內您可能不知道節點之間的距離。 此外,其他一些因素 (例如實體和虛擬元件、躍點數目等) 也可能會導致增加延遲。 如果擔心節點之間的延遲,請考慮將叢集的節點放在鄰近放置群組內,以確保網路鄰近性。
資源限制
在設定 Azure VM 時,您可以確定 CPU、記憶體和 IO 的計算資源限制。 需要比購買的 Azure VM 更多資源的工作負載或磁碟限制可能會導致 VM 效能問題。 效能降低可能會導致對叢集服務或 SQL Server 高可用性功能的健康情況檢查失敗。 資源瓶頸可能會使節點或資源出現下降至叢集或 SQL Server 的情況。
密集的 SQL IO 作業或維護作業 (例如備份、索引或統計資料維護) 可能會導致 VM 或磁碟達到 IOPS 或 MBPS 輸送量限制,這可能會使 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 虛擬機器支援在儲存體位於叢集共用磁碟區 (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 上將 Windows 容錯移轉叢集與 SQL Server 搭配使用時的差異,接下來請了解可用性群組功能可用性群組或容錯移轉叢集執行個體。 如果您已準備好開始使用,請務必檢閱組態建議的最佳做法。