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 bilanciamento del 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 dell'istanza del gruppo di disponibilità a SQL Server in VM 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 in Azure che eseguono SQL Server 2016 (o superiore) Enterprise Edition aggiunte al dominio, che si trovano nella stessa zona di disponibilità o set di disponibilità e che sono registrate con l'estensione SQL IaaS SQL.
- Un Azure Load Balancer interno e un indirizzo IP disponibile (non usato da alcuna entità): per il listener del gruppo di disponibilità all'interno della 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, tra cui versione, edizione, nome di dominio completo, account Active Directory per gestire sia il cluster sia l'istanza di SQL Server e l'account di archiviazione come cloud di controllo.
L'aggiunta delle macchine virtuali di SQL Server al gruppo di risorse SqlVirtualMachineGroups esegue il bootstrap del servizio Cluster di failover di Windows per creare il cluster e quindi aggiunge 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:
Andare 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.
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 vuole includere nel gruppo di disponibilità e che faranno 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, selezionare l'ID nell'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 con l'autorizzazione Crea oggetti computer nel dominio quando viene creato il CNO 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 cloud di controllo) Nuovo account di archiviazione di Azure che verrà creato e usato per il cloud di controllo. È 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 posizione elementi) Questo campo viene lasciato intenzionalmente vuoto. 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.
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 server di controllo del disco è l'opzione quorum più resiliente, richiede un disco condiviso di Azure che impone alcune limitazioni al gruppo di disponibilità. Di conseguenza, il cloud di controllo è la soluzione quorum consigliata per i cluster che ospitano gruppi di disponibilità per SQL Server in VM 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é il cluster sia supportato da Microsoft, deve superare la convalida del cluster. Connettersi alla macchina virtuale usando il metodo preferito, ad esempio Remote Desktop Protocol (RDP) e 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 usando Gestione cluster di failover (FCM) o il seguente comando di PowerShell:
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 in questo momento perché non viene eseguito automaticamente dal modello di avvio rapido 101-sql-vm-aglistener-setup 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 si desidera usare un DNN, ignorare i passaggi dell'esercitazione 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 bilanciamento del carico interno specifica un indirizzo IP "mobile" per il listener del gruppo di disponibilità che consente la riconnessione e il failover 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.
È necessario creare solo il servizio di 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.
Nel portale di Azure, aprire il gruppo di risorse contenente le macchine virtuali di SQL Server.
Nel gruppo di risorse selezionare Aggiungi.
Cercare servizio di bilanciamento del carico. Nei risultati della ricerca selezionare Bilanciamento del carico, pubblicato da Microsoft.
Nel pannello Bilanciamento del carico, selezionare Crea.
Bella 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. Type 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 della 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 di 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. 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 il servizio di bilanciamento del carico interno usando il modello di avvio rapido 101-sql-vm-aglistener-setup. Il modello effettua il provisioning della 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 probe 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 questa procedura:
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.
Compilare i campi obbligatori per configurare il servizio di bilanciamento del 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. Listener Port (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 (IP listener) 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 probe Porta probe che deve essere usata dal servizio di bilanciamento del carico interno. Il modello usa 59999 per impostazione predefinita, ma è possibile modificare questo valore. 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.
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. ed 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 back-end elenchi il set di disponibilità e che esistano regole per il probe di integrità e per le regole di bilanciamento del carico. Se non è presente alcun elemento, la configurazione del servizio di bilanciamento del carico interno è 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 dal provider di risorse della macchina virtuale di SQL. 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 non viene eseguita la migrazione di un utente locale come primo account di amministratore di dominio quando il server viene alzato di livello 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:
Nel controller di dominio aprire la finestra Utenti e computer di Active Directory dall'opzione Strumenti in Server Manager.
Andare all'account selezionando Utenti nel riquadro sinistro.
Fare clic con il pulsante destro del mouse sull'account e selezionare Proprietà.
Selezionare la scheda Account. Se la casella Nome accesso utente è vuota, questo è il motivo dell'errore.
Compilare la casella Nome accesso utente corrispondente al nome dell'utente e quindi selezionare il dominio appropriato nell'elenco a discesa.
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: