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 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 in macchine virtuali di Azure per la disponibilità elevata e il ripristino di emergenza .

Per un'opzione di connettività alternativa per i clienti che si trovano in SQL Server 2019 CU8 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 eseguito 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'indirizzo 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à perché 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 nessun 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 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.
    • SKU: Standard.
    • Tipo: pubblico o interno. È possibile accedere a un servizio di bilanciamento del carico interno dall'interno della 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.

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

    Screenshot della pagina di portale di Azure, crea Load Balancer

  5. Selezionare Avanti: Configurazione IP front-end

  6. Selezionare Aggiungi una configurazione IP front-end

    Screenshot di portale di Azure, con l'aggiunta di una configurazione IP front-end selezionata.

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

    • Nome: nome che identifica la configurazione IP front-end
    • Rete virtuale: la stessa rete delle macchine virtuali.
    • Subnet: subnet come macchine virtuali.
    • Assegnazione indirizzo IP: statico.
    • Indirizzo IP privato: indirizzo IP assegnato alla risorsa di rete in cluster.
    • Zona di disponibilità: facoltativamente scegliere e zona di disponibilità in cui distribuire l'indirizzo IP.

    L'immagine seguente mostra l'interfaccia utente Aggiungi configurazione IP front-end :

    Screenshot di portale di Azure, aggiungere una pagina di configurazione IP front-end.

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

  9. Scegliere Rivedi e crea per creare il servizio di bilanciamento del carico e l'INDIRIZZO IP front-end.

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. Specificare un nome per il pool back-end.

  4. Selezionare NIC per Configurazione pool back-end.

  5. Selezionare Aggiungi per associare il pool back-end al set di disponibilità che contiene le macchine virtuali.

  6. In Macchina virtuale scegliere le macchine virtuali che parteciperanno come nodi del cluster. Assicurarsi di includere tutte le macchine virtuali che ospiteranno l'istanza del cluster di failover. Aggiungere solo l'indirizzo IP primario di ogni macchina virtuale, non aggiungere indirizzi IP secondari.

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

  8. Selezionare Salva 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. 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: la 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.
  3. Selezionare Aggiungi.

Impostare le 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: l'indirizzo IP impostato durante la configurazione dell'indirizzo IP front-end.
    • Pool back-end: selezionare il pool back-end contenente 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: scegliere TCP.
    • Porta: SQL Server porta TCP. La porta predefinita dell'istanza è 1433.
    • Porta back-end: la stessa porta del valore della porta quando si abilita l'indirizzo IP mobile (direct server return).
    • 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 Salva.

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. Sebbene l'opzione di connessione MultiSubnetFailover non sia necessaria, offre il vantaggio di un failover della subnet più veloce. 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: