Configurare Azure Load Balancer per un'istanza VNN del cluster di failover

Si applica a: SQL Server nella macchina virtuale di Azure

Suggerimento

Eliminare la necessità di un Azure Load Balancer per l'istanza del cluster di failover 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 nome della rete virtuale (VNN) usato dalla risorsa cluster in Azure.

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 all'istanza del cluster di failover 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 SQL Server CU2 2019 e versioni successive, considerare invece un nome di rete distribuito 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 fcI 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 dell'indirizzo IP del cluster di rete 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 dell'istanza di fci 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 l'istanza del cluster di failover. Aggiungere solo l'indirizzo IP primario di ogni macchina virtuale, non aggiungere alcun indirizzo IP secondario.

  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.

Impostare le regole di bilanciamento del carico per il servizio di bilanciamento del carico privato seguendo questa procedura:

  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 dell'interfaccia di rete SQL Server fcI.
    • 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 = "<SQL Server FCI 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.
SQL Server FCI IP Address Resource Name Nome della risorsa per l'indirizzo IP dell'istanza di SQL Server. In Gestione cluster di failover>Ruoli fare clic con il pulsante destro del mouse sulla risorsa indirizzo IP sotto Nome server nel ruolo dell'istanza del cluster di failover di SQL Server e quindi scegliere Proprietà. Il valore corretto è riportato in Nome nella scheda Generale.
ILBIP Indirizzo IP del servizio di bilanciamento del carico interno (ILB). Questo indirizzo è configurato nell'portale di Azure come indirizzo front-end del servizio app. Si tratta anche dell'indirizzo IP dell'istanza di fci SQL Server. È riportato in Gestione cluster di failover nella stessa pagina delle proprietà in cui si trova <SQL Server FCI/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à al failover.

Usare PowerShell per modificare le impostazioni RegisterAllProvidersIp e HostRecordTTL:

Get-ClusterResource yourFCIname | Set-ClusterParameter RegisterAllProvidersIP 0  
Get-ClusterResource yourFCIname | 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. Connettersi a uno dei nodi del cluster SQL Server usando RDP.
  2. Aprire Gestione cluster di failover. Selezionare Ruoli. Rilevare quale nodo è proprietario del ruolo dell'istanza del cluster di failover di SQL Server.
  3. Fare clic con il pulsante destro del mouse sul ruolo dell'istanza del cluster di failover di SQL Server.
  4. Selezionare Sposta e quindi selezionare Miglior nodo possibile.

In Gestione cluster di failover viene visualizzato il ruolo e le relative risorse passano alla modalità offline. Le risorse vengono quindi spostate e portate di nuovo online nell'altro nodo.

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 nome dell'istanza del cluster di failover di SQL Server.

Nota

Se necessario, è possibile scaricare SQL Server Management Studio.

Passaggi successivi

Per altre informazioni, vedere: