Een DNN-listener configureren voor een beschikbaarheidsgroep
Van toepassing op: SQL Server op Azure VM
Fooi
Er zijn veel methoden om een beschikbaarheidsgroep te implementeren. Vereenvoudig uw implementatie en elimineer de noodzaak van een Azure Load Balancer of gedistribueerde netwerknaam (DNN) voor uw AlwaysOn-beschikbaarheidsgroep door uw virtuele SQL Server-machines (VM's) te maken in meerdere subnetten binnen hetzelfde virtuele Azure-netwerk. Als u uw beschikbaarheidsgroep al in één subnet hebt gemaakt, kunt u deze migreren naar een omgeving met meerdere subnetten.
Met SQL Server op Virtuele Azure-machines in één subnet stuurt de gedistribueerde netwerknaam (DNN) verkeer naar de juiste geclusterde resource. Het biedt een eenvoudigere manier om verbinding te maken met een AlwaysOn-beschikbaarheidsgroep (AG) dan de VNN-listener (Virtual Network Name), zonder dat er een Azure Load Balancer nodig is.
In dit artikel leert u hoe u een DNN-listener configureert om de VNN-listener te vervangen en verkeer naar uw beschikbaarheidsgroep te routeren met SQL Server op Azure-VM's voor hoge beschikbaarheid en herstel na noodgevallen (HADR).
Voor een alternatieve connectiviteitsoptie kunt u in plaats daarvan een VNN-listener en Azure Load Balancer overwegen.
Overzicht
Een DNN-listener (Distributed Network Name) vervangt de traditionele VN-listener (Virtual Network Name) voor beschikbaarheidsgroepen wanneer deze wordt gebruikt met AlwaysOn-beschikbaarheidsgroepen op SQL Server-VM's. Dit onderhandelt de noodzaak van een Azure Load Balancer om verkeer te routeren, implementatie, onderhoud en failover te vereenvoudigen.
Gebruik de DNN-listener voor het vervangen van een bestaande VNN-listener, of gebruik deze in combinatie met een bestaande VNN-listener, zodat uw beschikbaarheidsgroep twee afzonderlijke verbindingspunten heeft: één met de naam (en poort, indien niet-standaard) van de VNN-listener en één met de naam en poort van de DNN-listener.
Let op
Het routeringsgedrag bij het gebruik van een DNN verschilt wanneer u een VNN gebruikt. Gebruik poort 1433 niet. Zie de sectie Poortoverweging verderop in dit artikel voor meer informatie.
Vereisten
Voordat u de stappen in dit artikel voltooit, hebt u het volgende al nodig:
- SQL Server vanaf SQL Server 2019 CU8 en hoger, SQL Server 2017 CU25 en hoger, of SQL Server 2016 SP3 en hoger op Windows Server 2016 en hoger.
- Besloten dat de naam van het gedistribueerde netwerk de juiste connectiviteitsoptie is voor uw HADR-oplossing.
- Uw AlwaysOn-beschikbaarheidsgroep geconfigureerd.
- De nieuwste versie van PowerShell is geïnstalleerd.
- Identificeer de unieke poort die u gaat gebruiken voor de DNN-listener. De poort die wordt gebruikt voor een DNN-listener, moet uniek zijn voor alle replica's van de beschikbaarheidsgroep of het failoverclusterexemplaren. Er kan geen andere verbinding dezelfde poort delen.
Script maken
Gebruik PowerShell om de DNN-resource (Distributed Network Name) te maken en deze te koppelen aan uw beschikbaarheidsgroep.
Dit doet u als volgt:
Open een teksteditor zoals Kladblok.
Kopieer en plak het volgende script:
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
Sla het script op als een
.ps1
bestand, zoalsadd_dnn_listener.ps1
.
Script uitvoeren
Als u de DNN-listener wilt maken, voert u het script uit dat parameters doorgeeft voor de naam van de beschikbaarheidsgroep, de naam van de listener en de poort.
Voer bijvoorbeeld de volgende stappen uit als de naam van een beschikbaarheidsgroep, ag1
de naam van de listener van dnnlsnr
en de listenerpoort 6789
:
Open een opdrachtregelinterfaceprogramma, zoals de opdrachtprompt of PowerShell.
Navigeer naar de locatie waar u het
.ps1
script hebt opgeslagen, zoals c:\Documents.Voer het script uit:
add_dnn_listener.ps1 <ag name> <listener-name> <listener port>
. Voorbeeld:c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
Listener controleren
Gebruik SQL Server Management Studio of Transact-SQL om te bevestigen dat uw DNN-listener is gemaakt.
SQL Server Management Studio
Vouw listeners voor beschikbaarheidsgroepen uit in SQL Server Management Studio (SSMS) om uw DNN-listener weer te geven:
Transact-SQL
Gebruik Transact-SQL om de status van de DNN-listener weer te geven:
SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS
Een waarde van 1
voor is_distributed_network_name
geeft aan dat de listener een DNN-listener (Distributed Network Name) is:
Verbindingsreeks bijwerken
Werk de verbindingsreeks bij voor elke toepassing die verbinding moet maken met de DNN-listener. De verbindingsreeks met de DNN-listener moet het DNN-poortnummer opgeven en opgeven MultiSubnetFailover=True
in de verbindingsreeks. Als de SQL-client de MultiSubnetFailover=True
parameter niet ondersteunt, is deze niet compatibel met een DNN-listener.
Hier volgt een voorbeeld van een verbindingsreeks voor de naam van de listener DNN_Listener en poort 6789:
DataSource=DNN_Listener,6789;MultiSubnetFailover=True
Testfailover
Test failover van de beschikbaarheidsgroep om de functionaliteit te garanderen.
Voer de volgende stappen uit om een failover te testen:
- Maak verbinding met de DNN-listener of een van de replica's met behulp van SQL Server Management Studio (SSMS).
- Vouw AlwaysOn-beschikbaarheidsgroep uit in Objectverkenner.
- Klik met de rechtermuisknop op de beschikbaarheidsgroep en kies Failover om de wizard Failover te openen.
- Volg de aanwijzingen om een failoverdoel te kiezen en de beschikbaarheidsgroep uit te voeren naar een secundaire replica.
- Controleer of de database een gesynchroniseerde status heeft op de nieuwe primaire replica.
- (Optioneel) Failback naar de oorspronkelijke primaire of een andere secundaire replica.
Connectiviteit testen
Test de connectiviteit met uw DNN-listener met de volgende stappen:
- Open SQL Server Management Studio.
- Maak verbinding met uw DNN-listener.
- Open een nieuw queryvenster en controleer met welke replica u bent verbonden door uit te voeren
SELECT @@SERVERNAME
. - Voer een failover uit van de beschikbaarheidsgroep naar een andere replica.
- Voer na een redelijke hoeveelheid tijd
SELECT @@SERVERNAME
uit om te bevestigen dat uw beschikbaarheidsgroep nu wordt gehost op een andere replica.
Beperkingen
- DNN-listeners moeten worden geconfigureerd met een unieke poort. De poort kan niet worden gedeeld met een andere verbinding op een replica.
- De client die verbinding maakt met de DNN-listener, moet de
MultiSubnetFailover=True
parameter in de verbindingsreeks ondersteunen. - Er zijn mogelijk extra overwegingen wanneer u met andere SQL Server-functies en een beschikbaarheidsgroep met een DNN werkt. Zie AG met DNN-interoperabiliteit voor meer informatie.
Overwegingen voor poorten
DNN-listeners zijn ontworpen om te luisteren op alle IP-adressen, maar op een specifieke, unieke poort. De DNS-vermelding voor de listenernaam moet worden omgezet in de adressen van alle replica's in de beschikbaarheidsgroep. Dit wordt automatisch gedaan met het PowerShell-script dat is opgegeven in de sectie Script maken. Aangezien DNN-listeners verbindingen accepteren op alle IP-adressen, is het essentieel dat de listenerpoort uniek is en niet wordt gebruikt door een andere replica in de beschikbaarheidsgroep. Omdat SQL Server standaard luistert op poort 1433, hetzij rechtstreeks of via de SQL Browser-service, wordt het gebruik van poort 1433 voor de DNN-listener sterk afgeraden.
Als de listenerpoort voor de VNN-listener tussen 49.152 en 65.536 ligt (het standaard dynamische poortbereik voor TCP/IP, voegt u hiervoor een uitsluiting toe. Hierdoor wordt voorkomen dat andere systemen dynamisch dezelfde poort worden toegewezen.
U kunt een poortuitsluiting toevoegen met de volgende opdracht: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent
Volgende stappen
Zodra de beschikbaarheidsgroep is geïmplementeerd, kunt u overwegen om de HADR-instellingen voor SQL Server op Azure-VM's te optimaliseren.
Raadpleeg voor meer informatie: