Configurare un listener DNN per un gruppo di disponibilità

Si applica a: SQL Server nella macchina virtuale di Azure

Suggerimento

Eliminare la necessità di un nome di rete distribuita per il gruppo di disponibilità Always On creando le macchine virtuali SQL Server in più subnet all'interno della stessa rete virtuale di Azure.

Con SQL Server in macchine virtuali di Azure in una singola subnet, il nome di rete distribuita instrada il traffico alla risorsa cluster appropriata. Offre un modo più semplice per connettersi a un gruppo di disponibilità di Always On rispetto al listener VNN (Virtual Network Name), senza la necessità di un Azure Load Balancer.

Questo articolo illustra come configurare un listener DNN per sostituire il listener VNN e instradare il traffico al gruppo di disponibilità con SQL Server in macchine virtuali di Azure per la disponibilità elevata e il ripristino di emergenza (HADR).

Per un'opzione di connettività alternativa, prendere in considerazione un listener VNN e Azure Load Balancer.

Panoramica

Un listener DNN (Distributed Network Name) sostituisce il listener del gruppo di disponibilità VNN (Virtual Network Name) tradizionale quando usato con i gruppi di disponibilità Always On nelle macchine virtuali SQL Server. Ciò nega la necessità di un Azure Load Balancer di instradare il traffico, semplificare la distribuzione, la manutenzione e migliorare il failover.

Usare il listener di DNN per sostituire un listener di VNN esistente o in alternativa usarlo in combinazione con un listener di VNN esistente in modo che il gruppo di disponibilità abbia due punti di connessione distinti, uno che usa il nome del listener di VNN (e la porta se non predefinita) e l'altro che usa il nome e la porta del listener di DNN.

Attenzione

Il comportamento di routing quando si usa un DNN è diverso quando si usa una rete virtuale. Non usare la porta 1433. Per altre informazioni, vedere la sezione Considerazioni sulla porta più avanti in questo articolo.

Prerequisiti

Per poter completare la procedura descritta in questo articolo, è necessario disporre di:

Crea script

Usare PowerShell per creare la risorsa DNN (Distributed Network Name) e associarla al gruppo di disponibilità.

A questo scopo, attenersi alla procedura seguente:

  1. Aprire un editor di testo, come Blocco note.

  2. Copiare e incollare lo script seguente:

    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. Salvare lo script come .ps1 file, ad esempio add_dnn_listener.ps1.

Eseguire lo script

Per creare il listener DNN, eseguire lo script passando parametri per il nome del gruppo di disponibilità, il nome del listener e la porta.

Ad esempio, supponendo che il nome di un gruppo di disponibilità sia ag1, il nome del listener della dnnlsnrporta e il listener come 6789, seguire questa procedura:

  1. Aprire uno strumento di interfaccia della riga di comando, ad esempio il prompt dei comandi o PowerShell.

  2. Passare alla posizione in cui è stato salvato lo .ps1 script, ad esempio c:\Documents.

  3. Eseguire lo script: add_dnn_listener.ps1 <ag name> <listener-name> <listener port>. Ad esempio:

    c:\Documents> add_dnn_listener.ps1 ag1 dnnlsnr 6789
    

Verificare il listener

Usare SQL Server Management Studio o Transact-SQL per verificare che il listener DNN sia stato creato correttamente.

SQL Server Management Studio

Espandere Listener del gruppo di disponibilità in SQL Server Management Studio (SSMS) per visualizzare il listener DNN:

Visualizzare il listener DNN nei listener del gruppo di disponibilità in SQL Server Management Studio (SSMS)

Transact-SQL

Usare Transact-SQL per visualizzare lo stato del listener DNN:

SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS

Un valore per 1is_distributed_network_name indica che il listener è un listener DNN (Distributed Network Name):

Usare sys.availability_group_listeners per identificare i listener DNN con valore 1 in is_distributed_network_name

Aggiornare la stringa di connessione

Aggiornare la stringa di connessione per qualsiasi applicazione che deve connettersi al listener DNN. La stringa di connessione al listener DNN deve fornire il numero di porta DNN e specificare MultiSubnetFailover=True nella stringa di connessione. Se il client SQL non supporta il MultiSubnetFailover=True parametro , non è compatibile con un listener DNN.

Di seguito è riportato un esempio di stringa di connessione per il nome del listener DNN_Listener e la porta 6789:

DataSource=DNN_Listener,6789,MultiSubnetFailover=True

Failover di test

Testare il failover del gruppo di disponibilità per garantire la funzionalità.

Per testare il failover, seguire questa procedura:

  1. Connettersi al listener DNN o a una delle repliche usando SQL Server Management Studio (SSMS).
  2. Espandere Always On gruppo di disponibilità in Esplora oggetti.
  3. Fare clic con il pulsante destro del mouse sul gruppo di disponibilità e scegliere Failover per aprire la Procedura guidata failover.
  4. Seguire le istruzioni per scegliere una destinazione di failover ed eseguire il failover del gruppo di disponibilità su una replica secondaria.
  5. Verificare che il database sia in uno stato sincronizzato nella nuova replica primaria.
  6. (Facoltativo) Eseguire il failback nella replica primaria originale o in un'altra replica secondaria.

Testare la connettività

Testare la connettività al listener DNN con questi passaggi:

  1. Aprire SQL Server Management Studio.
  2. Connettersi al listener DNN.
  3. Aprire una nuova finestra di query e verificare a quale replica si è connessi eseguendo SELECT @@SERVERNAME.
  4. Eseguire il failover del gruppo di disponibilità in un'altra replica.
  5. Dopo un periodo di tempo ragionevole, eseguire SELECT @@SERVERNAME per verificare che il gruppo di disponibilità sia ora ospitato in un'altra replica.

Limitazioni

  • I listener DNN devono essere configurati con una porta univoca. La porta non può essere condivisa con nessun'altra connessione in alcuna replica.
  • Il client che si connette al listener DNN deve supportare il MultiSubnetFailover=True parametro nella stringa di connessione.
  • Quando si usano altre funzionalità di SQL Server e un gruppo di disponibilità con una rete neurale neurale del database, potrebbero essere necessarie altre considerazioni. Per altre informazioni, vedere Gruppo di disponibilità con interoperabilità DNN.

Considerazioni sulle porte

I listener DNN sono progettati per l'ascolto su tutti gli indirizzi IP, ma su una porta specifica e univoca. La voce DNS per il nome del listener deve essere risolta negli indirizzi di tutte le repliche nel gruppo di disponibilità. Questa operazione viene eseguita automaticamente con lo script di PowerShell fornito nella sezione Crea script . Poiché i listener DNN accettano connessioni su tutti gli indirizzi IP, è fondamentale che la porta del listener sia univoca e non usata da altre repliche nel gruppo di disponibilità. Poiché SQL Server è in ascolto sulla porta 1433 per impostazione predefinita, direttamente o tramite il servizio SQL Browser, l'uso della porta 1433 per il listener DNN è fortemente sconsigliato.

Se la porta del listener scelta per il listener VNN è compresa tra 49.152 e 65.536 ( l'intervallo di porte dinamiche predefinito per TCP/IP, aggiungere un'esclusione per questo. In questo modo, gli altri sistemi non verranno assegnati dinamicamente alla stessa porta.

È possibile aggiungere un'esclusione di porta con il comando seguente: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent

Passaggi successivi

Dopo aver distribuito il gruppo di disponibilità, valutare la possibilità di ottimizzare le impostazioni hadr per SQL Server nelle macchine virtuali di Azure.

Per altre informazioni, vedere: