Configurare un'istanza di Azure load balancer per un listener VNN del gruppo di disponibilità - SQL Server in macchine virtuali di Azure

Si applica a:SQL Server su VM Azure

Suggerimento

Esistono molti metodi per distribuire un gruppo di disponibilità. Semplificare la distribuzione ed eliminare la necessità di un servizio di Azure Load Balancer o di un nome di rete distribuito (DNN) per il gruppo di disponibilità AlwaysOn creando le macchine virtuali (VM) di SQL Server in più subnet all'interno della stessa rete virtuale di Azure. Se il gruppo di disponibilità è già stato creato in una singola subnet, è possibile eseguirne la migrazione a un ambiente con più subnet.

Nelle macchine virtuali di Azure, per contenere un indirizzo IP che deve trovarsi in un nodo del cluster alla volta viene usato nei cluster un servizio di bilanciamento del carico. In questa soluzione, il servizio di bilanciamento del carico contiene l'indirizzo IP per il listener VNN (Virtual Network Name) per il gruppo di disponibilità AlwaysOn quando le macchine virtuali di SQL Server si trovano in una singola subnet.

Questo articolo illustra come configurare un servizio di bilanciamento del carico usando il servizio Azure Load Balancer. Il servizio di bilanciamento del carico instrada il traffico al listener del 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 per i clienti che si trovano in SQL Server 2019 CU8 e versioni successive, prendere in considerazione invece un listener DNN (Distributed Network Name). Un listener DNN offre una configurazione semplificata e un failover migliorato.

Prerequisiti

Per poter completare la procedura descritta in questo articolo, sono necessari:

Creare un servizio di bilanciamento del carico

È possibile creare uno di questi tipi di servizi di bilanciamento del carico:

  • Interno: è possibile accedere a un servizio di bilanciamento del carico interno solo da risorse private interne alla rete. Quando si configura un servizio di bilanciamento del carico interno e le relative regole, usare lo stesso indirizzo IP del listener del gruppo di disponibilità per l'indirizzo IP front-end.

  • Esterno: un servizio di bilanciamento del carico esterno può instradare il traffico dal pubblico alle risorse interne. Quando si configura un servizio di bilanciamento del carico esterno, non è possibile usare lo stesso indirizzo IP del listener del gruppo di disponibilità perché l'indirizzo IP del listener non può essere un indirizzo IP pubblico.

    Per usare un servizio di bilanciamento del carico esterno, allocare logicamente un indirizzo IP nella stessa subnet del gruppo di disponibilità che non è in conflitto con altri indirizzi IP. Usare questo indirizzo come indirizzo IP front-end per le regole di bilanciamento del carico.

Importante

Il 30 settembre 2025, lo SKU Basic per Azure Load Balancer verrà ritirato. Per altre informazioni, consultare l'annuncio ufficiale. Se attualmente si usa Load Balancer Basic, eseguire l'aggiornamento a Load Balancer Standard prima della data di ritiro. Per indicazioni, vedere Aggiornare Load Balancer.

Per creare il servizio di bilanciamento del carico:

  1. Nel portale di Azure, passare al gruppo di risorse contenente le macchine virtuali.

  2. Selezionare Aggiungi. Cercare Bilanciamento del carico in Azure Marketplace. Selezionare Bilanciamento del carico.

  3. Seleziona Crea.

  4. In ‭Crea servizio di bilanciamento del carico nella scheda ‬Informazioni di base‭, configurare il servizio di bilanciamento del carico usando i valori seguenti:

    • Sottoscrizione: sottoscrizione di Azure.
    • Gruppo di risorse: il gruppo di risorse contenente le macchine virtuali.
    • Nome: un nome che identifichi il servizio di bilanciamento del carico.
    • Località: la località di Azure contenente le macchine virtuali.
    • SKU: Standard.
    • Tipo: Pubblico o Privato. Un servizio di bilanciamento del carico privato è accessibile dalla rete virtuale. La maggior parte delle applicazioni Azure può usare un servizio di bilanciamento del carico interno. Se l'applicazione deve accedere a SQL Server direttamente tramite Internet, usare un servizio di bilanciamento del carico pubblico.
    • Livello: A livello di area.

    Screenshot of the Azure portal that shows the page for basic information about a load balancer.

  5. Selezionare Avanti: Configurazione IP front-end.

  6. Selezionare Aggiungi una configurazione IP front-end.

    Screenshot of the Azure portal that shows the button for adding a frontend IP configuration.

  7. Configurare l'indirizzo IP front-end usando i valori seguenti:

    • Nome: Un nome che identifica la configurazione IP front-end.
    • Rete virtuale: La stessa rete delle macchine virtuali.
    • Subnet: la stessa subnet delle macchine virtuali.
    • Assegnazione: Statica.
    • Indirizzo IP: lo stesso indirizzo IP assegnato alla risorsa di rete cluster.
    • Zona di disponibilità: zona di disponibilità facoltativa in cui implementare l'indirizzo IP.

    Screenshot of the Azure portal that shows the page for configuring a frontend IP address.

  8. Selezionare Aggiungi per creare l'indirizzo IP front-end.

  9. Seleziona Rivedi e crea per creare il servizio di bilanciamento del carico.

Configurare un pool back-end

  1. Tornare al gruppo di risorse di Azure contenente le macchine virtuali e individuare il nuovo servizio di bilanciamento del carico. Potrebbe essere necessario aggiornare la visualizzazione del gruppo di risorse. Selezionare l'istanza di Load Balancer.

  2. Selezionare Pool back-end e quindi + Aggiungi.

  3. In Nome, specificare un nome per il pool back-end.

  4. Per Configurazione pool back-end, selezionare NIC.

  5. Selezionare Aggiungi per associare il pool back-end con il set di disponibilità contenente le VM.

  6. In Macchine virtuali, selezionare le macchine virtuali che parteciperanno come nodi del cluster. Assicurarsi di includere tutte le macchine virtuali che ospiteranno il gruppo di disponibilità.

    Aggiungere solo l'indirizzo IP primario di ogni VM. Non aggiungere indirizzi IP secondari.

  7. Selezionare Aggiungi per aggiungere le VM al pool back-end.

  8. Selezionare Salva per creare il pool back-end.

Configurare un probe di integrità

  1. Nel riquadro dedicato al Load Balancer, selezionare Probe di integrità.

  2. Nel pannello Aggiungi probe di integrità impostare i parametri seguenti:

    • Nome: nome del probe di integrità.
    • Protocollo: TCP.
    • Porta: La porta creata nel firewall per il probe di integrità. In questo articolo, l'esempio usa la porta TCP 59999.
    • Intervallo: 5 secondi.
  3. Selezionare Aggiungi.

Impostare le regole di bilanciamento del carico

  1. Nel riquadro dedicato al Load Balancer, selezionare Regole di bilanciamento del carico.

  2. Selezionare Aggiungi.

  3. Impostare questi parametri:

    • Nome: Un nome per le regole di bilanciamento del carico.
    • Indirizzo IP front-end: L'indirizzo IP impostato durante la configurazione del front-end.
    • Pool back-end: Il pool back-end che contiene le macchine virtuali destinate al servizio di bilanciamento del carico.
    • Porte a disponibilità elevata: Abilita il bilanciamento del carico su tutte le porte per i protocolli TCP e UDP.
    • Protocollo: TCP.
    • Porta: La porta TCP di SQL Server. Il valore predefinito è 1433.
    • Porta back-end: la stessa porta inserita come valore in Porta quando si abilita IP mobile (Direct Server Return).
    • Probe di integrità: usare il probe di integrità configurato in precedenza.
    • Salvataggio permanente sessione: Nessuno.
    • Timeout di inattività (minuti): 4.
    • IP mobile (Direct Server Return): Abilitato.
  4. Seleziona Salva.

Configurare un cluster per il probe

Impostare il parametro della porta probe del cluster in PowerShell.

Aggiornare le variabili dello script seguente con i valori dell'ambiente in uso. Rimuovere le parentesi acute (< e >) dallo script.

$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<AG Listener IP Address Resource Name>" 
$ILBIP = "<n.n.n.n>" 
[int]$ProbePort = <nnnnn>

Import-Module FailoverClusters

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

La tabella seguente offre una descrizione dei valori da aggiornare:

Variabile valore
ClusterNetworkName Il nome del cluster di failover di Windows Server per la rete. In Gestione cluster di failover>Reti, fare clic con il pulsante destro del mouse sulla rete e scegliere Proprietà. Il valore corretto è riportato in Nome nella scheda Generale.
IPResourceName Il nome della risorsa per l'indirizzo IP del listener del gruppo di disponibilità. In Gestione cluster di failover>Ruoli, nel ruolo del gruppo di disponibilità, in Nome server, fare clic con il pulsante destro del mouse sulla risorsa indirizzo IP selezionare Proprietà. Il valore corretto è riportato in Nome nella scheda Generale.
ILBIP L'indirizzo IP del servizio Load Balancer interno. Questo indirizzo è configurato nel portale di Azure come indirizzo Load Balancer interno front-end. Si tratta dello stesso indirizzo IP del listener del gruppo di disponibilità. È riportato in Gestione cluster di failover, nella stessa pagina delle proprietà in cui si trova il valore per IPResourceName.
ProbePort La porta probe configurata nel probe di integrità del servizio di bilanciamento del carico. È valida qualsiasi porta TCP inutilizzata.
SubnetMask La subnet mask per il parametro del cluster. Deve essere l'indirizzo di broadcast TCP/IP: 255.255.255.255.

Le modifiche apportate non diventano effettive finché la risorsa indirizzo IP non viene portata offline e portata online di nuovo. Eseguire un failover del gruppo di disponibilità per rendere effettiva questa modifica. Dopo aver configurato il probe del cluster, è possibile visualizzare tutti i parametri del cluster in PowerShell. Eseguire questo script:

Get-ClusterResource $IPResourceName | Get-ClusterParameter

Modificare la stringa di connessione

Per i client che lo supportano, aggiungere MultiSubnetFailover=True alla stringa di connessione. Sebbene l'opzione di connessione MultiSubnetFailover non sia obbligatoria, accelera il failover su subnet. Il driver client tenta infatti di aprire un socket TCP per ogni indirizzo IP in parallelo. Il driver client attende che il primo indirizzo IP risponda con esito positivo. Al termine della risposta, il driver client usa tale indirizzo IP per la connessione.

Se il client non supporta il parametro MultiSubnetFailover, è possibile modificare le impostazioni RegisterAllProvidersIP e HostRecordTTL per evitare ritardi di connettività dopo il failover.

Usare PowerShell per modificare le impostazioni RegisterAllProvidersIp e HostRecordTTL:

Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0  
Get-ClusterResource yourListenerName|Set-ClusterParameter HostRecordTTL 300 

Per altre informazioni, vedere la documentazione sul timeout della connessione del listener in SQL Server.

Suggerimento

  • Impostare MultiSubnetFailover parameter su true nella stringa di connessione, anche per le soluzioni HADR che si estendono su una singola subnet. Questa impostazione supporta l'estensione futura delle subnet senza la necessità di aggiornare le stringhe di connessione.
  • Per impostazione predefinita, tramite i client vengono memorizzati nella cache record DNS del cluster per 20 minuti. Riducendo HostRecordTTL, si riduce il tempo di durata (TTL) per il record memorizzato nella cache. I client legacy possono quindi riconnettersi più rapidamente. Di conseguenza, la riduzione dell'impostazione HostRecordTTL potrebbe aumentare il traffico verso i server DNS.

Failover di test

Testare il failover della risorsa in cluster per convalidare le funzionalità del cluster:

  1. Aprire SQL Server Management Studio e connettersi al listener del gruppo di disponibilità.
  2. Espandere Gruppo di disponibilità AlwaysOn in Esplora oggetti.
  3. Fare clic con il pulsante destro del mouse sul gruppo di disponibilità e selezionare Failover.
  4. Seguire le istruzioni della procedura guidata per eseguire il failover del gruppo di disponibilità in una replica secondaria.

Il failover ha esito positivo quando le repliche cambiano ruoli e sono entrambe sincronizzate.

Testare la connettività

Per testare la connettività, accedere a un'altra macchina virtuale nella stessa rete virtuale. Aprire SQL Server Management Studio e connettersi al listener del gruppo di disponibilità.

Nota

Se necessario, è possibile scaricare SQL Server Management Studio.

Passaggi successivi

Dopo aver creato la rete virtuale, valutare la possibilità di ottimizzare le impostazioni del cluster per le macchine virtuali di SQL Server.

Per altre informazioni, vedere: