設定 FCI VNN 的 Azure 負載平衡器 - Azure VM 上的 SQL Server

適用於:Azure VM 上的 SQL Server

提示

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

在 Azure 虛擬機器上,叢集會使用負載平衡器來保留每次均需在一個節點上的 IP 位址。 在此解決方案中,負載平衡器保留 IP 位址,以供 Azure 中叢集資源所使用的虛擬網路名稱 (VNN) 使用。

本文教您使用 Azure Load Balancer 服務來設定負載平衡器。 負載平衡器會將流量路由傳送至採用 Azure VM 上的 SQL Server 的容錯移轉叢集執行個體,以提供高可用性和災害復原 (HADR)。

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

必要條件

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

建立負載平衡器

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

  • 內部:內部負載平衡器只能從網路內部的私人資源進行存取。 當您設定內部負載平衡器和其規則時,請使用 FCI IP 位址作為前端 IP 位址。

  • 外部:外部負載平衡器可以將公用的流量路由傳送至內部資源。 當您設定外部負載平衡器時,無法使用 FCI IP 位址這類公用 IP 位址。

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

若要建立負載平衡器:

  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 front-end IP configuration.

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

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

    Screenshot of the Azure portal that shows the page for configuring a front-end IP address.

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

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

設定後端集區

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

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

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

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

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

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

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

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

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

設定健全狀態探查

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

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

    • Name:健康情況探查的名稱。
    • 通訊協定:[TCP]。
    • 連接埠準備 VM 時,在防火牆中針對健全狀態探查所建立的連接埠。 在本文中,範例使用 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 = "<SQL Server FCI 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 SQL Server FCI IP 位址的資源名稱。 在 [容錯移轉叢集管理員]>[角色] 中,於 SQL Server FCI 角色下方的 [伺服器名稱] 下,以滑鼠右鍵按一下 IP 位址資源,然後選取 [屬性]。 正確的值在 [一般] 索引標籤的 [名稱] 底下。
ILBIP 內部負載平衡器的 IP 位址。 在 Azure 入口網站中,此位址設定為內部負載平衡器的前端位址。 這也是 SQL Server FCI 的 IP 位址。 在 [容錯移轉叢集管理員] 中,您可以在 IPResourceName 值所在位置的相同屬性頁面上找到該位址。
ProbePort 您在負載平衡器的健全狀態探查中設定的探查連接埠。 任何未使用的 TCP 連接埠都有效。
SubnetMask 叢集參數的子網路遮罩。 其必須是 TCP/IP 廣播位址:255.255.255.255

設定叢集探查之後,即可在 PowerShell 中查看所有叢集參數。 執行此指令碼︰

Get-ClusterResource $IPResourceName | Get-ClusterParameter

修改連接字串

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

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

使用 PowerShell 修改 RegisterAllProvidersIpHostRecordTTL 設定:

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

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

提示

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

測試容錯移轉

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

  1. 使用遠端桌面通訊協定 (RDP) 連線至其中一個 SQL Server 叢集節點。
  2. 開啟 [容錯移轉叢集管理員]。 選取 [角色]。 請注意哪個節點擁有 SQL Server FCI 角色。
  3. 以滑鼠右鍵按一下 SQL Server FCI 角色。
  4. 選取 [移動],然後選取 [最佳可行節點]。

[容錯移轉叢集管理員] 會顯示角色,其資源則會變成離線狀態。 接著資源會移動,並在另一個節點上線。

測試連線能力

若要測試連線能力,請登入相同虛擬網路中的另一部虛擬機器。 開啟 [SQL Server Management Studio],然後連接到 SQL Server FCI 名稱。

注意

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

後續步驟

若要深入了解,請參閱: