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.
Déployez des instances de cluster de basculement SQL Server sur Amazon EC2 et Amazon à l'aide FSx de Terraform
Créée par Mark Hudson (AWS) et Matt Burgess (AWS)
Récapitulatif
Ce modèle utilise Terraform pour déployer des instances de cluster de basculement SQL Server (FCIs) sur des nœuds Windows Server Failover Cluster (WSFC) sur Amazon Elastic Compute Cloud (Amazon). EC2 En outre, le modèle utilise le stockage FSx partagé d'Amazon pour les données et les fichiers journaux.
Lorsque les bases de données SQL Server sont migrées vers AWS, le premier choix est Amazon RDS for SQL Server. Cependant, Amazon RDS for SQL Server n'est parfois pas adapté et SQL Server doit être déployé sur EC2 Amazon dans une architecture à haute disponibilité. Dans cette solution, SQL Server FCIs est installé sur les nœuds WSFC.
Le module Terraform inclus dans ce modèle fournit jusqu'à deux instances Amazon EC2 SQL Server. Un système de fichiers Amazon FSx pour Windows File Server agit en tant que témoin du quorum et stocke les données partagées et les fichiers journaux. Quel que soit le nombre d'instances configurées, les nœuds d'instance SQL Server créeront et rejoindront toujours un cluster FCI afin de garantir la parité environnementale. (Généralement, une instance est configurée pour le développement et deux instances pour les environnements de production.) Pour les configurations qui utilisent deux nœuds à des fins de haute disponibilité, un Network Load Balancer interne est configuré. Le Network Load Balancer utilise une sonde de santé configurée sur le cluster FCI pour identifier le nœud principal.
Conditions préalables et limitations
Prérequis
Un actif Compte AWS.
Amazon Virtual Private Cloud (Amazon VPC) avec deux sous-réseaux dans des zones de disponibilité distinctes.
Ensemble d'options DHCP Amazon VPC. Configurez le nom de domaine pour qu'il corresponde à votre nom de domaine Active Directory et le domaine et les serveurs de noms NetBIOS pour qu'ils pointent vers vos contrôleurs de domaine Active Directory. Pour plus d'informations, consultez la section Configuration du VPC dans Informations supplémentaires.
AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).
Image de machine Amazon personnalisée (AMI). Pour plus de détails, consultez la section Configuration de l'AMI dans Informations supplémentaires.
Compartiment Amazon Simple Storage Service (Amazon S3) contenant l'image ISO de SQL Server. Cette condition préalable n'est requise que si vous utilisez EC2 Image Builder avec le
component.yaml
fichier fourni pour créer l'AMI personnalisée.AWS Key Management Service (AWS KMS) clé de chiffrement.
Par défaut, SQL Server est installé à l'aide d'une clé de produit de l'édition développeur. Les systèmes de production sont censés utiliser une clé de produit valide transmise au module par la variable correspondante.
Limites
Cette solution nécessite AWS Managed Microsoft AD. Toutefois, si vous préférez, vous pouvez plutôt utiliser une implémentation Active Directory autogérée. Pour ce faire, modifiez le module Amazon FSx Terraform inclus pour supprimer l'
active_directory_id
attribut. Ajoutez ensuite les quatre attributs requis pour l'autogestion d'Active Directory, comme indiqué dans la documentation Terraform. SQL Server est configuré pour utiliser l'authentification en mode mixte. Si vous préférez, vous pouvez utiliser l'authentification Windows uniquement. Pour ce faire, dans le script de données utilisateur fourni, supprimez les
/SAPWD
paramètres/SECURITYMODE
et fournis à lasetup.exe
commande. Vous pouvez supprimer lesql_accounts.tf
fichier et leinstances.tf
modifier pour supprimer l'sql_sa_password
entrée.Lorsque vous supprimez un cluster déployé, vous devez supprimer les objets informatiques virtuels correspondants et les objets informatiques individuels dans Active Directory. Pour supprimer les objets, utilisez les outils d'administration Active Directory.
Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section AWS Services par région
. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.
Versions du produit
Cette solution a été testée avec les versions suivantes :
Windows Server 2019
SQL Server 2019
Architecture
Pile technologique source
SQL Server
Pile technologique cible
SQL Server FCI sur les nœuds WSFC à l'aide d'Amazon EC2
Serveur FSx de fichiers Amazon pour Windows
Compartiment Amazon S3
AWS Secrets Manager
AWS Managed Microsoft AD
AWS KMS
AWS Identity and Access Management (JE SUIS)
Architecture cible
Le schéma suivant montre l'architecture de cette solution.

