為 FCI VNN 設定 Azure Load Balancer

適用于:Azure VM 上的SQL Server

提示

在相同 Azure 虛擬網路內的多個子網路中建立 SQL Server VM,容錯移轉叢集執行個體就不需要 Azure Load Balancer。

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

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

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

必要條件

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

建立負載平衡器

您可以建立內部負載平衡器或外部負載平衡器。 只有網路內部的私人資源才能存取內部負載平衡器。 外部負載平衡器可以將公用的流量路由傳送至內部資源。 設定內部負載平衡器時,請使用與 FCI 資源相同的 IP 位址,作為設定負載平衡規則時的前端 IP。 設定外部負載平衡器時,不可使用同一個 IP 位址,因為 FCI IP 位址不能是公用 IP 位址。 因此,若要使用外部負載平衡器,請於 FCI 所在的子網路中,合理配置與其他任何 IP 位址不衝突的 IP 位址,並使用此位址作為負載平衡規則的前端 IP 位址。

使用 Azure 入口網站來建立負載平衡器:

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

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

  3. 選取 [建立]。

  4. 使用下列值設定負載平衡器:

    • 訂用帳戶:您的 Azure 訂用帳戶。
    • 資源群組:包含虛擬機器的資源群組。
    • Name:能識別負載平衡器的名稱。
    • 區域:包含虛擬機器的 Azure 位置。
    • 類型:公用或私人。 私人負載平衡器可從相同的虛擬網路內存取。 大部分的 Azure 應用程式都能使用私人負載平衡器。 若應用程式需要直接透過網際網路存取 SQL Server,請使用公用負載平衡器。
    • SKU:標準。
    • 虛擬網路:與虛擬機器相同的網路。
    • IP 位址指派:靜態。
    • 私人 IP 位址:您指派給叢集網路資源的 IP 位址。

    下列映像會顯示 [建立負載平衡器] UI:

    設定負載平衡器

設定後端集區

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

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

  3. 將後端集區關聯至包含 VM 的可用性設定組。

  4. 在 [目標網路 IP 設定] 下方,選取 [虛擬機器],並選擇將作為叢集節點加入的虛擬機器。 請務必包含將裝載 FCI 的所有虛擬機器。 僅新增每個 VM 的主要 IP 位址,請勿新增任何次要 IP 位址。

  5. 選取 [確定] 以建立後端集區。

設定健全狀態探查

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

  2. 選取 [新增]。

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

    • Name:健康情況探查的名稱。
    • 通訊協定:TCP。
    • 連接埠:您準備 VM 時在防火牆內為健全狀態探查建立的連接埠。 在本文中,範例使用 TCP 連接埠 59999
    • 間隔:5 秒。
    • 狀況不良閾值:2 次連續失敗。
  4. 選取 [確定]。

設定負載平衡規則

設定負載平衡器的負載平衡規則。

遵循下列步驟,設定私人負載平衡器的負載平衡規則:

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

  2. 選取 [新增]。

  3. 設定負載平衡規則參數:

    • 名稱︰負載平衡規則的名稱。
    • 前端 IP 位址︰SQL Server FCI 叢集網路資源的 IP 位址。
    • 連接埠: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}

下表描述需要更新的值:

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

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

Get-ClusterResource $IPResourceName | Get-ClusterParameter

修改連接字串

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

如果用戶端不支援 MultiSubnetFailover 參數,您可以修改 RegisterAllProvidersIP 和 HostRecordTTL 設定,以避免在容錯移轉時連線延遲。

使用 PowerShell 來修改 RegisterAllProvidersIp 和 HostRecordTTL 設定:

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

後續步驟

若要深入了解,請參閱: