Konfigurieren eines DNN-Listeners für eine Verfügbarkeitsgruppe
Gilt für: SQL Server auf Azure-VMs
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.
Hinweis
Wenn Sie mehrere AGs oder FCIs auf demselben Cluster haben und entweder einen DNN- oder VNN-Listener einsetzen, benötigt jede AG oder FCI einen eigenen unabhängigen Verbindungspunkt.
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:
Öffnen Sie einen Text-Editor, z. B. Notepad.
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
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:
Öffnen Sie ein Befehlszeilenschnittstellentool, z. B. Eingabeaufforderung oder PowerShell.
Navigieren Sie zum Speicherort des
.ps1
-Skripts, z. B. „C:\Dokumente“.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:
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:
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:
- Stellen Sie eine Verbindung mit dem DNN-Listener oder einem Replikat her, indem Sie SQL Server Management Studio (SSMS) verwenden.
- Erweitern Sie Always On-Verfügbarkeitsgruppe im Objekt-Explorer.
- Klicken Sie mit der rechten Maustaste auf die Verfügbarkeitsgruppe, und wählen Sie Failover aus, um den Failover-Assistenten zu öffnen.
- 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.
- Vergewissern Sie sich, dass die Datenbank auf dem neuen primären Replikat im synchronisierten Zustand vorliegt.
- (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:
- Öffnen Sie SQL Server Management Studio.
- Stellen Sie eine Verbindung mit Ihrem DNN-Listener her.
- Öffnen Sie ein neues Abfragefenster, und führen Sie
SELECT @@SERVERNAME
aus, um zu überprüfen Sie, mit welchem Replikat Sie verbunden sind. - Führen Sie für die Verfügbarkeitsgruppe ein Failover zu einem anderen Replikat aus.
- 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: