Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configura un'infrastruttura Multi-AZ per SQL Server Always On FCI utilizzando Amazon FSx
Creato da Manish Garg (AWS), T.V.R.L.Phani Kumar Dadi (AWS), Nishad Mankar (AWS) e RAJNEESH TYAGI (AWS)
aws-windows-failover-clusterArchivio di codice: -automation | Ambiente: PoC o pilota | Fonte: database SQL Server locale |
Obiettivo: Microsoft SQL Server su EC2 | Tipo R: Rehost | Carico di lavoro: Microsoft |
Tecnologie: migrazione; infrastruttura; DevOps | Servizi AWS: Microsoft AD gestito da AWS; Amazon EC2; Amazon FSx; AWS Systems Manager |
Riepilogo
Se è necessario migrare rapidamente un gran numero di istanze FCI (Always On Failover Cluster Instances) di Microsoft SQL Server, questo modello può aiutare a ridurre al minimo i tempi di provisioning. Utilizzando l'automazione e Amazon FSx for Windows File Server, riduce gli sforzi manuali, gli errori causati dall'uomo e il tempo necessario per implementare un gran numero di cluster.
Questo modello configura l'infrastruttura per le FCI di SQL Server in una distribuzione Multi-Availability Zone (Multi-AZ) su Amazon Web Services (AWS). Il provisioning dei servizi AWS necessari per questa infrastruttura è automatizzato utilizzando CloudFormation modelli AWS. L'installazione di SQL Server e la creazione di nodi di cluster su un'istanza Amazon Elastic Compute Cloud (Amazon EC2) vengono eseguite utilizzando comandi. PowerShell
Questa soluzione utilizza un file system Multi-AZ Amazon FSx for Windows ad alta disponibilità come testimone condiviso per l'archiviazione dei file di database SQL Server. Il file system Amazon FSx e le istanze Windows EC2 che ospitano SQL Server vengono uniti allo stesso dominio AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo
Un utente AWS con autorizzazioni sufficienti per effettuare il provisioning di risorse utilizzando modelli AWS CloudFormation
AWS Directory Service per Microsoft Active Directory
Credenziali in AWS Secrets Manager per l'autenticazione su AWS Managed Microsoft AD in una coppia chiave-valore:
ADDomainName
: <Domain Name>
ADDomainJoinUserName
: <Domain Username>
ADDomainJoinPassword
: <Domain User Password>
TargetOU
: <Target OU Value>
Nota: utilizzerai lo stesso nome chiave nell'automazione di AWS Systems Manager per l'attività di join di AWS Managed Microsoft AD.
File multimediali di SQL Server per l'installazione di SQL Server e la creazione di account di servizio o dominio Windows, che verranno utilizzati durante la creazione del cluster
Un cloud privato virtuale (VPC), con due sottoreti pubbliche in zone di disponibilità separate, due sottoreti private nelle zone di disponibilità, un gateway Internet, gateway NAT, associazioni di tabelle di percorso e un jump server
Versioni del prodotto
Architettura
Stack tecnologico di origine
Stack tecnologico Target
Istanze AWS EC2
Amazon FSx per Windows File Server
Runbook di AWS Systems Manager Automation
Configurazioni di rete (VPC, sottoreti, gateway Internet, gateway NAT, jump server, gruppi di sicurezza)
AWS Secrets Manager
AWS Managed Microsoft AD
Amazon EventBridge
AWS Identity and Access Management (IAM)
Architettura Target
Il diagramma seguente mostra un account AWS in una singola regione AWS, con un VPC che include due zone di disponibilità, due sottoreti pubbliche con gateway NAT, un jump server nella prima sottorete pubblica, due sottoreti private, ciascuna con un'istanza EC2 per un nodo SQL Server in un gruppo di sicurezza dei nodi e un file system Amazon FSx che si connette a ciascuno dei nodi SQL Server. Sono inclusi anche AWS Directory Service EventBridge, Amazon, AWS Secrets Manager e AWS Systems Manager.
Automazione e scalabilità
Servizi AWS
AWS ti CloudFormation aiuta a configurare le risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su account e regioni AWS.
AWS Directory Service offre diversi modi per utilizzare Microsoft Active Directory (AD) con altri servizi AWS come Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) per SQL Server e Amazon FSx for Windows File Server.
Amazon Elastic Compute Cloud (Amazon EC2) Elastic Compute Cloud (Amazon EC2) fornisce capacità di calcolo scalabile nel cloud AWS. Puoi avviare tutti i server virtuali di cui hai bisogno e dimensionarli rapidamente.
Amazon EventBridge è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, funzioni AWS Lambda, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altri account AWS.
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
AWS Secrets Manager ti aiuta a sostituire le credenziali codificate nel codice, comprese le password, con una chiamata API a Secrets Manager per recuperare il segreto a livello di codice.
AWS Systems Manager ti aiuta a gestire le applicazioni e l'infrastruttura in esecuzione nel cloud AWS. Semplifica la gestione delle applicazioni e delle risorse, riduce i tempi di rilevamento e risoluzione dei problemi operativi e ti aiuta a gestire le tue risorse AWS in modo sicuro su larga scala.
Altri strumenti
Archivio di codice
Il codice per questo pattern è disponibile nel repository GitHub aws-windows-failover-cluster-automation.
Best practice
Epiche
Attività | Descrizione | Competenze richieste |
---|
Implementa lo CloudFormation stack Systems Manager. | Accedi al tuo account AWS e apri la Console di gestione AWS. Vai alla CloudFormation console e crea lo CloudFormation stack Systems Manager caricando il ssm.yaml modello. Fornite i valori per i seguenti parametri: StateUnJoinAssociationLoggingBucketName— Fornisci un nome per il bucket S3 che il modello creerà per scopi di registrazione. SSMAssociationAd UnjoinName — Fornisci un nome per la risorsa. AWS::SSM::Association SSM AutomationDocumentName: fornisce un nome per il runbook Systems Manager Automation. EventBridgeName— Fornire un nome per il bus degli EventBridge eventi.
Implementa lo CloudFormation stack Systems Manager avviando il modello. ssm.yaml CloudFormation Il modello creerà il runbook Systems Manager Automation che viene avviato all'avvio di una nuova istanza EC2 con il tag. ADJoined: FSXADD L'Automation runbook aggiungerà l'istanza alla directory AWS Managed Microsoft AD.
| AWS DevOps, DevOps ingegnere |
Implementa lo stack di infrastruttura. | Dopo una corretta implementazione dello stack Systems Manager, crea lo infra stack, che include nodi di istanza EC2, gruppi di sicurezza, il file system Amazon FSx for Windows File Server e il ruolo IAM. Accedi alla CloudFormation console e avvia il modello. infra-cf.yaml Per distribuire questo stack, sono necessari i seguenti parametri: ActiveDirectoryId — ID per AWS Managed Microsoft AD
ADDnsIpAddresses1 — Indirizzo IP DNS primario di AWS Managed Microsoft AD
ADDnsIpAddresses2 — Indirizzo IP DNS secondario di AWS Managed Microsoft AD
FSxSecurityGroupName — Nome del gruppo di sicurezza Amazon FSx
FSxWindowsFileSystemName — Nome dell'unità Amazon FSx
ImageID — ID dell'immagine Windows 2012 R2 di base o Amazon Machine Image (AMI) utilizzata per creare il nodo dell'istanza di SQL Server
KeyPairName — Coppia chiave-valore da collegare ai nodi dell'istanza EC2 per l'accesso
Node1SecurityGroupName — Nome del primo gruppo di sicurezza del nodo
Node2SecurityGroupName — Nome del gruppo di sicurezza del secondo nodo
OUSecretName — Nome del segreto che contiene le informazioni di AWS Managed Microsoft AD
PrivateSubnet1 — ID della prima sottorete privata
PrivateSubnet2 — ID della seconda sottorete privata
SqlFSxFCIName — Nome del tag applicato ai nodi primari e secondari e ad Amazon FSx.
SqlFSxServerNetBIOSName1 — Nome del nodo primario dell'istanza EC2 (massimo 15 caratteri)
SqlFSxServerNetBIOSName2 — Nome del nodo secondario dell'istanza EC2 (massimo 15 caratteri)
VPC — ID VPC
WorkloadInstanceType — Tipo di istanza EC2
Implementa lo stack. infra Lo stack creerà tutti i componenti dell'infrastruttura necessari per configurare Windows SQL Server FCI. Dopo l'avvio dei nodi dell'istanza EC2, verrà richiamato il documento Systems Manager Automation per unire queste istanze a AWS Managed Microsoft AD. È possibile tenere traccia dell'avanzamento nella pagina di automazione della console Systems Manager.
| AWS DevOps, DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|
Installa gli strumenti di Windows. | Accedi all'istanza EC2 principale, che è il nodo 1. Per installare le funzionalità di Windows (Active Directory e FCI Tools), esegui lo script seguente PowerShell . Install-WindowsFeature -Name RSAT-AD-Powershell,Failover-Clustering -IncludeManagementTools
Install-WindowsFeature -Name RSAT-Clustering,RSAT-ADDS-Tools,RSAT-AD-Powershell,RSAT-DHCP,RSAT-DNS-Server
Accedi all'istanza EC2 secondaria, che è il nodo 2, ed esegui lo stesso script per abilitare le funzionalità sul nodo 2.
| AWS DevOps, DevOps ingegnere, DBA |
Preimposta gli oggetti del computer del cluster in Active Directory Domain Services. | Per preimpostare il cluster name object (CNO) in Active Directory Domain Services (AD DS) e preimpostare un oggetto computer virtuale (VCO) per un ruolo in cluster, segui le istruzioni nella documentazione di Windows Server. | AWS DevOps, DBA, DevOps ingegnere |
Crea il WSFC. | Per creare il cluster Windows Server Failover Clustering (WSFC), procedi come segue: Accedi all'istanza EC2 principale, che è il nodo 1. Per creare la condivisione di file Amazon FSx e concedere l'accesso completo all'account del servizio AD elencato, esegui il codice seguente. Invoke-Command -ComputerName "<FSx Windows Remote PowerShell Endpoint>" -ConfigurationName FSxRemoteAdmin -scriptblock {
New-FSxSmbShare -Name "SQLDB" -Path "D:\share" -Description "SQL Databases Share" -ContinuouslyAvailable $true -FolderEnumerationMode AccessBased -EncryptData $true
grant-fsxsmbshareaccess -name SQLDB -AccountName "<domain\user>" -accessRight Full
}
Questo comando creerà anche la condivisione di file a disponibilità continua (CA), ottimizzata per l'uso da parte di Microsoft SQL Server. Per creare il cluster di failover sull'istanza principale (nodo 1), esegui il comando seguente. New-Cluster -Name <CNO Name> -Node <Node1 Name>, <Node2 Name> -StaticAddress <Node1 Secondary Private IP>, <Node2 Secondary Private IP>
Il comando richiede i seguenti parametri: Name — Il nome del cluster (CNO)
Node — I nomi dei nodi primari e secondari, rispettivamente
StaticAddress — Gli indirizzi IP secondari dei nodi primario e secondario, rispettivamente
Importante: un amministratore di dominio o un utente normale deve disporre dell'autorizzazione di amministratore su entrambi i nodi per creare il cluster Windows Server Failover Clustering (WSFC). In caso contrario, il comando precedente avrà esito negativo e restituirà il messaggio,. You do not have administrator privilege on servers Dopo aver creato il cluster, esegui il comando seguente per allegare il file share witness. Set-ClusterQuorum -FileShareWitness \\<FSx Windows Remote PowerShell Endpoint>\share\witness
| AWS DevOps, DBA, DevOps ingegnere |
Installa il cluster di failover di SQL Server. | Dopo aver configurato il cluster WSFC, installa il cluster SQL Server sull'istanza principale (node1). Nell'unità T su entrambi i nodi, crea e cartelle. tempdb log Le cartelle vengono utilizzate nei PowerShell comandi. Dopo aver copiato i file multimediali di SQL Server per l'installazione di SQL Server su entrambi i nodi, esegui il PowerShell comando seguente sul nodo 1 per installare SQL Server sul nodo 1.
D:\setup.exe /Q `
/ACTION=InstallFailoverCluster `
/IACCEPTSQLSERVERLICENSETERMS `
/FEATURES="SQL,IS,BC,Conn" `
/INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server” `
/INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" `
/RSINSTALLMODE="FilesOnlyMode" `
/INSTANCEID="MSSQLSERVER" `
/INSTANCENAME="MSSQLSERVER" `
/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" `
/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>" `
/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" `
/INSTANCEDIR="C:\Program Files\Microsoft SQL Server" `
/ENU="True" `
/ERRORREPORTING=0 `
/SQMREPORTING=0 `
/SAPWD=“<Domain User password>” `
/SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" `
/SQLSYSADMINACCOUNTS="<domain\username>" `
/SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" `
/AGTSVCACCOUNT="<domain\username>" /AGTSVCPASSWORD="<Domain User password>" `
/ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>" `
/FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `
/INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server" `
/SQLUSERDBDIR="\\<FSX DNS name>\share\data" `
/SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" `
/SQLTEMPDBDIR="T:\tempdb" `
/SQLTEMPDBLOGDIR="T:\log" `
/SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" `
/SkipRules=Cluster_VerifyForErrors `
/INDICATEPROGRESS
| AWS DevOps, DBA, DevOps ingegnere |
Aggiungi un nodo secondario al cluster. | Per aggiungere SQL Server al nodo secondario (nodo 2), esegui il PowerShell comando seguente. D:\setup.exe /Q `
/ACTION=AddNode `
/IACCEPTSQLSERVERLICENSETERMS `
/INSTANCENAME="MSSQLSERVER" `
/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" `
/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" `
/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" `
/CONFIRMIPDEPENDENCYCHANGE=1 `
/SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" `
/AGTSVCACCOUNT="domain\username>" /AGTSVCPASSWORD="<Domain User password>" `
/FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `
/SkipRules=Cluster_VerifyForErrors `
/INDICATEPROGRESS
| AWS DevOps, DBA, DevOps ingegnere |
Prova la FCI di SQL Server. | Nell'istanza Windows di uno dei nodi, in Strumenti di amministrazione, avvia Failover Cluster Manager. Passa a Nodes e conferma che lo stato del nodo sia Status Running. Seleziona Ruoli, apri il menu contestuale (con il pulsante destro del mouse) per SQL Server (MSSQLSERVER) e seleziona Sposta e seleziona nodo. Dopo la selezione del nodo, SQL Server dovrebbe essere in esecuzione sull'altro nodo.
| DBA, ingegnere DevOps |
Attività | Descrizione | Competenze richieste |
---|
Pulisci le risorse. | Per ripulire le risorse, utilizza il processo di eliminazione CloudFormation dello stack AWS: Apri la CloudFormation console AWS. Nella pagina Stacks, seleziona lo infra stack. Lo stack deve essere attualmente in esecuzione. Nel riquadro dei dettagli dello stack, scegliere Delete (Elimina). Selezionare Delete stack (Elimina stack) quando richiesto. Ripeti i passaggi 2-4 per lo stack. ssm
Una volta completata l'eliminazione dello stack, gli stack saranno nello stato in cui si trova. DELETE_COMPLETE Per impostazione predefinita, gli stack nello DELETE_COMPLETE stato non vengono visualizzati nella CloudFormation console. Per visualizzare gli stack eliminati, devi modificare il filtro di visualizzazione dello stack come descritto in Visualizzazione degli stack eliminati sulla console AWS. CloudFormation Se l'eliminazione non è riuscita, uno stack sarà nello stato. DELETE_FAILED Per le soluzioni, consulta Delete stack fail nella CloudFormation documentazione. | AWS DevOps, DBA, DevOps ingegnere |
Risoluzione dei problemi
Problema | Soluzione |
---|
Errore CloudFormation del modello AWS | Se il CloudFormation modello fallisce durante la distribuzione, procedi come segue: |
Connessione AWS Managed Microsoft AD non riuscita | Per risolvere i problemi di iscrizione, segui questi passaggi: Aprire la console Systems Manager. Seleziona la regione di distribuzione. Nel riquadro di sinistra, scegli Automazione e individua il runbook di automazione non riuscito. Apri il runbook di automazione e verifica lo stato di esecuzione e i passaggi di esecuzione. Esamina i dettagli del passaggio non riuscito per vedere l'errore o l'errore esatto.
|
Risorse correlate