Le diagramme décrit les éléments suivants :
Rôle IAM fournissant aux EC2 instances l'accès à Secrets Manager AWS KMS et à Secrets Manager
Deux nœuds SQL Server déployés sur des EC2 instances Amazon dans des sous-réseaux privés répartis sur deux zones de disponibilité
Un Network Load Balancer pour faciliter les connexions à l'instance SQL Server active (non déployé lors de la configuration d'un cluster à nœud unique)
Système de fichiers Amazon FSx pour Windows File Server déployé dans les deux sous-réseaux privés pour un stockage partagé par les nœuds SQL Server
Secrets Manager pour le stockage des informations d'identification et de configuration d'Active Directory et de SQL Server
Compartiment Amazon S3 pour stocker l'image d'installation de SQL Server
AWS Managed Microsoft AD pour l'authentification Windows
AWS KMS pour créer la clé de chiffrement
Automatisation et mise à l'échelle
Vous pouvez automatiser le déploiement de l'architecture cible en utilisant les modules Terraform présents dans le GitHub référentiel.terraform.tfvars
fichier pour inclure des valeurs de variables spécifiques à votre environnement. Le compartiment Amazon S3, AWS Managed Microsoft AD les composants, la clé de AWS KMS chiffrement et certains secrets sont des conditions préalables à ce déploiement et ne sont pas inclus dans le code Terraform.
Outils
Services AWS
AWS Directory Service for Microsoft Active Directorypermet à vos charges de travail et à vos AWS ressources sensibles aux annuaires d'utiliser Microsoft Active Directory dans le. AWS Cloud Dans ce modèle, AWS Managed Microsoft AD il est utilisé pour l'authentification Windows Server et SQL Server et pour le DNS.
Amazon Elastic Compute Cloud (Amazon EC2) fournit une capacité de calcul évolutive dans le AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement. Dans ce modèle, les instances de cluster de basculement SQL Server sont installées sur les EC2 instances Amazon.
EC2 Image Builder vous aide à automatiser la création, la gestion et le déploiement d'images de serveur personnalisées.
Amazon FSx pour Windows File Server fournit un stockage partagé entièrement géré sur Windows Server. Dans ce modèle, FSx le serveur de fichiers Windows fournit un stockage partagé pour les données et les fichiers journaux de SQL Server ainsi que pour le témoin du quorum.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
AWS Key Management Service (AWS KMS) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données. Dans ce modèle, il est utilisé pour chiffrer les secrets de Secrets Manager, le stockage SQL Server sur les volumes Amazon Elastic Block Store (Amazon EBS) et le système de fichiers FSx pour Windows File Server.
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. Dans ce modèle, les informations d'identification Active Directory pour l'installation et l'exécution de SQL Server, les informations
sa
d'identification utilisateur et les informations de connexion à la base de données sont stockées dans Secrets Manager.Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données. Ce modèle utilise un compartiment Amazon S3 pour stocker l'image d'installation de SQL Server.
Amazon Virtual Private Cloud (Amazon VPC) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS.
Autres outils
Microsoft SQL Server FCIs
est installé sur les nœuds de cluster Windows Server. En outre, ils peuvent être installés sur plusieurs sous-réseaux. Dans ce modèle, les instances FCI de SQL Server sont installées sur les nœuds WSFC. Terraform
est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud. Dans ce modèle, Terraform est utilisé pour créer les ressources et configurer les instances FCI de SQL Server. Le clustering Windows Server Failover
fournit des fonctionnalités d'infrastructure qui prennent en charge la haute disponibilité des applications de serveur hébergées telles que SQL Server. Dans ce modèle, les nœuds FCI utilisent la fonctionnalité WSFC pour fournir une haute disponibilité locale grâce à la redondance au niveau de l'instance.
Référentiel de code
Le code de ce modèle est disponible dans le dépôt GitHub cluster-amazon-elastic-compute- cloud-amazon-fsx-microsoft -sql-server
Un
README.md
fichier qui fournit une vue d'ensemble de la solution et des informations supplémentaires sur l'installation et l'utilisationUn ensemble de base de fichiers de configuration Terraform et un module FSx spécifique à Amazon pour approvisionner les composants de ce modèle
Un script de configuration d'instance exécuté en tant que script de données EC2 utilisateur Amazon
Un fichier
component.yam
L que Image Builder peut utiliser pour créer une AMI personnalisée
Bonnes pratiques
Sécurité et correctifs
Les installations et configurations préalables de l'AMI constituent la configuration minimale requise pour déployer des clusters SQL Server FCI. Des logiciels et des configurations supplémentaires peuvent être nécessaires pour se conformer aux normes et aux exigences de sécurité de votre entreprise.
Après le déploiement, appliquez régulièrement des correctifs à Windows. Corrigez directement les instances en cours d'exécution ou créez une nouvelle AMI avec les derniers correctifs Windows et remplacez les instances (une par une) à l'aide de la nouvelle AMI. AWS publie AMIs chaque mois un nouveau Windows contenant les derniers correctifs, pilotes et agents de lancement du système d'exploitation. Nous vous recommandons de vérifier la dernière AMI lorsque vous lancez de nouvelles instances ou lorsque vous créez vos propres images personnalisées.
Les EC2 instances Amazon sont configurées pour autoriser tout le trafic sortant. Lors du déploiement dans un environnement de production, les règles de sortie du groupe de sécurité doivent être mises en place pour limiter ce trafic aux destinations requises.
Le système de fichiers FSx pour Windows File Server peut enregistrer automatiquement des journaux d'audit pour le partage de fichiers et l'accès aux fichiers et aux dossiers et les expédier à la destination souhaitée si cela est requis dans votre environnement.
Faites régulièrement pivoter les secrets de Secrets Manager automatiquement. Pour la paire de clés d' EC2 instance Amazon, envisagez une solution de rotation automatique telle que décrite dans Comment utiliser AWS Secrets Manager pour stocker et faire pivoter des paires de clés SSH en toute sécurité
. Pour les informations d'identification Active Directory et les secrets des sa
informations d'identification SQL Server, configurez la rotation automatique conformément à vos politiques de gestion des mots de passe.
Gestion d'Active Directory
Dans le cadre du cluster FCI, Windows génère un objet de nom d'ordinateur (CNO) dans Active Directory. Le CNO répond aux requêtes DNS et transmet le trafic au nœud SQL actif. Nous vous déconseillons d'utiliser ce DNS fourni par Active Directory. Le TTL est trop élevé pour fournir un temps de basculement raisonnable et prend souvent jusqu'à 5 minutes pour refléter la nouvelle adresse IP principale. En revanche, pour les installations à haute disponibilité, le Network Load Balancer interne est configuré pour basculer en 30 secondes.
Un administrateur de domaine Active Directory est requis pour créer le cluster. Cette exigence est due aux autorisations élevées requises pour créer les objets du cluster et modifier les autorisations dans Active Directory. Toutefois, les services SQL Server n'ont pas besoin de s'exécuter en tant qu'administrateur de domaine. Nous vous recommandons donc de créer un deuxième utilisateur Active Directory à cette fin. Toutefois, vous pouvez éliminer cet utilisateur si les services s'exécutent en tant qu'administrateur de domaine. Dans ce cas, l'utilisateur administrateur du domaine doit être ajouté au groupe d'administrateurs Active Directory créé dans le cadre de ce modèle.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez des groupes Active Directory. | Dans AWS Managed Microsoft AD, créez les groupes suivants :
Pour plus de détails, consultez la section Création d'un AWS Managed Microsoft AD groupe dans la AWS documentation. | Administrateur AD |
Créez des utilisateurs Active Directory. | Dans AWS Managed Microsoft AD, créez les utilisateurs suivants
Pour plus de détails, consultez la section Création AWS Managed Microsoft AD d'un utilisateur dans la AWS documentation. | Administrateur AD |
Ajoutez les informations d'identification Active Directory aux secrets. | Utilisez Secrets Manager pour créer quatre secrets afin de stocker les informations suivantes :
Pour plus de détails, consultez la section Créer un AWS Secrets Manager secret dans la AWS documentation. | Administrateur AWS |
Tâche | Description | Compétences requises |
---|---|---|
Créez l'AMI Windows. | Créez une AMI Windows personnalisée qui inclut les logiciels et les configurations requis. Pour plus de détails, consultez la section Informations supplémentaires. | Administrateur AWS, AWS DevOps |
Installez Terraform. | Pour installer Terraform, suivez les instructions sur le site Web de Terraform | AWS DevOps |
Pour cloner le référentiel. | Clonez le référentiel | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Modifiez les variables Terraform. | Mettez à jour le Par exemple, mettez à jour les | AWS DevOps |
Initialisez Terraform. | Pour voir le déploiement proposé, accédez à la racine du référentiel. Utilisez l'interface de ligne de commande (CLI) Terraform pour exécuter | AWS DevOps |
Déployez des ressources. | Pour déployer le cluster SQL et les ressources associées, utilisez la CLI Terraform pour l'exécuter. | AWS DevOps, administrateur AWS |
Validez le déploiement. | Pour valider le déploiement, procédez comme suit :
| DBA, administrateur système AWS |
Résolution des problèmes
Problème | Solution |
---|---|
Le provisionnement de Terraform est terminé mais Windows Failover Cluster Manager n'indique pas qu'un cluster a été créé ou que le cluster est dans un état inutilisable. | L'installation complète des ressources et la configuration des clusters peuvent prendre de 45 à 60 minutes. Une fois Terraform terminé, le script de données utilisateur doit s'exécuter jusqu'à la fin, ce qui nécessite plusieurs redémarrages. Pour suivre la progression, vous pouvez utiliser le |
Après avoir provisionné un cluster fonctionnel, l'utilisation de Terraform pour supprimer et recréer le cluster échoue. Terraform est terminé, mais le cluster n'est pas correctement configuré. | Une partie du processus de provisionnement implique l'enregistrement des machines et des objets virtuels dans Active Directory et Active Directory DNS. Lorsque des noms d'ordinateur existent pour les nœuds du EC2 cluster Amazon et le nœud du cluster, FCI ne peut pas s'initialiser correctement et échouera au provisionnement. Pour résoudre ce problème, effectuez les opérations suivantes :
|
Ressources connexes
AWS documentation
Informations supplémentaires
Informations sur le module Terraform
Ce module utilise à la fois la configuration de l'AMI et la configuration des données utilisateur pour obtenir un bon équilibre entre le temps de provisionnement et la stabilité. Pendant le provisionnement, Windows nécessite plusieurs redémarrages et des temps d'attente. Une méthode de points de contrôle a été mise en œuvre pour se protéger contre les boucles infinies lors des redémarrages des données utilisateur persistantes. Les données utilisateur sont configurées pour être persistantes. Par conséquent, les scripts de configuration des données utilisateur doivent et doivent continuer à être développés pour être idempotents. L'idempotencie rationalise le processus de mise à jour, permettant aux instances d'être échangées au cours d'un cycle de mise à jour sans configuration manuelle pour rejoindre ou recréer des clusters FCI.
Chaînes de connexion SQL Server et clustering en cas de basculement
Le module publiera un secret contenant l'adresse du point de terminaison qui doit être utilisée dans les chaînes de connexion de cette base de données. Le nom du secret suit le format{environment_name}/sqlserver/{cluster_name}/endpoint
. Pour les installations où un seul nœud est utilisé, vous pouvez vous attendre à ce qu'il s'agisse de l'adresse IP de l'interface SQL Server de l' EC2 instance Amazon. Pour les installations à haute disponibilité (deux instances), vous pouvez vous attendre à ce qu'il s'agisse du nom DNS du Network Load Balancer interne.
Le clustering virtuel par basculement n'est IPs pas pris en charge dans ce module. Une adresse IP virtuelle doit rester dans le même sous-réseau pour fonctionner. En AWS effet, un seul sous-réseau ne peut pas couvrir plusieurs zones de disponibilité. Par conséquent, l'utilisation du virtuel IPs empêcherait ce module d'être considéré comme hautement disponible.
Chaque EC2 instance Amazon reçoit trois adresses IP privées. Leur utilisation est la suivante :
IP principale pour le trafic réseau : adresse IP source pour le trafic de sortie.
Communications FCI : utilisées pour maintenir l'état et la synchronisation du cluster de basculement.
SQL Server (port TCP 1433) : écoute également le trafic cardiaque afin de déterminer quelle instance est principale.
Configuration VPC
Les prérequis répertorient un ensemble d'options DHCP configuré pour utiliser Active Directory pour la résolution DNS. Cependant, cette condition préalable n'est pas une exigence stricte. L'exigence absolue est que les EC2 instances soient capables de résoudre votre nom de domaine Active Directory. Il est possible de répondre à cette exigence par d'autres moyens, par exemple en utilisant des Amazon Route 53 Resolver points de terminaison. Pour plus d'informations, consultez Intégrer la résolution DNS de votre service d'annuaire aux résolveurs Amazon Route 53
Configuration de l'AMI
L'AMI utilisée dans ce modèle doit contenir les logiciels et configurations prérequis suivants :
Téléchargez et étendez les fichiers d'installation de SQL Server 2019 dans
C:\SQL_Install_media
.Installez les fonctionnalités Windows suivantes :
Install-WindowsFeature Failover-Clustering
Install-WindowsFeature RSAT-AD-PowerShell
Install-WindowsFeature RSAT-AD-Tools
Install-WindowsFeature RSAT-Clustering-Mgmt
Install-WindowsFeature RSAT-Clustering-PowerShell
Install-WindowsFeature RSAT-Clustering-CmdInterface
Désactivez le pare-feu Windows comme suit :
Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled False
Activez la méthode d'authentification CredSSP (
<domain>
remplacez-la par le nom de domaine Windows de votre organisation) comme suit :Enable-WSManCredSSP -Role "Server" -Force
Enable-WSManCredSSP -Role "Client" -DelegateComputer *.<domain>.com -Force
Définissez les clés de registre suivantes :
Autoriser les informations d'authentification NTLM :
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation
Nom :
AllowFreshCredentialsWhenNTLMOnly
Valeur : 1
Type :
REG_DWORD
Autoriser les ordinateurs du domaine local à utiliser NTLM depuis : PowerShell
Trajectoire :
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnly
Nom :
1
Valeur :
wsman/*.<domain>.com
Type :
REG_SZ
Configurez la PowerShell galerie
comme suit : [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
Installez les PowerShell modules Windows suivants
*
:Install-Module -Name ComputerManagementDsc
Install-Module -Name FailOverClusterDsc
Install-Module -Name PSDscResources
Install-Module -Name xSmbShare
Install-Module -Name xActiveDirectory
Install-Module -Name SqlServer
Pour utiliser Image Builder afin de créer l'AMI, suivez les instructions de la section Création d'un pipeline d'images à l'aide de l'assistant EC2 Image Builderconsole de la documentation Image Builder. Pour créer le composant de la recette avec les prérequis précédents, procédez comme suit :
Téléchargez le fichier component.yaml
depuis le ami
dossier du référentiel. GitHubCopiez le contenu dans un nouveau composant Image Builder.
Mettez à jour les espaces réservés suivants avec vos informations :
<domain>
— Votre nom de domaine Active Directory<bucket_name>
— Nom du compartiment Amazon S3 contenant l'image SQL Server