Delen via


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:

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:

  1. Open een teksteditor zoals Kladblok.

  2. 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
    
  3. Sla het script op als een .ps1 bestand, zoals add_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, ag1de naam van de listener van dnnlsnren de listenerpoort 6789:

  1. Open een opdrachtregelinterfaceprogramma, zoals de opdrachtprompt of PowerShell.

  2. Navigeer naar de locatie waar u het .ps1 script hebt opgeslagen, zoals c:\Documents.

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

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

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:

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

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:

  1. Maak verbinding met de DNN-listener of een van de replica's met behulp van SQL Server Management Studio (SSMS).
  2. Vouw AlwaysOn-beschikbaarheidsgroep uit in Objectverkenner.
  3. Klik met de rechtermuisknop op de beschikbaarheidsgroep en kies Failover om de wizard Failover te openen.
  4. Volg de aanwijzingen om een failoverdoel te kiezen en de beschikbaarheidsgroep uit te voeren naar een secundaire replica.
  5. Controleer of de database een gesynchroniseerde status heeft op de nieuwe primaire replica.
  6. (Optioneel) Failback naar de oorspronkelijke primaire of een andere secundaire replica.

Connectiviteit testen

Test de connectiviteit met uw DNN-listener met de volgende stappen:

  1. Open SQL Server Management Studio.
  2. Maak verbinding met uw DNN-listener.
  3. Open een nieuw queryvenster en controleer met welke replica u bent verbonden door uit te voeren SELECT @@SERVERNAME.
  4. Voer een failover uit van de beschikbaarheidsgroep naar een andere replica.
  5. 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: