Configura un'infrastruttura Multi-AZ per SQL Server Always On FCI utilizzando Amazon FSx - Prontuario AWS

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

  • Windows Server 2012 R2 e Microsoft SQL Server 2016

Architettura

Stack tecnologico di origine

  • SQL Server locale con FCI che utilizzano un'unità condivisa

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.

Architettura Multi-AZ con risorse in sottoreti pubbliche e private, con gruppi di sicurezza dei nodi.

Automazione e scalabilità

  • Puoi utilizzare AWS Systems Manager per unirti ad AWS Managed Microsoft AD ed eseguire l'installazione di SQL Server.

Strumenti

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

  • PowerShellè un programma di gestione dell'automazione e della configurazione di Microsoft che funziona su Windows, Linux e macOS. Questo modello utilizza PowerShell script.

Archivio di codice

Il codice per questo pattern è disponibile nel repository GitHub aws-windows-failover-cluster-automation.

Best practice

Epiche

AttivitàDescrizioneCompetenze richieste

Implementa lo CloudFormation stack Systems Manager.

  1. Accedi al tuo account AWS e apri la Console di gestione AWS.

  2. 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.

  3. 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.

  1. 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.

  2. 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àDescrizioneCompetenze richieste

Installa gli strumenti di Windows.

  1. 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
  2. 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:

  1. 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.

  2. 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

  3. 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).

  1. Nell'unità T su entrambi i nodi, crea e cartelle. tempdb log Le cartelle vengono utilizzate nei PowerShell comandi.

  2. 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.

  1. Nell'istanza Windows di uno dei nodi, in Strumenti di amministrazione, avvia Failover Cluster Manager.

  2. Passa a Nodes e conferma che lo stato del nodo sia Status Running.

  3. Seleziona Ruoli, apri il menu contestuale (con il pulsante destro del mouse) per SQL Server (MSSQLSERVER) e seleziona Sposta e seleziona nodo.

  4. Dopo la selezione del nodo, SQL Server dovrebbe essere in esecuzione sull'altro nodo.

DBA, ingegnere DevOps
AttivitàDescrizioneCompetenze richieste

Pulisci le risorse.

Per ripulire le risorse, utilizza il processo di eliminazione CloudFormation dello stack AWS:

  1. Apri la CloudFormation console AWS.

  2. Nella pagina Stacks, seleziona lo infra stack. Lo stack deve essere attualmente in esecuzione.

  3. Nel riquadro dei dettagli dello stack, scegliere Delete (Elimina).

  4. Selezionare Delete stack (Elimina stack) quando richiesto.

  5. 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

ProblemaSoluzione

Errore CloudFormation del modello AWS

Se il CloudFormation modello fallisce durante la distribuzione, procedi come segue:

  1. Apri la CloudFormation console AWS.

  2. Nella pagina Stacks della CloudFormation console, seleziona lo stack.

  3. Scegli Eventi e controlla lo stato dello stack.

Connessione AWS Managed Microsoft AD non riuscita

Per risolvere i problemi di iscrizione, segui questi passaggi:

  1. Aprire la console Systems Manager.

  2. Seleziona la regione di distribuzione.

  3. Nel riquadro di sinistra, scegli Automazione e individua il runbook di automazione non riuscito.

  4. Apri il runbook di automazione e verifica lo stato di esecuzione e i passaggi di esecuzione.

  5. Esamina i dettagli del passaggio non riuscito per vedere l'errore o l'errore esatto.

Risorse correlate