Dela via


Konfigurera en DNN-lyssnare för en tillgänglighetsgrupp

Gäller för:SQL Server på en virtuell Azure-dator

Tips/Råd

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 ger ett enklare sätt att ansluta till en Always On-tillgänglighetsgrupp (AG) än en VNN-lyssnare (virtuellt nätverksnamn), utan behov av 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 distribuerad nätverksnamnlyssnare (DNN) ersätter den traditionella virtuella nätverksnamnlyssnaren (VNN) när den används med Always On tillgänglighetsgrupper på virtuella SQL Server-datorer. Den här konfigurationen eliminerar behovet av att en Azure Load Balancer dirigerar trafik, förenklar distribution, underhåll och förbättrar failover.

Använd DNN-lyssnaren för att ersätta en befintlig VNN-lyssnare. Du kan också använda den tillsammans med en befintlig VNN-lyssnare så att tillgänglighetsgruppen har två distinkta anslutningspunkter – en med VNN-lyssnarnamnet (och porten om den inte är standard) och en med 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:

Anmärkning

Varje tillgänglighetsgrupp eller redundansklusterinstans i samma kluster behöver en egen oberoende anslutningspunkt, oavsett om det är en VNN-lyssnare eller en DNN-lyssnare.

Skapa skript

Använd PowerShell för att skapa DNN-resursen (distribuerat nätverksnamn) och associera den med din tillgänglighetsgrupp.

Gör det genom att följa dessa steg:

  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"
    
    # restart 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 tillgänglighetsgruppen heter ag1, att lyssnaren heter dnnlsnr och att lyssnarporten är 6789. Följ 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>. Till 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:

Visa DNN-lyssnaren under tillgänglighetsgrupplyssnare i 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):

Använd sys.availability_group_listeners för att identifiera DNN-lyssnare som har värdet 1 i 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

Testa övergång till reservsystem

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 växlningsmål och växla över en tillgänglighetsgrupp 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 kopia.

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. Växla över 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 replika.

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 fler ö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 (Domain Name System) för lyssnarnamnet ska matcha adresserna för alla repliker i tillgänglighetsgruppen. Den här konfigurationen 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, avråds det starkt från 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 den här porten. 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