Condividi tramite


Usare modelli di avvio rapido di Azure per configurare un gruppo di disponibilità per SQL Server in una macchina virtuale 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.

Questo articolo descrive come usare i modelli di avvio rapido di Azure per automatizzare parzialmente la distribuzione di una configurazione di gruppo di disponibilità Always On per macchine virtuali di SQL Server all'interno di una singola subnet in Azure. In questo processo vengono usati due modelli di avvio rapido di Azure:

Modello Descrizione
sql-vm-ag-setup Crea il cluster di failover di Windows e vi aggiunge le VM di SQL Server.
sql-vm-aglistener-setup Crea il listener del gruppo di disponibilità e configura il bilanciatore di carico interno. Questo modello può essere usato solo se il cluster di failover Windows è stato creato con il modello 101-sql-vm-ag-setup.

Altre parti della configurazione del gruppo di disponibilità devono essere eseguite manualmente, ad esempio la creazione del gruppo di disponibilità e del bilanciamento del carico interno. Questo articolo illustra la sequenza dei passaggi automatizzati e manuali.

Sebbene questo articolo usi i modelli di avvio rapido di Azure per configurare l'ambiente del gruppo di disponibilità, è anche possibile farlo usando il portale di Azure, PowerShell o l'interfaccia della riga di comando di Azure oppure anche manualmente.

Nota

È ora possibile trasferire in modalità lift-and-shift la soluzione per il gruppo di disponibilità su SQL Server su macchine virtuali di Azure usando Azure Migrate. Per altre informazioni, vedere Eseguire la migrazione di un gruppo di disponibilità.

Prerequisiti

Per automatizzare la configurazione di un gruppo di disponibilità Always On usando i modelli di avvio rapido sono necessari i prerequisiti seguenti:

  • Una sottoscrizione di Azure.
  • Un gruppo di risorse con un controller di dominio.
  • Una o più macchine virtuali aggiunte al dominio in Azure che eseguono SQL Server 2016 (o superiore) Enterprise Edition, che si trovano nella stessa zona di disponibilità o set di disponibilità e che sono registrate con l'estensione SQL IaaS Agent.
  • Un Azure Load Balancer interno e un indirizzo IP disponibile (non usato da alcuna entità) per il listener del gruppo di disponibilità nella stessa subnet della VM di SQL Server.

Autorizzazioni

Per configurare il gruppo di disponibilità Always On usando i modelli di avvio rapido di Azure, sono necessarie le autorizzazioni seguenti:

  • Un account utente di dominio esistente con l'autorizzazione Crea oggetti computer nel dominio. Un account amministratore di dominio ha in genere autorizzazioni sufficienti, ad esempio: account@domain.com. Questo account deve anche fare parte del gruppo degli amministratori locali in ogni macchina virtuale per creare il cluster.
  • L'account utente di dominio che controlla SQL Server.

Creare cluster

Dopo aver registrato le VM di SQL Server con l'estensione SQL IaaS Agent, è possibile aggiungere tali macchine virtuali in SqlVirtualMachineGroups. Questa risorsa definisce i metadati del cluster di failover di Windows, I metadati includono la versione, l'edizione, il nome di dominio completo, gli account di Active Directory per gestire sia il cluster che SQL Server, e l'account di archiviazione come testimone nel cloud.

L'aggiunta delle macchine virtuali di SQL Server al gruppo di risorse SqlVirtualMachineGroups inizializza il servizio Cluster di failover di Windows per creare il cluster e unire le macchine virtuali di SQL Server a tale cluster. Questo passaggio viene automatizzato con il modello di avvio rapido 101-sql-vm-ag-setup. È possibile procedere con l'implementazione seguendo questa procedura:

  1. Vai al modello di avvio rapido sql-vm-ag-setup. Selezionare quindi Distribuisci in Azure per aprire il modello di avvio rapido nel portale di Azure.

  2. Compilare i campi obbligatori per configurare i metadati del cluster di failover di Windows. È possibile lasciare vuoti i campi facoltativi.

    La tabella seguente mostra i valori necessari per il modello:

    Campo Valore
    Abbonamento Sottoscrizione in cui si trovano le VM di SQL Server.
    Gruppo di risorse Gruppo di risorse in cui si trovano le VM di SQL Server.
    Failover Cluster Name (Nome cluster di failover) Nome che si vuole usare per il nuovo cluster di failover di Windows.
    Existing Vm List (Elenco VM esistenti) VM di SQL Server che si desidera far partecipare al gruppo di disponibilità e che saranno parte di questo nuovo cluster. Separare i valori con una virgola e uno spazio, ad esempio: SQLVM1, SQLVM2.
    SQL Server Version (Versione di SQL Server) Versione di SQL Server delle VM di SQL Server, Selezionalo dall'elenco a discesa. Solo le immagini di SQL Server 2016 e SQL Server 2017 sono attualmente supportate.
    Existing Fully Qualified Domain Name (Nome di dominio completo esistente) FQDN esistente per il dominio in cui si trovano le VM di SQL Server.
    Existing Domain Account (Account di dominio esistente) Un account utente di dominio esistente che dispone dell'autorizzazione Crea oggetto computer nel dominio è necessario poiché il CNO viene creato durante la distribuzione del modello. Un account amministratore di dominio ha in genere autorizzazioni sufficienti, ad esempio: account@domain.com. Questo account deve anche fare parte del gruppo degli amministratori locali in ogni macchina virtuale per creare il cluster.
    Domain Account Password (Password account di dominio) Password dell'account utente di dominio indicato in precedenza.
    Existing Sql Service Account (Account del servizio SQL Server esistente) Account utente di dominio che controlla il servizio SQL Server durante la distribuzione del gruppo di disponibilità, ad esempio account@domain.com.
    Sql Service Password (Password del servizio SQL) Password dell'account utente di dominio che controlla SQL Server.
    Cloud Witness Name (Nome del Cloud Witness) Un nuovo account di archiviazione di Azure che verrà creato e usato per il testimone cloud. È possibile modificare questo nome.
    _artifacts Location (Posizione elementi) Questo campo è impostato per impostazione predefinita e non deve essere modificato.
    _artifacts Location SaS Token (Token di firma di accesso condiviso per la posizione degli artefatti) Questo campo viene lasciato intenzionalmente vuoto.
  3. Qualora si accettino le Condizioni, selezionare la casella di controllo Accetto le condizioni riportate sopra. Quindi selezionare Acquista per completare la distribuzione del modello di avvio rapido.

  4. Per monitorare la distribuzione, selezionare la distribuzione dall'icona a forma di campanello Notifiche nel banner di spostamento superiore o passare a Gruppo di risorse nel portale di Azure. Selezionare Distribuzioni in Impostazioni e scegliere la distribuzione Microsoft.Template.

Nota

Le credenziali specificate durante la distribuzione del modello vengono archiviate solo per la durata della distribuzione. Al termine della distribuzione, le password vengono rimosse. Se si aggiungono altre VM di SQL Server al cluster, verrà richiesto di fornirle nuovamente.

Configurare il quorum

Anche se il testimone del disco è l'opzione quorum più resiliente, richiede un disco condiviso di Azure che comporta alcune limitazioni per il gruppo di disponibilità. Di conseguenza, il cloud witness è la soluzione quorum consigliata per i cluster che ospitano gruppi di disponibilità per SQL Server nelle macchine virtuali di Azure.

Se si dispone di un numero pari di votazioni nel cluster, configurare la soluzione quorum più adatta alle proprie esigenze aziendali. Per altre informazioni, vedere Quorum con VM di SQL Server.

Convalidare cluster

Affinché un cluster di failover sia supportato da Microsoft, deve superare la validazione del cluster. Connettersi alla macchina virtuale usando il metodo preferito, ad esempio Bastione verificare che il cluster superi la convalida prima di continuare. In caso contrario, il cluster rimane in uno stato non supportato.

È possibile convalidare il cluster utilizzando la Gestione Cluster di Failover (FCM) o attraverso il comando PowerShell seguente:

Test-Cluster –Node ("<node1>","<node2>") –Include "Inventory", "Network", "System Configuration"

Creare un gruppo di disponibilità

Creare manualmente il gruppo di disponibilità come di consueto, usando SQL Server Management Studio, PowerShell o Transact-SQL.

Importante

Non creare un listener ora, perché il modello di avvio rapido 101-sql-vm-aglistener-setup lo farà automaticamente nel passaggio 4.

Creare un servizio di bilanciamento del carico

Nota

Le distribuzioni dei gruppi di disponibilità in più subnet non richiedono un bilanciamento del carico. In un ambiente con subnet singola, i clienti che usano SQL Server 2019 CU8 e versioni successive in Windows 2016 e versioni successive possono sostituire il tradizionale listener di VNN e Azure Load Balancer con un listener del nome di rete distribuito (DNN). Se vuoi utilizzare un DNN, ignora i passaggi del tutorial per configurare Azure Load Balancer per il gruppo di disponibilità.

Il listener del gruppo di disponibilità Always On richiede un'istanza interna di Azure Load Balancer. Il bilanciatore di carico interno fornisce un indirizzo IP "fluttuante" per il listener del gruppo di disponibilità che consente un failover e una riconnessione più rapidi. Se le VM di SQL Server in un gruppo di disponibilità fanno parte dello stesso set di disponibilità, è possibile usare Load Balancer Basic. In caso contrario, è necessario usare Load Balancer Standard.

Importante

Il servizio di bilanciamento del carico interno deve trovarsi nella stessa rete virtuale delle istanze di VM SQL Server.

Occorre solo creare il bilanciamento del carico interno. Nel passaggio 4 il modello di avvio rapido 101-sql-vm-aglistener-setup gestisce il resto della configurazione, ad esempio il pool back-end, il probe di integrità e le regole di bilanciamento del carico.

  1. Nel portale di Azure, aprire il gruppo di risorse contenente le macchine virtuali di SQL Server.

  2. Nel gruppo di risorse selezionare Aggiungi.

  3. Cerca servizio di bilanciamento del carico. Nei risultati della ricerca selezionare Bilanciamento del carico, pubblicato da Microsoft.

  4. Nel pannello Bilanciamento del carico, selezionare Crea.

  5. Nella finestra di dialogo Crea servizio di bilanciamento del carico, configurare il servizio di bilanciamento del carico come segue:

    Impostazione Valore
    Nome Immettere un nome di testo che rappresenti il bilanciamento del carico. Immettere ad esempio sqlLB.
    Tipo Interno: la maggior parte delle implementazioni usano un servizio di bilanciamento del carico interno, che consente alle applicazioni all'interno della stessa rete virtuale di connettersi al gruppo di disponibilità.
    Esterno: consente alle applicazioni di connettersi al gruppo di disponibilità tramite una connessione Internet pubblica.
    Rete virtuale Selezionare la rete virtuale in cui si trovano le istanze di SQL Server.
    Subnet Selezionare la subnet in cui si trovano le istanze di SQL Server.
    Assegnazione indirizzi IP Statico
    Indirizzo IP privato Specificare un indirizzo IP disponibile dalla subnet.
    Abbonamento Se si hanno più sottoscrizioni, può essere visualizzato questo campo. Selezionare la sottoscrizione da associare a questa risorsa. In genere è la stessa sottoscrizione come per tutte le risorse del gruppo di disponibilità.
    Gruppo di risorse Selezionare il gruppo di risorse in cui si trovano le istanze di SQL Server.
    Location Selezionare il percorso di Azure in cui si trovano le istanze di SQL Server.
  6. Seleziona Crea.

Importante

La risorsa IP pubblico per ogni VM di SQL Server deve avere uno SKU Standard per essere compatibile con Load Balancer Standard. Per determinare lo SKU della risorsa IP pubblico della VM, andare a Gruppo di risorse, selezionare la risorsa Indirizzo IP pubblico per la VM di SQL Server e individuare il valore in SKU nel pannello Panoramica.

Creare un listener

Creare il listener del gruppo di disponibilità e configurare automaticamente il servizio di bilanciamento del carico interno usando il modello di avvio rapido 101-sql-vm-aglistener-setup. Il modello presenta la risorsa Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/AvailabilityGroupListener. Il modello di avvio rapido101-sql-vm-aglistener-setup, tramite l'estensione SQL Iaas Agent, esegue le azioni seguenti:

  • Crea una nuova risorsa IP front-end (in base al valore di indirizzo IP specificato durante la distribuzione) per il listener.
  • Configura le impostazioni di rete per il cluster e il servizio di bilanciamento del carico interno.
  • Configura il pool back-end per il servizio di bilanciamento del carico interno, il controllo di integrità e le regole di bilanciamento del carico.
  • Crea il listener del gruppo di disponibilità con il nome e l'indirizzo IP specificati.

Nota

È possibile usare il modello 101-sql-vm-aglistener-setup solo se il cluster di failover Windows è stato creato con il modello 101-sql-vm-ag-setup.

Per configurare il servizio di bilanciamento del carico interno e creare il listener del gruppo di disponibilità, seguire i seguenti passaggi:

  1. Andare al modello di avvio rapido sql-vm-aglistener-setup e selezionare Distribuisci in Azure per avviare il modello di avvio rapido nel portale di Azure.

  2. Compilare i campi obbligatori per configurare il bilanciatore di carico interno e creare il listener del gruppo di disponibilità. È possibile lasciare vuoti i campi facoltativi.

    La tabella seguente mostra i valori necessari per il modello:

    Campo Valore
    Gruppo di risorse Gruppo di risorse in cui si trovano le VM di SQL Server e il gruppo di disponibilità.
    Existing Failover Cluster Name (Nome cluster di failover esistente) Nome del cluster a cui sono aggiunte le VM di SQL Server.
    Existing Sql Availability Group (Gruppo di disponibilità SQL esistente) Nome del gruppo di disponibilità di cui fanno parte le VM di SQL Server
    Existing Vm List (Elenco VM esistenti) Nomi delle VM di SQL Server che fanno parte del gruppo di disponibilità indicato in precedenza. Separare i nomi con una virgola e uno spazio, ad esempio: SQLVM1, SQLVM2.
    Listener Nome DNS da assegnare al listener. Per impostazione predefinita, questo modello specifica il nome "aglistener", ma il valore può essere modificato. Il nome non deve superare i 15 caratteri.
    Porta listener Porta da usare per il listener. In genere, questa porta deve essere impostata sul valore predefinito 1433, ovvero il numero di porta specificato dal modello. Tuttavia, se la porta predefinita è stata modificata, è necessario impostare la porta del listener sul valore corrispondente.
    Listener IP Indirizzo IP che si vuole usare per il listener. Questo indirizzo verrà creato durante la distribuzione del modello, quindi specificarne uno che non è già in uso.
    Existing Subnet (Subnet esistente) Nome della subnet interna delle VM di SQL Server, ad esempio: default. È possibile determinare questo valore andando a Gruppo di risorse, selezionando la rete virtuale, selezionando Subnet nel riquadro Impostazioni e quindi copiando il valore in Nome.
    Existing Internal Load Balancer (Servizio di bilanciamento del carico interno esistente) Nome del servizio di bilanciamento del carico interno creato nel passaggio 3.
    Porta di sonda La porta del probe che si desidera venga utilizzata dal bilanciatore di carico interno. Il modello usa 59999 per impostazione predefinita, ma è possibile modificare questo valore.
  3. Qualora si accettino le Condizioni, selezionare la casella di controllo Accetto le condizioni riportate sopra. Selezionare Acquista per completare la distribuzione del modello di avvio rapido.

  4. Per monitorare la distribuzione, selezionare la distribuzione dall'icona a forma di campanello Notifiche nel banner di spostamento superiore o passare a Gruppo di risorse nel portale di Azure. Selezionare Distribuzioni in Impostazioni e scegliere la distribuzione Microsoft.Template.

Nota

Se la distribuzione si interrompe a metà, sarà necessario rimuovere il listener appena creato manualmente tramite PowerShell prima di ridistribuire il modello di avvio rapido 101-sql-vm-aglistener-setup.

Rimuovere un listener

Se in un secondo momento è necessario rimuovere il listener del gruppo di disponibilità configurato dal modello, è necessario utilizzare l'estensione SQL IaaS Agent. Poiché il listener è stato registrato tramite l'estensione SQL IaaS Agent, eliminarlo semplicemente tramite SQL Server Management Studio non è sufficiente.

Il metodo migliore consiste nell'eliminarlo tramite l'estensione IaaS Agent, usando il frammento di codice seguente in PowerShell. Questa operazione rimuove i metadati del listener del gruppo di disponibilità dall'estensione SQL IaaS Agent. Anche elimina fisicamente il listener dal gruppo di disponibilità.

# Remove the availability group listener
# example: Remove-AzResource -ResourceId '/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/SQLAG-RG/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/Cluster/availabilitygrouplisteners/aglistener' -Force
Remove-AzResource -ResourceId '/subscriptions/<SubscriptionID>/resourceGroups/<resource-group-name>/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/<cluster-name>/availabilitygrouplisteners/<listener-name>' -Force

Errori comuni

Questa sezione descrive alcuni problemi noti e le possibili risoluzioni.

Il listener del gruppo di disponibilità per il gruppo di disponibilità <AG-Name> esiste già. Il gruppo di disponibilità selezionato, usato nel modello di avvio rapido di Azure per il listener del gruppo di disponibilità contiene già un listener. È presente fisicamente all'interno del gruppo di disponibilità oppure i relativi metadati rimangono all'interno dell'estensione SQL Iaas Agent. Rimuovere il listener usando PowerShell prima di ridistribuire il modello di avvio rapido 101-sql-vm-aglistener-setup.

La connessione funziona solo dalla replica primaria. Questo comportamento è probabilmente causato da una distribuzione non riuscita del modello 101-sql-vm-aglistener-setup, che ha lasciato la configurazione del servizio di bilanciamento del carico interno in uno stato incoerente. Verificare che il pool di back-end elenchi il set di disponibilità e che esistano regole per la sonda di integrità e per il bilanciamento del carico. Se manca qualcosa, la configurazione del servizio di bilanciamento del carico interno è in uno stato incoerente.

Per risolvere questo problema, rimuovere il listener usando PowerShell, eliminare il servizio di bilanciamento del carico interno tramite il portale di Azure e ricominciare dal Passaggio 3.

BadRequest: è possibile aggiornare solo l'elenco di macchine virtuali SQL Questo errore può verificarsi quando si distribuisce il modello 101-sql-vm-aglistener-setup se il listener è stato eliminato tramite SQL Server Management Studio (SSMS), ma non è stato eliminato dall'estensione SQL IaaS Agent. L'eliminazione del listener tramite SSMS non comporta la rimozione dei metadati del listener dall'estensione SQL IaaS Agent. Il listener deve essere eliminato dal provider di risorse tramite PowerShell.

L'account di dominio non esiste Questo errore può avere due cause. L'account di dominio specificato non esiste o mancano i dati del nome dell'entità utente (UPN). Il modello 101-sql-vm-ag-setup prevede un account di dominio nel formato UPN, ad esempio user@domain.com, ma potrebbe mancare in alcuni account di dominio. Ciò si verifica in genere quando un utente locale viene migrato per diventare il primo account amministratore di dominio quando il server viene promosso a controller di dominio, o quando un utente viene creato tramite PowerShell.

Verificare che l'account esista. Se esiste, potrebbe trattarsi del secondo caso. Per risolvere il problema, seguire questa procedura:

  1. Nel controller di dominio aprire la finestra Utenti e computer di Active Directory dall'opzione Strumenti in Server Manager.

  2. Andare all'account selezionando Utenti nel riquadro sinistro.

  3. Fare clic con il pulsante destro del mouse sull'account e selezionare Proprietà.

  4. Selezionare la scheda Account. Se la casella Nome accesso utente è vuota, questo è il motivo dell'errore.

    Un account utente vuoto indica un UPN mancante

  5. Compilare la casella Nome accesso utente corrispondente al nome dell'utente e quindi selezionare il dominio appropriato nell'elenco a discesa.

  6. Selezionare Applica per salvare le modifiche e chiudere la finestra di dialogo selezionando OK.

Dopo aver apportato queste modifiche, provare a distribuire il modello di avvio rapido di Azure ancora una volta.

Passaggi successivi

Per ulteriori informazioni, vedere: