Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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, i cluster utilizzano un servizio di bilanciamento del carico per gestire un indirizzo IP che deve essere presente su un solo 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à 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à di SQL Server in macchine virtuali 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:
- Si è deciso che Azure Load Balancer è l'opzione di connettività appropriata per il gruppo di disponibilità.
- Installare la versione più recente di PowerShell.
Creare un servizio di bilanciamento del carico
È possibile creare uno di questi tipi di sistemi di bilanciamento del carico:
Interno: solo le risorse private possono accedere a un servizio di bilanciamento del carico interno. 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 bilanciatore di carico esterno instrada il traffico da risorse pubbliche a 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.
Nota
Il servizio di bilanciamento del carico "Basic" è stato disattivato. Per le nuove distribuzioni, utilizzare il Load Balancer nella configurazione Standard. Se si dispone di una distribuzione esistente che usa il servizio di bilanciamento del carico Basic, eseguire l'aggiornamento al servizio di bilanciamento del carico Standard.
Per creare il servizio di bilanciamento del carico:
Nel portale di Azure, passare al gruppo di risorse contenente le macchine virtuali.
Selezionare Aggiungi. Cerca bilanciamento del carico in Azure Marketplace. Selezionare Bilanciamento del carico.
Seleziona Crea.
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.
Selezionare Avanti: Configurazione IP front-end.
Selezionare Aggiungi una configurazione IP front-end.
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.
Selezionare Aggiungi per creare l'indirizzo IP front-end.
Seleziona Rivedi e crea per creare il servizio di bilanciamento del carico.
Configurare un pool back-end
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 il Load Balancer.
Selezionare pool di backend e poi + Aggiungi.
Inserisci un nome per il pool backend in Nome.
Per Configurazione del pool backend, selezionare NIC.
Selezionare Aggiungi per associare il pool back-end con il set di disponibilità contenente le VM.
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.
Selezionare Aggiungi per aggiungere le VM al pool back-end.
Selezionare Salva per creare il pool back-end.
Configurare una sonda di integrità del sistema
Nel riquadro dedicato al load balancer, selezionare Probe di integrità.
In Aggiungi sonda di integrità , impostare i seguenti parametri:
- Nome: nome della sonda di integrità.
- Protocollo: TCP.
- Porta: La porta che hai creato nel firewall per la sonda di integrità. In questo articolo, l'esempio usa la porta TCP 59999.
- Intervallo: 5 secondi.
Selezionare Aggiungi.
Impostare le regole di bilanciamento del carico
Nel riquadro dedicato al Load Balancer, selezionare Regole di bilanciamento del carico.
Selezionare Aggiungi.
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 backend: la stessa porta del valore di Porta quando si abilita Floating IP (Direct Server Return).
- Probe di integrità: il probe di integrità configurato in precedenza.
- Persistenza della sessione: Nessuno.
- Timeout di inattività (minuti): 4.
- IP flottante (ritorno diretto del server): Abilitato.
Seleziona Salva.
Configurare una sonda di cluster
Impostare il parametro della porta della sonda del cluster in PowerShell.
Aggiornare le variabili del seguente script con i valori dell'ambiente in uso. Rimuovere le parentesi angolari (< e >).
$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 AG. 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, e selezionare Proprietà. Il valore corretto è riportato in Nome nella scheda Generale. |
ILBIP |
L'indirizzo IP del Load Balancer interno. Questo indirizzo è configurato nel portale di Azure come indirizzo frontend del bilanciatore di carico interno. Si tratta dello stesso indirizzo IP del listener del gruppo di disponibilità. Puoi trovarlo in Gestione cluster di failover, nella stessa pagina delle proprietà in cui si trova il valore per IPResourceName. |
ProbePort |
La porta della sonda che hai configurato nella sonda di integrità del 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 fino a quando non si porta la risorsa indirizzo IP offline e la si porta di nuovo online. 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
Configurare l'esclusione delle porte
Quando si usa una porta probe di integrità compresa tra 49.152 e 65.536 ( intervallo di porte dinamiche predefinito per TCP/IP), aggiungere un'esclusione per ogni porta probe di integrità in ogni macchina virtuale.
La configurazione dell'esclusione delle porte impedisce ad altri processi di sistema di assegnare dinamicamente la stessa porta nella macchina virtuale.
Per impostare un'esclusione di porta in ogni macchina virtuale per ogni porta probe di integrità, usare lo script di PowerShell seguente:
[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer. Any unused TCP port is valid.
netsh int ipv4 add excludedportrange tcp startport=$ProbePort numberofports=1 store=persistent
Per verificare che le esclusioni siano state configurate correttamente, usare il comando seguente:
netsh int ipv4 show excludedportrange tcp
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, offre il vantaggio di un failover della subnet più rapido. Questo vantaggio è dovuto al fatto che il driver client tenta 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, consultare la documentazione sul timeout della connessione del listener in SQL Server.
Suggerimento
- Impostare il patametro
MultiSubnetFailoversutruenella 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, i client memorizzano nella cache i 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'impostazioneHostRecordTTLpotrebbe aumentare il traffico verso i server DNS.
Failover di test
Testare il failover della risorsa in cluster per convalidare le funzionalità del cluster:
- Apri SQL Server Management Studio e connettiti al listener del gruppo di disponibilità.
- Espandere Gruppo di disponibilità AlwaysOn in Esplora oggetti.
- Fare clic con il pulsante destro del mouse sul gruppo di disponibilità e selezionare Failover.
- Attenersi alle istruzioni della procedura guidata per eseguire il passaggio del gruppo di disponibilità a 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
Installare la versione più recente di SQL Server Management Studio (SSMS).
Passaggi successivi
Dopo aver creato la rete virtuale, prendere in considerazione l'ottimizzazione delle impostazioni del cluster per le macchine virtuali di SQL Server.
Per ulteriori informazioni, vedere: