Configuration d'une infrastructure multi-AZ pour un SQL Server Always On FCI à l'aide d'Amazon FSx - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'une infrastructure multi-AZ pour un SQL Server Always On FCI à l'aide d'Amazon FSx

Créée par Manish Garg (AWS), T.V.R.L.Phani Kumar Dadi (AWS), Nishad Mankar (AWS) et RAJNEESH TYAGI (AWS)

Référentiel de code : aws-windows-failover-cluster -automation

Environnement : PoC ou pilote

Source : base de données SQL Server locale

Cible : Microsoft SQL Server sur EC2

Type R : Rehost

Charge de travail : Microsoft

Technologies : migration ; infrastructure ; DevOps

Services AWS : Microsoft AD géré par AWS ; Amazon EC2 ; Amazon FSx ; AWS Systems Manager

Récapitulatif

Si vous devez migrer rapidement un grand nombre d'instances de cluster Microsoft SQL Server Always On Failover (FCI), ce modèle peut vous aider à réduire le temps de provisionnement. En utilisant l'automatisation et Amazon FSx for Windows File Server, il réduit les efforts manuels, les erreurs causées par l'homme et le temps nécessaire au déploiement d'un grand nombre de clusters.

Ce modèle configure l'infrastructure pour les FCI SQL Server dans un déploiement de zones de disponibilité multiple (Multi-AZ) sur Amazon Web Services (AWS). Le provisionnement des services AWS requis pour cette infrastructure est automatisé à l'aide de CloudFormation modèles AWS. L'installation de SQL Server et la création de nœuds de cluster sur une instance Amazon Elastic Compute Cloud (Amazon EC2) sont effectuées à l'aide de commandes. PowerShell

Cette solution utilise un système de fichiers multi-AZ Amazon FSx pour Windows à haute disponibilité comme témoin partagé pour le stockage des fichiers de base de données SQL Server. Le système de fichiers Amazon FSx et les instances Windows EC2 qui hébergent SQL Server sont joints au même domaine AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif

  • Un utilisateur AWS disposant des autorisations suffisantes pour provisionner des ressources à l'aide de CloudFormation modèles AWS

  • AWS Directory Service pour Microsoft Active Directory

  • Informations d'identification dans AWS Secrets Manager pour s'authentifier auprès d'AWS Managed Microsoft AD dans une paire clé-valeur :

    • ADDomainName: <Domain Name>

    • ADDomainJoinUserName: <Domain Username>

    • ADDomainJoinPassword: <Domain User Password>

    • TargetOU: <Target OU Value>

    Remarque : vous utiliserez le même nom de clé dans l'automatisation d'AWS Systems Manager pour l'activité de jointure avec AWS Managed Microsoft AD.

  • Fichiers multimédia SQL Server pour l'installation de SQL Server et création de comptes de service ou de domaine Windows, qui seront utilisés lors de la création du cluster

  • Un cloud privé virtuel (VPC), avec deux sous-réseaux publics dans des zones de disponibilité distinctes, deux sous-réseaux privés dans les zones de disponibilité, une passerelle Internet, des passerelles NAT, des associations de tables de routage et un serveur de saut

Versions du produit

  • Windows Server 2012 R2 et Microsoft SQL Server 2016

Architecture

Pile technologique source

  • SQL Server sur site avec FCI utilisant un lecteur partagé

Pile technologique cible

  • Instances AWS EC2

  • Amazon FSx for Windows File Server

  • Manuel d'utilisation d'AWS Systems Manager Automation

  • Configurations réseau (VPC, sous-réseaux, passerelle Internet, passerelles NAT, serveur de saut, groupes de sécurité)

  • AWS Secrets Manager

  • AWS Managed Microsoft AD

  • Amazon EventBridge

  • AWS Identity and Access Management (IAM)

Architecture cible

Le schéma suivant montre un compte AWS dans une seule région AWS, avec un VPC comprenant deux zones de disponibilité, deux sous-réseaux publics avec des passerelles NAT, un serveur de saut dans le premier sous-réseau public, deux sous-réseaux privés, chacun avec une instance EC2 pour un nœud SQL Server dans un groupe de sécurité de nœuds, et un système de fichiers Amazon FSx se connectant à chacun des nœuds SQL Server. AWS Directory Service, Amazon EventBridge, AWS Secrets Manager et AWS Systems Manager sont également inclus.

Architecture multi-AZ avec des ressources dans des sous-réseaux publics et privés, avec des groupes de sécurité de nœuds.

Automatisation et mise à l'échelle

  • Vous pouvez utiliser AWS Systems Manager pour rejoindre AWS Managed Microsoft AD et effectuer l'installation de SQL Server.

Outils

Services AWS

  • AWS vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.

  • AWS Directory Service propose plusieurs manières d'utiliser Microsoft Active Directory (AD) avec d'autres services AWS tels qu'Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) pour SQL Server et Amazon FSx for Windows File Server.

  • Amazon Elastic Compute Cloud (Amazon EC2) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.

  • Amazon EventBridge est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, les fonctions AWS Lambda, les points de terminaison d'appel HTTP utilisant des destinations d'API ou les bus d'événements dans d'autres comptes AWS.

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.

  • AWS Secrets Manager vous aide à remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un appel d'API à Secrets Manager pour récupérer le secret par programmation.

  • AWS Systems Manager vous aide à gérer vos applications et votre infrastructure exécutées dans le cloud AWS. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos ressources AWS en toute sécurité à grande échelle.

Autres outils

  • PowerShellest un programme d'automatisation et de gestion de configuration Microsoft qui s'exécute sous Windows, Linux et macOS. Ce modèle utilise des PowerShell scripts.

Référentiel de code

Le code de ce modèle est disponible dans le référentiel GitHub aws-windows-failover-cluster-automation.

Bonnes pratiques

Épopées

TâcheDescriptionCompétences requises

Déployez la CloudFormation pile Systems Manager.

  1. Connectez-vous à votre compte AWS et ouvrez l'AWS Management Console.

  2. Accédez à la CloudFormation console et créez la CloudFormation pile Systems Manager en téléchargeant le ssm.yaml modèle. Fournissez des valeurs pour les paramètres suivants :

    • StateUnJoinAssociationLoggingBucketName— Fournissez un nom pour le compartiment S3 que le modèle créera à des fins de journalisation.

    • SSMAsociationAd UnjoinName — Donnez un nom à la ressource. AWS::SSM::Association

    • SSM AutomationDocumentName — Entrez un nom pour le runbook d'automatisation de Systems Manager.

    • EventBridgeName— Donnez un nom au bus EventBridge d'événements.

  3. Déployez la CloudFormation pile Systems Manager en lançant le ssm.yaml CloudFormation modèle. Le modèle créera le manuel d'exécution de Systems Manager Automation qui est lancé lors du lancement d'une nouvelle instance EC2 avec le tag. ADJoined: FSXADD Le runbook d'automatisation ajoutera l'instance au répertoire Microsoft AD géré par AWS.

AWS DevOps, DevOps ingénieur

Déployez la pile d'infrastructure.

Après le déploiement réussi de la pile Systems Manager, créez la infra pile, qui inclut les nœuds d'instance EC2, les groupes de sécurité, le système de fichiers Amazon FSx for Windows File Server et le rôle IAM.

  1. Accédez à la CloudFormation console et lancez le infra-cf.yaml modèle. Pour déployer cette pile, les paramètres suivants sont requis :

    • ActiveDirectoryId— ID pour Microsoft AD géré par AWS

    • ADDnsIpAddresses1— Adresse IP DNS principale de Microsoft AD géré par AWS

    • ADDnsIpAddresses2— Adresse IP DNS secondaire de Microsoft AD géré par AWS

    • FSxSecurityGroupName— Nom du groupe de sécurité Amazon FSx

    • FSxWindowsFileSystemName— Nom du lecteur Amazon FSx

    • ImageID— ID de l'image Windows 2012 R2 de base ou de l'image Amazon Machine (AMI) utilisée pour créer le nœud d'instance SQL Server

    • KeyPairName— Paire clé-valeur à associer aux nœuds d'instance EC2 pour l'accès

    • Node1SecurityGroupName— Nom du premier groupe de sécurité du nœud

    • Node2SecurityGroupName— Nom du groupe de sécurité du deuxième nœud

    • OUSecretName— Nom du secret contenant les informations Microsoft AD gérées par AWS

    • PrivateSubnet1— ID du premier sous-réseau privé

    • PrivateSubnet2— ID du deuxième sous-réseau privé

    • SqlFSxFCIName— Nom de la balise appliquée aux nœuds principal et secondaire et à Amazon FSx.

    • SqlFSxServerNetBIOSName1— Nom du nœud d'instance EC2 principal (15 caractères maximum)

    • SqlFSxServerNetBIOSName2— Nom du nœud d'instance EC2 secondaire (15 caractères maximum)

    • VPC— ID VPC

    • WorkloadInstanceType— Type d'instance EC2

    Déployez la infra pile. La pile créera tous les composants d'infrastructure nécessaires à la configuration de Windows SQL Server FCI.

  2. Une fois les nœuds d'instance EC2 lancés, le document Systems Manager Automation sera invoqué pour joindre ces instances à AWS Managed Microsoft AD. Vous pouvez suivre la progression sur la page Automatisation de la console Systems Manager.

AWS DevOps, DevOps ingénieur
TâcheDescriptionCompétences requises

Installez les outils Windows.

  1. Connectez-vous à l'instance EC2 principale, qui est le nœud 1. Pour installer les fonctionnalités Windows (Active Directory et FCI Tools), exécutez le PowerShell script suivant.

    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. Connectez-vous à l'instance EC2 secondaire, qui est le nœud 2, et exécutez le même script pour activer les fonctionnalités sur le nœud 2.

AWS DevOps, DevOps ingénieur, DBA

Préinstallez les objets informatiques du cluster dans les services de domaine Active Directory.

Pour préparer l'objet de nom de cluster (CNO) dans les services de domaine Active Directory (AD DS) et préparer un objet d'ordinateur virtuel (VCO) pour un rôle de cluster, suivez les instructions de la documentation de Windows Server.

AWS DevOps, DBA, ingénieur DevOps

Créez le WSFC.

Pour créer le cluster Windows Server Failover Clustering (WSFC), procédez comme suit :

  1. Connectez-vous à l'instance EC2 principale, qui est le nœud 1. Pour créer le partage de fichiers Amazon FSx et accorder un accès complet au compte de service AD répertorié, exécutez le code suivant.

    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 }

    Cette commande créera également le partage de fichiers disponible en permanence (CA), optimisé pour une utilisation par Microsoft SQL Server.

  2. Pour créer le cluster de basculement sur l'instance principale (nœud 1), exécutez la commande suivante.

    New-Cluster -Name <CNO Name> -Node  <Node1 Name>, <Node2 Name> -StaticAddress <Node1 Secondary Private IP>, <Node2 Secondary Private IP>

    La commande nécessite les paramètres suivants :

    • Name— Le nom du cluster (CNO)

    • Node— Les noms des nœuds principal et secondaire, respectivement

    • StaticAddress— Les adresses IP secondaires des nœuds principal et secondaire, respectivement

    Important : un administrateur de domaine ou un utilisateur normal doit disposer d'une autorisation d'administrateur sur les deux nœuds pour créer le cluster Windows Server Failover Clustering (WSFC). Dans le cas contraire, la commande précédente échouera et renverra le message,You do not have administrator privilege on servers.

  3. Une fois le cluster créé, exécutez la commande suivante pour joindre le témoin de partage de fichiers.

    Set-ClusterQuorum -FileShareWitness \\<FSx Windows Remote PowerShell Endpoint>\share\witness
AWS DevOps, DBA, ingénieur DevOps

Installez le cluster de basculement SQL Server.

Une fois le cluster WSFC configuré, installez le cluster SQL Server sur l'instance principale (node1).

  1. Dans le lecteur T sur les deux nœuds, créez tempdb et log dossiers. Les dossiers sont utilisés dans les PowerShell commandes.

  2. Après avoir copié les fichiers multimédias de SQL Server pour l'installation de SQL Server sur les deux nœuds, exécutez la PowerShell commande suivante sur le nœud 1 pour installer SQL Server sur le nœud 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, ingénieur DevOps

Ajoutez un nœud secondaire au cluster.

Pour ajouter SQL Server au nœud secondaire (nœud 2), exécutez la PowerShell commande suivante.

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, ingénieur DevOps

Testez le SQL Server FCI.

  1. Sur l'instance Windows de l'un des nœuds, dans Outils d'administration, lancez le Failover Cluster Manager.

  2. Accédez à Nodes et vérifiez que le statut du nœud est Status Running.

  3. Sélectionnez Rôles, ouvrez le menu contextuel (clic droit) de SQL Server (MSSQLSERVER), puis sélectionnez Déplacer et sélectionner un nœud.

  4. Une fois le nœud sélectionné, SQL Server devrait être exécuté sur l'autre nœud.

DBA, ingénieur DevOps
TâcheDescriptionCompétences requises

Nettoyez les ressources.

Pour nettoyer les ressources, utilisez le processus de suppression de la CloudFormation pile AWS :

  1. Ouvrez la CloudFormation console AWS.

  2. Sur la page Stacks, sélectionnez la infra pile. La pile doit être en cours d’exécution.

  3. Dans le volet des détails de la pile, choisissez Supprimer.

  4. Sélectionnez Supprimer la pile lorsque vous y êtes invité.

  5. Répétez les étapes 2 à 4 pour la ssm pile.

Une fois la suppression des piles terminée, les piles seront dans leur DELETE_COMPLETE état actuel. Les piles dans DELETE_COMPLETE cet état ne sont pas affichées dans la CloudFormation console par défaut. Pour afficher les piles supprimées, vous devez modifier le filtre de vue des piles comme décrit dans Afficher les piles supprimées sur la console AWS CloudFormation .

Si la suppression a échoué, une pile sera dans DELETE_FAILED cet état. Pour les solutions, consultez la section Supprimer les échecs de la pile dans la CloudFormation documentation.

AWS DevOps, DBA, ingénieur DevOps

Résolution des problèmes

ProblèmeSolution

Défaillance CloudFormation du modèle AWS

Si le CloudFormation modèle échoue pendant le déploiement, procédez comme suit :

  1. Ouvrez la CloudFormation console AWS.

  2. Sur la page Stacks de la CloudFormation console, sélectionnez la pile.

  3. Choisissez Events, puis vérifiez l'état de la pile.

Échec de la jointure avec AWS Managed Microsoft AD

Pour résoudre les problèmes de jointure, procédez comme suit :

  1. Ouvrez la console Systems Manager.

  2. Sélectionnez la région de déploiement.

  3. Dans le volet gauche, choisissez Automation et localisez le runbook Automation défaillant.

  4. Ouvrez le runbook d'automatisation et vérifiez l'état d'exécution et les étapes d'exécution.

  5. Examinez les détails de l'étape qui a échoué pour déterminer l'erreur ou l'échec exact.

Ressources connexes