Configurare un servizio di bilanciamento del carico di Azure per un nome di rete virtuale (VNN) dell'istanza del cluster di failover - SQL Server in macchine virtuali di Azure

Si applica a:SQL Server su VM di 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 Load Balancer contiene l'indirizzo IP per il nome di rete virtuale (VNN) usato dalla risorsa cluster in Azure.

Questo articolo illustra come configurare un sistema di bilanciamento del carico usando il servizio Azure Load Balancer. Il servizio di bilanciamento del carico instrada il traffico all'istanza del cluster di failover con SQL Server in Vm di Azure per la disponibilità elevata e il ripristino di emergenza (HADR).

Per un'opzione di connettività alternativa per SQL Server 2019 CU2 e versioni successive, prendere in considerazione invece un nome di rete distribuito (DNN). Un 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 sistemi 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 Load Balancer interno e le relative regole, usare l'indirizzo IP dell'istanza del cluster di failover come indirizzo IP front-end.

  • Esterno: un sistema di bilanciamento del carico esterno può instradare il traffico dal pubblico alle risorse interne. Quando si configura un Load Balancer esterno, non è possibile usare un indirizzo IP pubblico come l'indirizzo IP dell'istanza del cluster di failover.

    Per usare un Load Balancer esterno, allocare logicamente un indirizzo IP nella stessa subnet dell'istanza del cluster di failover che non è in conflitto con qualsiasi altro indirizzo IP. Usare questo indirizzo come indirizzo IP front-end per le regole di bilanciamento del carico.

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 Load Balancer, nella scheda Informazioni di base configurare il Load Balancer 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 interno è accessibile dalla rete virtuale. La maggior parte delle applicazioni Azure può usare un Load Balancer 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 front-end IP configuration.

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

    • 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 front-end IP address.

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

  9. Scegliere Rivedi + Crea per creare il Load Balancer.

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 l'istanza del cluster di failover.

    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à quando si prepara la VM. 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 del seguente script 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 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 dell'istanza del cluster di failover 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 L'indirizzo IP del servizio Load Balancer interno. Questo indirizzo è configurato nel portale di Azure come indirizzo front-end del Load Balancer interno. È anche l'indirizzo IP dell'istanza del cluster di failover di SQL Server. È riportato in Gestione cluster di failover, nella stessa pagina delle proprietà in cui si trova il valore per IPResourceName.
ProbePort La porta del probe configurata nel probe di integrità del Load Balancer. È 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.

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 MultiSubnetFailover parametro, è 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 yourFCIname | Set-ClusterParameter RegisterAllProvidersIP 0  
Get-ClusterResource yourFCIname | Set-ClusterParameter HostRecordTTL 300 

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

Suggerimento

  • Impostare il patametro MultiSubnetFailover 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. Connettersi a uno dei nodi del cluster di SQL Server usando Remote Desktop Protocol (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.

Gestione cluster di failover visualizza 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: