設定容錯移轉叢集執行個體的 DNN

適用於:Azure VM 上的 SQL Server

提示

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

在 Azure 虛擬機器上,分散式網路名稱 (DNN) 會路由傳送流量至適當的叢集資源。 讓您不需 Azure Load Balancer,即可比虛擬網路名稱 (VNN) 輕鬆連線 SQL Server 容錯移轉叢集執行個體 (FCI)。

本文說明如何設定 DNN 資源,使用 Azure VM 的 SQL Server 路由傳送流量至容錯移轉叢集執行個體,提供高可用性和災害復原 (HADR)。

如果是替代的連線選項,請考慮改用虛擬網路名稱和 Azure Load Balancer

概觀

搭配 SQL Server VM 的 Always On 容錯移轉叢集執行個體使用時,分散式網路名稱 (DNN) 會取代虛擬網路名稱 (VNN) 成為連接點。 這樣就不需要 Azure Load Balancer 路由傳送流量至 VNN,同時簡化部署、維護,及改善容錯移轉。

使用 FCI 部署時,VNN 仍然存在,但用戶端會連線 DNN DNS 名稱,而不是 VNN 名稱。

必要條件

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

建立 DNN 資源

DNN 資源和 SQL Server FCI 建立在相同的叢集群組。 使用 PowerShell 在 FCI 叢集群組中建立 DNN 資源。

下列 PowerShell 命令會以 <dnnResourceName> 的資源名稱,在 SQL Server FCI 叢集群組新增 DNN 資源。 資源名稱用來唯一識別資源。 請使用對您有意義,且在整個叢集中唯一的名稱。 資源類型必須是 Distributed Network Name

-Group 值必須對應 SQL Server FCI,即您要在分散式網路名稱新增的叢集組名。 如果是預設執行個體,一般格式為 SQL Server (MSSQLSERVER)

Add-ClusterResource -Name <dnnResourceName> `
-ResourceType "Distributed Network Name" -Group "<WSFC role of SQL Server instance>"

例如,若要建立預設 SQL Server FCI 的 DNN 資源 dnn-demo,請使用下列 PowerShell 命令:

Add-ClusterResource -Name dnn-demo `
-ResourceType "Distributed Network Name" -Group "SQL Server (MSSQLSERVER)"

設定叢集 DNN DNS 名稱

在叢集中設定 DNN 資源的 DNS 名稱。 接著叢集會使用此值,路由傳送流量至目前裝載 SQL Server FCI 的節點。

用戶端會使用 DNS 名稱連線 SQL Server FCI。 您可以選擇唯一值。 或者,如果您已有現有的 FCI,而且不想要更新用戶端連接字串,您可以設定 DNN 使用用戶端目前使用的 VNN。 若要這麼做,請重新命名 VNN,然後設定 DNS 的 DNN。

您可以使用此命令設定 DNN 的 DNS 名稱:

Get-ClusterResource -Name <dnnResourceName> | `
Set-ClusterParameter -Name DnsName -Value <DNSName>

DNSName 值是用戶端用來連線 SQL Server FCI 的值。 例如,若要用戶端連線 FCIDNN,請使用下列 PowerShell 命令:

Get-ClusterResource -Name dnn-demo | `
Set-ClusterParameter -Name DnsName -Value FCIDNN

連線 SQL Server FCI 後,用戶端會在連接字串輸入 FCIDNN

警告

請勿刪除目前的虛擬網路名稱 (VNN),因為這是 FCI 基礎結構的必要元件。

重新命名 VNN

如果您有現有的虛擬網路名稱,而您想要讓用戶端繼續使用此值連線 SQL Server FCI,請將目前的 VNN 重新命名為預留位置值。 重新命名目前的 VNN 後,您可以將 DNN 的 DNS 名稱值設為 VNN。

適用於重新命名 VNN 的部分限制。 如需詳細資訊,請參閱重新命名 FCI

如果您的企業不需使用目前的 VNN,請略過本節。 重新命名 VNN 後,請設定叢集 DNN DNS 名稱

設定 DNN 資源連線

正確命名 DNN 資源,並設定叢集的 DNS 名稱值後,請使用 PowerShell 在叢集中設定 DNN 資源連線:

Start-ClusterResource -Name <dnnResourceName>

例如,若要啟動 DNN 資源 dnn-demo,請使用下列 PowerShell 命令:

Start-ClusterResource -Name dnn-demo

設定可能的擁有者

根據預設,叢集會繫結 DNN DNS 名稱與叢集所有的節點。 但不屬於 SQL Server FCI 的叢集節點應從 DNN 可能的擁有者清單中排除。

若要更新可能的擁有者,請遵循下列步驟:

  1. 移至容錯移轉叢集管理員中的 DNN 資源。

  2. 以滑鼠右鍵按一下 DNN 資源,並選取 [屬性]。

    Shortcut menu for the DNN resource, with the Properties command highlighted.

  3. 針對任何未參與容錯移轉叢集執行個體的節點,清除核取方塊。 DNN 資源可能的擁有者清單應符合 SQL Server 執行個體資源可能的擁有者清單。 例如,假設 Data3 未參與 FCI,下圖是從 DNN 資源可能的擁有者清單,移除 Data3 的範例:

    Clear the check box next to the nodes that do not participate in the FCI for possible owners of the DNN resource

  4. 選取 [確定] 儲存設定。

重新啟動 SQL Server 執行個體

使用容錯移轉叢集管理員重新啟動 SQL Server 執行個體。 請遵循下列步驟:

  1. 移至容錯移轉叢集管理員的 SQL Server 資源。
  2. 以滑鼠右鍵按一下 SQL Server 資源並離線。
  3. 所有相關資源離線後,請以滑鼠右鍵按一下 SQL Server 資源,並重新上線。

更新連接字串

針對連線 SQL Server FCI DNN 的任何應用程式,更新連接字串,並在連接字串中包含 MultiSubnetFailover=True。 如果您的用戶端不支援 MultiSubnetFailover 參數,則表示其不適用 DNN。

以下 SQL FCI DNN 的範例連接字串,包含FCIDNN 的 DNS 名稱:

Data Source=FCIDNN, MultiSubnetFailover=True

此外,如果 DNN 不是使用原始的 VNN,連線 SQL Server FCI 的 SQL 用戶端即須更新 DNN DNS 名稱的連接字串。 若要避免此需求,您可以將 DNS 名稱值更新為 VNN 的名稱。 但您必須先以預留位置取代現有的 VNN

測試容錯移轉

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

若要測試容錯移轉,請遵循下列步驟:

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

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

測試連線能力

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

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

避免 IP 衝突

此步驟為選用,可防止 FCI 資源使用的虛擬 IP (VIP) 位址作為重複項,指派給 Azure 的其他資源。

雖然客戶目前使用 DNN 連線 SQL Server FCI,但虛擬網路名稱 (VNN) 和虛擬 IP 是 FCI 基礎結構的必要元件,無法刪除。 但基於 Azure 的負載平衡器已不再保留虛擬 IP 位址,相同的 IP 位址可能指派給虛擬網路的其他資源,作為 FCI 使用的虛擬 IP 位址。 這可能導致重複的 IP 衝突問題。

為保留 IP 位址,請設定 APIPA 位址或專用的網路介面卡。

APIPA 位址

若要避免使用重複的 IP 位址,請設定 APIPA 位址 (也稱為連結-本機位址)。 若要這樣做,請執行下列命令:

Get-ClusterResource "virtual IP address" | Set-ClusterParameter 
    –Multiple @{"Address"="169.254.1.1";"SubnetMask"="255.255.0.0";"OverrideAddressMatch"=1;"EnableDhcp"=0}

在此命令中,「虛擬 IP 位址」是叢集 VIP 位址資源的名稱,而「169.254.1.1」是為 VIP 位址選擇的 APIPA 位址。 選擇最適合貴企業的位址。 設定 OverrideAddressMatch=1 允許 IP 位址連線任何網路,包括 APIPA 位址空間。

專用的網路介面卡

或者,您也可以在 Azure 中,設定網路介面卡,保留虛擬 IP 位址資源使用的 IP 位址。 但這會取用子網路位址空間的位址,並有其他額外負荷,確保網路介面卡不用於任何其他用途。

限制

  • 連線 DNN 接聽程式的用戶端必須支援連接字串的 MultiSubnetFailover=True 參數。
  • 使用其他 SQL Server 功能和包含 DNN 的 FCI 時,您要考量可能更多。 如需詳細資訊,請參閱 FCI 與 DNN 的互通性

後續步驟

若要深入了解,請參閱: