Konfigurieren eines DNN-Listeners für eine Verfügbarkeitsgruppe

Gilt für:SQL Server auf Azure-VM

Tipp

Es gibt viele Methoden zum Bereitstellen einer Verfügbarkeitsgruppe. Vereinfachen Sie Ihre Bereitstellung, indem Sie Ihre SQL Server-VMs in mehreren Subnetzen innerhalb desselben virtuellen Azure-Netzwerks erstellen. So benötigen Sie weder eine Azure Load Balancer-Instanz noch einen verteilten Netzwerknamen (DNN) für Ihre Always On-Verfügbarkeitsgruppe. Wenn Sie Ihre Verfügbarkeitsgruppe bereits in einem einzelnen Subnetz erstellt haben, können Sie sie in eine Umgebung mit mehreren Subnetzen migrieren.

Bei SQL Server auf Azure-VMs in einem einzigen Subnetz leitet der verteilte Netzwerkname (DNN) den Datenverkehr an die entsprechende Clusterressource weiter. Er bietet eine einfachere Möglichkeit zum Herstellen einer Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe als der VNN-Listener (Virtual Network Name, Name des virtuellen Netzwerks), ohne dass ein Azure Load Balancer-Objekt erforderlich ist.

In diesem Artikel erfahren Sie, wie Sie einen DNN-Listener konfigurieren, durch den der VNN-Listener ersetzt und Datenverkehr an Ihre Verfügbarkeitsgruppe mit SQL Server auf Azure-VMs für Hochverfügbarkeit und Notfallwiederherstellung (HADR) weitergeleitet wird.

Als alternative Konnektivitätsoption bietet sich ein VNN-Listener mit Azure Load Balancer-Objekt an.

Übersicht

Ein DNN-Listener ersetzt den herkömmlichen VNN-Verfügbarkeitsgruppenlistener, wenn er mit AlwaysOn-Verfügbarkeitsgruppen auf SQL Server-VMs verwendet wird. Dadurch ist es nicht mehr erforderlich, Datenverkehr über ein Azure Load Balancer-Objekt weiterzuleiten, wodurch Bereitstellung und Wartung vereinfacht werden und Failover verbessert wird.

Verwenden Sie den DNN-Listener, um einen vorhandenen VNN-Listener zu ersetzen, oder um ihn alternativ in Verbindung mit einem vorhandenen VNN-Listener zu nutzen, um Ihre Verfügbarkeitsgruppe mit zwei unterschiedlichen Verbindungspunkten auszustatten: einen, der den VNN-Listenernamen (und Port, falls nicht der Standardport) verwendet, und einen, der den DNN-Listenernamen und entsprechenden Port verwendet.

Achtung

Das Routingverhalten bei der Verwendung von DNN unterscheidet sich bei der Verwendung eines VNN. Port 1433 nicht verwenden. Weitere Informationen finden Sie im Abschnitt Betrachtung des Ports weiter unten in diesem Artikel.

Voraussetzungen

Bevor Sie die in diesem Artikel aufgeführten Schritte ausführen, sollten Sie über Folgendes verfügen:

  • SQL Server ab SQL Server 2019 CU8 und höher, SQL Server 2017 CU25 und höher oder SQL Server 2016 SP3 und höher unter Windows Server 2016 und höher.
  • Sie sollten entschieden haben, dass der Name des verteilten Netzwerks die geeignete Konnektivitätsoption für die HADR-Lösung ist.
  • Sie sollten Ihre AlwaysOn-Verfügbarkeitsgruppe konfiguriert haben.
  • Sie müssen die neueste Version von PowerShell installiert haben.
  • Identifiziert den eindeutigen Port, der für den DNN-Listener verwendet werden soll. Der für einen DNN-Listener verwendete Port muss in allen Replikaten der Verfügbarkeitsgruppe oder der Failoverclusterinstanz eindeutig sein. Keine andere Verbindung kann denselben Port gemeinsam nutzen.

Erstellen des Skripts

Verwenden Sie PowerShell, um die DNN-Ressource (Distributed Network Name, Name des verteilten Netzwerks) zu erstellen und sie Ihrer Verfügbarkeitsgruppe zuzuordnen.

Gehen Sie dazu folgendermaßen vor:

  1. Öffnen Sie einen Text-Editor, z. B. Notepad.

  2. Kopieren Sie das folgende Skript, und fügen Sie es ein.

    param (
       [Parameter(Mandatory=$true)][string]$Ag,
       [Parameter(Mandatory=$true)][string]$Dns,
       [Parameter(Mandatory=$true)][string]$Port
    )
    
    Write-Host "Add a DNN listener for availability group $Ag with DNS name $Dns and port $Port"
    
    $ErrorActionPreference = "Stop"
    
    # create the DNN resource with the port as the resource name
    Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag 
    
    # set the DNS name of the DNN resource
    Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns 
    
    # start the DNN resource
    Start-ClusterResource -Name $Port
    
    
    $Dep = Get-ClusterResourceDependency -Resource $Ag
    if ( $Dep.DependencyExpression -match '\s*\((.*)\)\s*' )
    {
    $DepStr = "$($Matches.1) or [$Port]"
    }
    else
    {
    $DepStr = "[$Port]"
    }
    
    Write-Host "$DepStr"
    
    # add the Dependency from availability group resource to the DNN resource
    Set-ClusterResourceDependency -Resource $Ag -Dependency "$DepStr"
    
    
    #bounce the AG resource
    Stop-ClusterResource -Name $Ag
    Start-ClusterResource -Name $Ag
    
  3. Speichern Sie das Skript als .ps1-Datei, z. B. add_dnn_listener.ps1.

Ausführen des Skripts

Um den DNN-Listener zu erstellen, führen Sie das Skript aus, wobei Sie Parameter für den Namen der Verfügbarkeitsgruppe, den Listenernamen und den Listenerport übergeben.

Angenommen, Sie haben eine Verfügbarkeitsgruppe namens ag1, einen Listener namens dnnlsnr und den Port 6789 für den Listener, dann führen Sie die folgenden Schritte aus:

  1. Öffnen Sie ein Befehlszeilenschnittstellentool, z. B. Eingabeaufforderung oder PowerShell.

  2. Navigieren Sie zum Speicherort des .ps1-Skripts, z. B. „C:\Dokumente“.

  3. Führen Sie das Skript aus: add_dnn_listener.ps1 <ag name> <listener-name> <listener port>. Zum Beispiel:

    c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
    

Überprüfen des Listeners

Verwenden Sie entweder SQL Server Management Studio oder Transact-SQL, um zu bestätigen, dass der DNN-Listener erfolgreich erstellt wurde.

SQL Server Management Studio

Erweitern Sie Verfügbarkeitsgruppenlistener in SQL Server Management Studio (SSMS), um Ihren DNN-Listener anzuzeigen:

View the DNN listener under availability group listeners in SQL Server Management Studio (SSMS)

Transact-SQL

Verwenden Sie Transact-SQL, um den Status des DNN-Listeners anzuzeigen:

SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS

Der Wert 1 für is_distributed_network_name kennzeichnet, dass der Listener ein DNN-Listener (Distributed Network Name, Name des verteilten Netzwerks) ist:

Use sys.availability_group_listeners to identify DNN listeners that have a value of 1 in is_distributed_network_name

Aktualisieren der Verbindungszeichenfolge

Aktualisieren Sie die Verbindungszeichenfolge für jede Anwendung, die eine Verbindung mit dem DNN-Listener herstellen muss. Die Verbindungszeichenfolge für den DNN-Listener muss die DNN-Portnummer angeben, und geben Sie MultiSubnetFailover=True in der Verbindungszeichenfolge an. Wenn der SQL-Client den Parameter MultiSubnetFailover=True nicht unterstützt, ist er nicht mit einem DNN-Listener kompatibel.

Im Folgenden finden Sie ein Beispiel für eine Verbindungszeichenfolge für den Listener mit dem Namen DNN_Listener und Port 6789:

DataSource=DNN_Listener,6789;MultiSubnetFailover=True

Testfailover

Testen Sie das Failover der Verfügbarkeitsgruppe, um die Funktionalität sicherzustellen.

Führen Sie die folgenden Schritte aus, um das Failover zu testen:

  1. Stellen Sie eine Verbindung mit dem DNN-Listener oder einem Replikat her, indem Sie SQL Server Management Studio (SSMS) verwenden.
  2. Erweitern Sie Always On-Verfügbarkeitsgruppe im Objekt-Explorer.
  3. Klicken Sie mit der rechten Maustaste auf die Verfügbarkeitsgruppe, und wählen Sie Failover aus, um den Failover-Assistenten zu öffnen.
  4. Gehen Sie gemäß den Eingabeaufforderungen vor, um ein Failoverziel auszuwählen, und führen Sie für die Verfügbarkeitsgruppe ein Failover zu einem sekundären Replikat aus.
  5. Vergewissern Sie sich, dass die Datenbank auf dem neuen primären Replikat im synchronisierten Zustand vorliegt.
  6. (Optional) Führen Sie ein Failback zum ursprünglichen primären Replikat oder einem anderen sekundären Replikat aus.

Testen der Konnektivität

Testen Sie die Konnektivität Ihres DNN-Listeners mit den folgenden Schritten:

  1. Öffnen Sie SQL Server Management Studio.
  2. Stellen Sie eine Verbindung mit Ihrem DNN-Listener her.
  3. Öffnen Sie ein neues Abfragefenster, und führen Sie SELECT @@SERVERNAME aus, um zu überprüfen Sie, mit welchem Replikat Sie verbunden sind.
  4. Führen Sie für die Verfügbarkeitsgruppe ein Failover zu einem anderen Replikat aus.
  5. Warten Sie kurze Zeit, und führen Sie SELECT @@SERVERNAME aus, um zu bestätigen, dass Ihre Verfügbarkeitsgruppe jetzt auf einem anderen Replikatserver gehostet wird.

Einschränkungen

  • DNN-Listener MÜSSEN mit einem eindeutigen Port konfiguriert werden. Der Port kann nicht gemeinsam mit anderen Verbindungen auf einem Replikat verwendet werden.
  • Der Client, der eine Verbindung mit dem DNN-Listener herstellt, muss den Parameter MultiSubnetFailover=True in der Verbindungszeichenfolge unterstützen.
  • Es gibt möglicherweise weitere Überlegungen, wenn Sie mit anderen SQL Server-Features und einer Verfügbarkeitsgruppe mit einem DNN arbeiten. Weitere Informationen finden Sie unter Funktionsinteroperabilität mit VG und DNN-Listener.

Überlegungen zum Port

DNN-Listener dienen zum Listen an allen IP-Adressen, aber an einem bestimmten, eindeutigen Port. Der DNS-Eintrag für den Listenernamen sollte in die Adressen aller Replikate in der Verfügbarkeitsgruppe aufgelöst werden. Dies erfolgt automatisch über das PowerShell-Skript, das im Abschnitt Skript erstellen bereitgestellt wird. Da DNN-Listener Verbindungen an allen IP-Adressen akzeptieren, ist es wichtig, dass der Listenerport eindeutig ist und nicht von einem anderen Replikat in der Verfügbarkeitsgruppe verwendet wird. Da SQL Server standardmäßig an Port 1433 lauscht, entweder direkt oder über den SQL Browser-Dienst, wird dringend davon abgeraten, Port 1433 für den DNN-Listener zu verwenden.

Wenn der für den VNN-Listener ausgewählte Listenerport zwischen 49.152 und 65.536 liegt (der standardmäßige dynamische Portbereich für TCP/IP), fügen Sie hierfür einen Ausschluss hinzu. Dadurch wird verhindert, dass anderen Systemen dynamisch derselbe Port zugewiesen wird.

Sie können einen Portausschluss mit dem folgenden Befehl hinzufügen: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent

Nächste Schritte

Nachdem die Verfügbarkeitsgruppe bereitgestellt wurde, sollten Sie die HADR-Einstellungen für SQL Server auf Azure-VMs optimieren.

Weitere Informationen finden Sie unter: