Konfigurera en DNN-lyssnare för en tillgänglighetsgrupp
Gäller för:SQL Server på en virtuell Azure-dator
Dricks
Det finns många metoder för att distribuera en tillgänglighetsgrupp. Förenkla distributionen och eliminera behovet av en Azure Load Balancer eller ett distribuerat nätverksnamn (DNN) för din AlwaysOn-tillgänglighetsgrupp genom att skapa dina virtuella SQL Server-datorer i flera undernät i samma virtuella Azure-nätverk. Om du redan har skapat tillgänglighetsgruppen i ett enda undernät kan du migrera den till en miljö med flera undernät.
Med SQL Server på virtuella Azure-datorer i ett enda undernät dirigerar det distribuerade nätverksnamnet (DNN) trafik till lämplig klustrad resurs. Det är ett enklare sätt att ansluta till en AlwaysOn-tillgänglighetsgrupp (AG) än VNN-lyssnaren (virtual network name), utan att du behöver en Azure Load Balancer.
I den här artikeln lär du dig att konfigurera en DNN-lyssnare för att ersätta VNN-lyssnaren och dirigera trafik till din tillgänglighetsgrupp med SQL Server på virtuella Azure-datorer för hög tillgänglighet och haveriberedskap (HADR).
Om du vill ha ett alternativt anslutningsalternativ bör du överväga en VNN-lyssnare och Azure Load Balancer i stället.
Översikt
En DNN-lyssnare (distribuerat nätverksnamn) ersätter den traditionella VNN-tillgänglighetsgruppen (VNN) när den används med AlwaysOn-tillgänglighetsgrupper på virtuella SQL Server-datorer. Detta förhindrar behovet av att en Azure Load Balancer dirigerar trafik, förenklar distribution, underhåll och förbättrar redundansväxlingen.
Använd DNN-lyssnaren för att ersätta en befintlig VNN-lyssnare, eller alternativt använda den tillsammans med en befintlig VNN-lyssnare så att tillgänglighetsgruppen har två distinkta anslutningspunkter – en med VNN-lyssnarens namn (och port om den inte är standard) och en som använder DNN-lyssnarens namn och port.
Försiktighet
Routningsbeteendet när du använder ett DNN skiljer sig när du använder ett VNN. Använd inte port 1433. Mer information finns i avsnittet Portövervägande senare i den här artikeln.
Förutsättningar
Innan du slutför stegen i den här artikeln bör du redan ha:
- SQL Server börjar med antingen SQL Server 2019 CU8 och senare, SQL Server 2017 CU25 och senare, eller SQL Server 2016 SP3 och senare i Windows Server 2016 och senare.
- Beslutade att det distribuerade nätverksnamnet är lämpligt anslutningsalternativ för din HADR-lösning.
- Konfigurerade tillgänglighetsgruppen AlwaysOn.
- Den senaste versionen av PowerShell har installerats.
- Identifierade den unika port som du ska använda för DNN-lyssnaren. Porten som används för en DNN-lyssnare måste vara unik för alla repliker av tillgänglighetsgruppen eller redundansklusterinstansen. Ingen annan anslutning kan dela samma port.
Skapa skript
Använd PowerShell för att skapa DNN-resursen (distribuerat nätverksnamn) och associera den med din tillgänglighetsgrupp.
Följ stegen nedan:
Öppna en textredigerare, till exempel Anteckningar.
Kopiera och klistra in följande skript:
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
Spara skriptet som en
.ps1
fil, till exempeladd_dnn_listener.ps1
.
Kör skript
Om du vill skapa DNN-lyssnaren kör du skriptet som skickar in parametrar för namnet på tillgänglighetsgruppen, lyssnarnamnet och porten.
Anta till exempel att ett namn på ag1
tillgänglighetsgruppen , lyssnarens dnnlsnr
namn på och lyssnarporten som 6789
, följer dessa steg:
Öppna ett kommandoradsgränssnittsverktyg, till exempel kommandotolken eller PowerShell.
Navigera till platsen där du sparade skriptet
.ps1
, till exempel c:\Documents.Kör skriptet:
add_dnn_listener.ps1 <ag name> <listener-name> <listener port>
. Som exempel:c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
Verifiera lyssnaren
Använd antingen SQL Server Management Studio eller Transact-SQL för att bekräfta att DNN-lyssnaren har skapats.
SQL Server Management Studio
Expandera Tillgänglighetsgrupplyssnare i SQL Server Management Studio (SSMS) för att visa DNN-lyssnaren:
Transact-SQL
Använd Transact-SQL för att visa status för DNN-lyssnaren:
SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS
Värdet 1
för för is_distributed_network_name
anger att lyssnaren är en DNN-lyssnare (distribuerat nätverksnamn):
Uppdatera anslutningssträng
Uppdatera anslutningssträngen för alla program som behöver ansluta till DNN-lyssnaren. Anslutningssträngen till DNN-lyssnaren måste ange DNN-portnumret och ange MultiSubnetFailover=True
i anslutningssträngen. Om SQL-klienten inte stöder parametern MultiSubnetFailover=True
är den inte kompatibel med en DNN-lyssnare.
Följande är ett exempel på en anslutningssträng för lyssnarnamnet DNN_Listener och port 6789:
DataSource=DNN_Listener,6789;MultiSubnetFailover=True
Redundanstest
Testa redundans för tillgänglighetsgruppen för att säkerställa funktionalitet.
Följ dessa steg för att testa redundans:
- Anslut till DNN-lyssnaren eller någon av replikerna med hjälp av SQL Server Management Studio (SSMS).
- Expandera AlwaysOn-tillgänglighetsgrupp i Object Explorer.
- Högerklicka på tillgänglighetsgruppen och välj Redundans för att öppna redundansguiden.
- Följ anvisningarna för att välja ett redundansmål och redundansväxla tillgänglighetsgruppen till en sekundär replik.
- Bekräfta att databasen är i ett synkroniserat tillstånd på den nya primära repliken.
- (Valfritt) Växla tillbaka till den ursprungliga primära eller en annan sekundär replik.
Testa anslutning
Testa anslutningen till DNN-lyssnaren med följande steg:
- Öppna SQL Server Management Studio.
- Anslut till DNN-lyssnaren.
- Öppna ett nytt frågefönster och kontrollera vilken replik du är ansluten till genom att köra
SELECT @@SERVERNAME
. - Redundansväxla tillgänglighetsgruppen till en annan replik.
- Efter en rimlig tid kör du
SELECT @@SERVERNAME
för att bekräfta att din tillgänglighetsgrupp nu finns på en annan replik.
Begränsningar
- DNN-lyssnare MÅSTE konfigureras med en unik port. Porten kan inte delas med någon annan anslutning på någon replik.
- Klienten som ansluter till DNN-lyssnaren måste ha stöd för parametern
MultiSubnetFailover=True
i anslutningssträngen. - Det kan finnas ytterligare överväganden när du arbetar med andra SQL Server-funktioner och en tillgänglighetsgrupp med ett DNN. Mer information finns i AG med DNN-samverkan.
Portöverväganden
DNN-lyssnare är utformade för att lyssna på alla IP-adresser, men på en specifik, unik port. DNS-posten för lyssnarnamnet ska matcha adresserna för alla repliker i tillgänglighetsgruppen. Detta görs automatiskt med PowerShell-skriptet i avsnittet Skapa skript . Eftersom DNN-lyssnare accepterar anslutningar på alla IP-adresser är det viktigt att lyssnarporten är unik och inte används av någon annan replik i tillgänglighetsgruppen. Eftersom SQL Server lyssnar på port 1433 som standard, antingen direkt eller via SQL Browser-tjänsten, rekommenderas starkt att använda port 1433 för DNN-lyssnaren.
Om lyssnarporten som valts för VNN-lyssnaren är mellan 49 152 och 65 536 (standardintervallet för dynamisk port för TCP/IP, lägger du till ett undantag för detta. Detta förhindrar att andra system tilldelas samma port dynamiskt.
Du kan lägga till ett portundantag med följande kommando: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent
Nästa steg
När tillgänglighetsgruppen har distribuerats bör du överväga att optimera HADR-inställningarna för SQL Server på virtuella Azure-datorer.
Du kan läsa mer här: