Configurare il servizio di bilanciamento del carico per il listener VNN del gruppo di disponibilità

Si applica a: SQL Server nella macchina virtuale di Azure

Suggerimento

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

In Azure Macchine virtuali i cluster usano un servizio di bilanciamento del carico per contenere un indirizzo IP che deve trovarsi in un nodo del cluster alla volta. 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à Always On (AG) quando le macchine virtuali SQL Server si trovano in una singola subnet.

Questo articolo illustra come configurare un servizio di bilanciamento del carico usando il servizio di Azure Load Balancer. Il servizio di bilanciamento del carico instrada il traffico al listener del gruppo di disponibilità con SQL Server nelle 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 cu8 2019 e versioni successive, considerare invece un listener DNN per la configurazione semplificata e il failover migliorato.

Prerequisiti

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

Creare un servizio di bilanciamento del carico

È possibile creare un servizio di bilanciamento del carico interno o un servizio di bilanciamento del carico esterno. Un servizio di bilanciamento del carico interno può essere solo da risorse private accessibili interne alla rete. 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 interno, usare lo stesso indirizzo IP della risorsa listener del gruppo di disponibilità per l'IP front-end durante la configurazione delle regole di bilanciamento del carico. Quando si configura un servizio di bilanciamento del carico esterno, non è possibile usare lo stesso indirizzo IP del listener del gruppo di disponibilità come l'indirizzo IP del listener non può essere un indirizzo IP pubblico. Di conseguenza, 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 qualsiasi altro indirizzo IP e usare questo indirizzo come indirizzo IP front-end per le regole di bilanciamento del carico.

Usare il portale di Azure 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 Azure Marketplace per Load Balancer. Selezionare Bilanciamento del carico.

  3. Selezionare Crea.

  4. Configurare il servizio di bilanciamento del carico usando i valori seguenti:

    • Sottoscrizione La sottoscrizione di Azure.
    • Gruppo di risorse: il gruppo di risorse contenente le macchine virtuali.
    • Name: un nome che identifichi il servizio di bilanciamento del carico.
    • Area: la località di Azure contenente le macchine virtuali.
    • 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 privato. Se l'applicazione deve accedere a SQL Server direttamente tramite Internet, usare un servizio di bilanciamento del carico pubblico.
    • SKU: Standard.
    • Rete virtuale: la stessa rete delle macchine virtuali.
    • Assegnazione indirizzo IP: statico.
    • Indirizzo IP privato: indirizzo IP assegnato alla risorsa di rete cluster.

    La figura seguente mostra l'interfaccia utente della pagina Crea servizio di bilanciamento del carico:

    Configurare il servizio di bilanciamento del carico

Configurare il 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. Associare il pool back-end con il set di disponibilità contenente le macchine virtuali.

  4. In Configurazioni IP della rete di destinazione selezionare MACCHINA VIRTUALE e scegliere le macchine virtuali che parteciperanno come nodi del cluster. Assicurarsi di includere tutte le macchine virtuali che ospiteranno il gruppo di disponibilità.

  5. Selezionare OK per creare il pool back-end.

Configurare il probe di integrità

  1. Nel riquadro del servizio di bilanciamento del carico selezionare Probe di integrità.

  2. Selezionare Aggiungi.

  3. Nel riquadro Aggiungi probe di integrità impostare i parametri del probe di integrità seguenti:

    • Name: un nome per il probe di integrità.
    • Protocollo: TCP.
    • Porta: porta creata nel firewall per il probe di integrità durante la preparazione della macchina virtuale. In questo articolo, l'esempio usa la porta TCP 59999.
    • Intervallo: 5 secondi.
    • Soglia non integra: 2 errori consecutivi.
  4. Selezionare OK.

Impostare regole di bilanciamento del carico

Impostare le regole di bilanciamento del carico per il servizio di bilanciamento del carico.

  1. Nel riquadro del servizio di bilanciamento del carico selezionare Regole di bilanciamento del carico.

  2. Selezionare Aggiungi.

  3. Impostare i parametri della regola di bilanciamento del carico:

    • Nome: nome per le regole di bilanciamento del carico.
    • Indirizzo IP front-end: indirizzo IP per la risorsa di rete cluster del listener del gruppo di disponibilità.
    • Porta: la porta TCP SQL Server. La porta predefinita dell'istanza è 1433.
    • Porta back-end: la stessa porta del valore della porta quando si abilita l'indirizzo IP mobile (restituito dal server diretto).
    • Pool back-end: il nome del pool back-end configurato in precedenza.
    • Probe di integrità: il probe di integrità configurato in precedenza.
    • Salvataggio permanente sessione: No.
    • Timeout di inattività (minuti) : 4.
    • IP mobile (Direct Server Return) : abilitato.
  4. Selezionare OK.

Configurare il probe del cluster

Impostare il parametro della porta probe del cluster in PowerShell.

Per impostare tale parametro, aggiornare le variabili nello script seguente con i valori dell'ambiente in uso. Rimuovere le parentesi acute (< e >) dallo script.

$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<Availability group 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 descrive i valori che è necessario aggiornare:

Valore Descrizione
Cluster Network Name 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.
AG listener IP Address Resource Name Nome della risorsa per l'indirizzo IP del listener del gruppo di disponibilità. InRuoli di Gestione> cluster di failover, nel ruolo del gruppo di disponibilità, in Nome server fare clic con il pulsante destro del mouse sulla risorsa indirizzo IP e selezionare Proprietà. Il valore corretto è riportato in Nome nella scheda Generale.
ILBIP Indirizzo IP del servizio di bilanciamento del carico interno (ILB). Questo indirizzo è configurato nella portale di Azure come indirizzo front-end del servizio di bilanciamento del carico interno. 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 <AG listener IP Address Resource Name>.
nnnnn Porta probe configurata nel probe di integrità del servizio di bilanciamento del carico. È valida qualsiasi porta TCP inutilizzata.
"SubnetMask" Subnet mask per il parametro del cluster. Deve essere l'indirizzo di trasmissione IP TCP: 255.255.255.255.

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 l'oggetto MultiSubnetFailover=True alla stringa di connessione. L'opzione di connessione MultiSubnetFailover non è obbligatoria, ma permette di accelerare il failover su subnet. Questo perché il driver client tenterà di aprire un socket TCP per ogni indirizzo IP in parallelo. Il driver client attende che il primo indirizzo IP risponda, quindi utilizza tale risposta 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 del timeout della connessione del listener SQL Server.

Suggerimento

  • Impostare il parametro MultiSubnetFailover = true nella stringa di connessione anche per le soluzioni HADR che si estendono su una singola subnet per supportare l'intervallo futuro di 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 a live (TTL) per il record memorizzato nella cache, i client legacy potrebbero riconnettersi più rapidamente. Di conseguenza, la riduzione dell'impostazione HostRecordTTL può comportare un aumento del traffico ai server DNS.

Failover di test

Eseguire il test del failover della risorsa cluster per convalidare la funzionalità del cluster.

Seguire questa procedura:

  1. Aprire SQL Server Management Studio) e connettersi al listener del gruppo di disponibilità.
  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.
  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 entrambi sincronizzati.

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 l'ottimizzazione delle impostazioni del cluster per le macchine virtuali SQL Server.

Per altre informazioni, vedere: