設定 AG VNN 接聽程式的 Azure 負載平衡器 - Azure VM 上的 SQL Server

適用於:Azure VM 上的 SQL Server

提示

有許多方法可部署可用性群組。 在相同 Azure 虛擬網路內的多個子網路中建立 SQL Server 虛擬機器 (VM),您的 Always On 可用性群組就可以簡化部署,而且不再需要 Azure Load Balancer 或分散式網路名稱 (DNN)。 如果您已在單一子網路中建立可用性群組,您可以將它移轉至多子網路環境

在 Azure 虛擬機器上,叢集會使用負載平衡器來保留每次均需在一個節點上的 IP 位址。 在此解決方案中,當 SQL Server VM 位於單一子網路時,負載平衡器會針對 Always On 可用性群組保存虛擬網路名稱 (VNN) 接聽程式的 IP 位址。

本文教您使用 Azure Load Balancer 服務來設定負載平衡器。 負載平衡器將流量路由傳送至採用「Azure VM 上的 SQL Server」的可用性群組接聽程式,以確保高可用性和災害復原 (HADR)。

如需 SQL Server 2019 CU8 和更新版本客戶的替代連線選項,請改為考慮分散式網路名稱 (DNN) 接聽程式。 DNN 接聽程式提供簡化的設定和改善的容錯移轉。

必要條件

建議先準備好下列項目,再完成本文中的步驟:

建立負載平衡器

您可以建立下列任一類型的負載平衡器:

  • 內部:內部負載平衡器只能從網路內部的私人資源進行存取。 設定內部負載平衡器和其規則時,請使用與可用性群組接聽程式相同的 IP 位址作為前端 IP 位址。

  • 外部:外部負載平衡器可以將公用的流量路由傳送至內部資源。 設定外部負載平衡器時,無法使用與可用性群組接聽程式相同的 IP 位址,因為接聽程式 IP 位址不能是公用 IP 位址。

    若要使用外部負載平衡器,請在與可用性群組相同的子網路中,合理配置未與其他任何 IP 位址衝突的 IP 位址。 使用此位址作為負載平衡規則的前端 IP 位址。

重要

Azure Load Balancer 的基本 SKU 將於 2025 年 9 月 30 日淘汰。 如需詳細資訊,請參閱官方公告。 如果您目前使用的是 Basic Load Balancer,則請在淘汰日之前升級至 Standard Load Balancer。 如需指導,請檢閱升級負載平衡器

若要建立負載平衡器:

  1. Azure 入口網站中,移至包含虛擬機器的資源群組。

  2. 選取 [新增]。 在 Azure Marketplace 內搜尋「負載平衡器」。 選取 [Load Balancer]。

  3. 選取 [建立]。

  4. 在 [建立負載平衡器] 的 [基本] 索引標籤上,使用下列值來設定負載平衡器:

    • 訂用帳戶:您的 Azure 訂用帳戶。
    • 資源群組:包含虛擬機器的資源群組。
    • Name:能識別負載平衡器的名稱。
    • 區域:包含虛擬機器的 Azure 位置。
    • SKU:[標準]。
    • 類型:[公用] 或 [內部]。 內部負載平衡器可以從虛擬網路進行存取。 大部分的 Azure 應用程式都可以使用內部負載平衡器。 若應用程式需要直接透過網際網路存取 SQL Server,請使用公用負載平衡器。
    • 層級區域

    Screenshot of the Azure portal that shows the page for basic information about a load balancer.

  5. 選取 [下一步: 前端 IP 設定]。

  6. 選取 [新增前端 IP 設定]。

    Screenshot of the Azure portal that shows the button for adding a frontend IP configuration.

  7. 使用下列值來設定前端 IP 位址:

    • 名稱:可識別前端 IP 設定的名稱。
    • 虛擬網路:與虛擬機器相同的網路。
    • 子網路︰與虛擬機器相同的子網路。
    • 指派:[靜態]。
    • IP 位址:您指派給叢集網路資源的 IP 位址。
    • 可用性區域:要在其中部署 IP 位址的選用可用性區域。

    Screenshot of the Azure portal that shows the page for configuring a frontend IP address.

  8. 選取 [新增] 以建立前端 IP 位址。

  9. 選取 [檢閱 + 建立] 以建立負載平衡器。

設定後端集區

  1. 返回包含虛擬機器的 Azure 資源群組,並找到新的負載平衡器。 您可能需要在資源群組上重新整理檢視。 選取負載平衡器。

  2. 選取 [後端集區],然後選取 [+新增]。

  3. 針對 [名稱],提供後端集區的名稱。

  4. 為 [後端集區設定] 選取 [NIC]。

  5. 選取 [新增],以將後端集區關聯至包含 VM 的可用性設定組。

  6. 在 [虛擬機器] 下方,選擇將參與為叢集節點的虛擬機器。 請務必包含將裝載可用性群組的所有虛擬機器。

    只新增每個 VM 的主要 IP 位址。 請不要新增任何次要 IP 位址。

  7. 選取 [新增],以將虛擬機器新增至後端集區。

  8. 選取 [儲存] 以建立後端集區。

設定健全狀態探查

  1. 在負載平衡器的窗格上,選取 [健全狀態探查]。

  2. 在 [新增健全狀態探查] 窗格上, 會設定下列參數:

    • Name:健康情況探查的名稱。
    • 通訊協定:[TCP]。
    • 連接埠:您在健全狀態探查的防火牆中所建立的連接埠。 在本文中,範例使用 TCP 連接埠 59999
    • 間隔:[5 秒]。
  3. 選取 [新增]。

設定負載平衡規則

  1. 在負載平衡器的窗格上,選取 [負載平衡規則]。

  2. 選取 [新增]。

  3. 設定這些參數:

    • 名稱︰負載平衡規則的名稱。
    • 前端 IP 位址:您在設定前端時所設定的 IP 位址。
    • 後端集區:後端集區包含鎖定負載平衡器的虛擬機器。
    • HA 連接埠:對所有連接埠啟用負載平衡,供 TCP 和 UDP 通訊協定使用。
    • 通訊協定:[TCP]。
    • 連接埠:SQL Server TCP 通訊埠。 預設值是 1433
    • 後端連接埠:此連接埠與您啟用 [浮動 IP (伺服器直接回傳)] 時的 [連接埠] 值相同。
    • 健康情況探查:先前設定的健康狀態探查。
    • 工作階段持續性:[無]。
    • 閒置逾時 (分鐘)4
    • 浮動 IP (伺服器直接回傳) :已啟用。
  4. 選取 [儲存]。

設定叢集探查

設定 PowerShell 中叢集探查的連接埠參數。

將下列指令碼中的變數更新為環境中的值。 移除指令碼中的角括弧 (<>)。

$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<AG Listener IP Address Resource Name>" 
$ILBIP = "<n.n.n.n>" 
[int]$ProbePort = <nnnnn>

Import-Module FailoverClusters

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

下表描述需要更新的值:

變數
ClusterNetworkName 網路的 Windows Server 容錯移轉叢集名稱。 在 [容錯移轉叢集管理員]>[網路] 中,以滑鼠右鍵按一下網路,然後選取 [屬性]。 正確的值在 [一般] 索引標籤的 [名稱] 底下。
IPResourceName AG 接聽程式的 IP 位址資源名稱。 在 [容錯移轉叢集管理員]>[角色] 中,於可用性群組角色下方的 [伺服器名稱] 下,以滑鼠右鍵按一下 IP 位址資源,然後選取 [屬性]。 正確的值在 [一般] 索引標籤的 [名稱] 底下。
ILBIP 內部負載平衡器的 IP 位址。 在 Azure 入口網站中,此位址設定為內部負載平衡器的前端位址。 這與可用性群組接聽程式的 IP 位址相同。 在 [容錯移轉叢集管理員] 中,您可以在 IPResourceName 值所在位置的相同屬性頁面上找到該位址。
ProbePort 您在負載平衡器的健全狀態探查中設定的探查連接埠。 任何未使用的 TCP 連接埠都有效。
SubnetMask 叢集參數的子網路遮罩。 其必須是 TCP/IP 廣播位址:255.255.255.255

在 IP 位址資源離線並再次上線之前,您所做的變更不會生效。 執行可用性群組的容錯移轉,此變更才會生效。 設定叢集探查之後,即可在 PowerShell 中查看所有叢集參數。 執行此指令碼︰

Get-ClusterResource $IPResourceName | Get-ClusterParameter

修改連接字串

針對支援 MultiSubnetFailover=True 的用戶端,將其新增至連接字串。 雖然不需要 MultiSubnetFailover 連線選項,但其提供更快子網路容錯移轉的好處。 這是因為用戶端驅動程式嘗試針對每個 IP 位址平行開啟 TCP 通訊端。 用戶端驅動程式會等候第一個 IP 位址回應成功。 成功回應之後,用戶端驅動程式會使用該 IP 位址來進行連線。

如果用戶端不支援 MultiSubnetFailover 參數,則您可以修改 RegisterAllProvidersIPHostRecordTTL 設定,以防止容錯移轉後的連線延遲。

使用 PowerShell 修改 RegisterAllProvidersIpHostRecordTTL 設定:

Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0  
Get-ClusterResource yourListenerName|Set-ClusterParameter HostRecordTTL 300 

若要深入了解,請參閱 SQL Server 中的接聽程式連線逾時文件

提示

  • 在連接字串中將 MultiSubnetFailover parameter 設定為 true,即使是跨越單一子網路的 HADR 解決方案也是一樣。 此設定支援未來跨越子網路,而不需要更新連接字串。
  • 根據預設,用戶端會快取叢集 DNS 記錄 20 分鐘。 減少 HostRecordTTL,即可減少快取記錄的存留時間 (TTL)。 舊版用戶端接著可以更快速地重新連線。 因此,降低 HostRecordTTL 設定可能會增加到 DNS 伺服器的流量。

測試容錯移轉

測試叢集資源的容錯移轉,以驗證叢集功能:

  1. 開啟 SQL Server Management Studio,然後連線至可用性群組接聽程式。
  2. 在 [物件總管] 中,展開 [Always On 可用性群組]。
  3. 以滑鼠右鍵按一下 [可用性群組],然後選取 [容錯移轉]。
  4. 遵循精靈提示,將可用性群組容錯移轉至次要複本。

當複本切換角色且兩者皆已同步處理時,容錯移轉即會成功。

測試連線能力

若要測試連線能力,請登入相同虛擬網路中的另一部虛擬機器。 開啟 SQL Server Management Studio 並連線到可用性群組接聽程式。

注意

若有需要,您可下載 SQL Server Management Studio

後續步驟

建立 VNN 之後,請考慮將 SQL Server VM 的叢集設定最佳化。

若要深入了解,請參閱: