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:

  1. Öppna en textredigerare, till exempel Anteckningar.

  2. 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
    
  3. Spara skriptet som en .ps1 fil, till exempel add_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å ag1tillgänglighetsgruppen , lyssnarens dnnlsnrnamn på och lyssnarporten som 6789, följer dessa steg:

  1. Öppna ett kommandoradsgränssnittsverktyg, till exempel kommandotolken eller PowerShell.

  2. Navigera till platsen där du sparade skriptet .ps1 , till exempel c:\Documents.

  3. 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:

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

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):

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

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:

  1. Anslut till DNN-lyssnaren eller någon av replikerna med hjälp av SQL Server Management Studio (SSMS).
  2. Expandera AlwaysOn-tillgänglighetsgrupp i Object Explorer.
  3. Högerklicka på tillgänglighetsgruppen och välj Redundans för att öppna redundansguiden.
  4. Följ anvisningarna för att välja ett redundansmål och redundansväxla tillgänglighetsgruppen till en sekundär replik.
  5. Bekräfta att databasen är i ett synkroniserat tillstånd på den nya primära repliken.
  6. (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:

  1. Öppna SQL Server Management Studio.
  2. Anslut till DNN-lyssnaren.
  3. Öppna ett nytt frågefönster och kontrollera vilken replik du är ansluten till genom att köra SELECT @@SERVERNAME.
  4. Redundansväxla tillgänglighetsgruppen till en annan replik.
  5. 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: