Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Implemente instancias de clústeres de conmutación por error de SQL Server en Amazon EC2 y Amazon FSx mediante Terraform
Creado por Mark Hudson (AWS) y Matt Burgess (AWS)
Resumen
Este patrón utiliza Terraform para implementar instancias de clústeres de conmutación por error de SQL Server (FCIs) en los nodos del clúster de conmutación por error de Windows Server (WSFC) de Amazon Elastic Compute Cloud (Amazon). EC2 Además, el patrón utiliza el almacenamiento FSx compartido de Amazon para los datos y los archivos de registro.
Cuando se migran las bases de datos de SQL Server a AWS, la primera opción es Amazon RDS for SQL Server. Sin embargo, a veces Amazon RDS for SQL Server no es adecuado y SQL Server debe implementarse en EC2 Amazon en una arquitectura de alta disponibilidad. En esta solución, los servidores SQL Server FCIs se instalan en todos los nodos de WSFC.
El módulo Terraform incluido en este patrón aprovisiona hasta dos instancias de Amazon EC2 SQL Server. Un sistema de archivos de Amazon FSx para Windows File Server actúa como testigo del quórum y almacena los datos compartidos y los archivos de registro. Independientemente del número de instancias configuradas, los nodos de instancia de SQL Server siempre crearán un clúster de la FCI y se unirán a él para garantizar la paridad ambiental. (Normalmente, una instancia se configura para entornos de desarrollo y dos instancias para entornos de producción). Para las configuraciones que utilizan dos nodos para una alta disponibilidad, se aprovisiona un Network Load Balancer interno. El Network Load Balancer utiliza una sonda de estado configurada en el clúster de la FCI para identificar qué nodo es el principal.
Requisitos previos y limitaciones
Requisitos previos
Un activo. Cuenta de AWS
Amazon Virtual Private Cloud (Amazon VPC) con dos subredes en zonas de disponibilidad independientes.
Conjunto de opciones de DHCP de Amazon VPC. Configure el nombre de dominio para que se resuelva en su nombre de dominio de Active Directory y los servidores de nombres de dominio y NetBIOS para que apunten a sus controladores de dominio de Active Directory. Para obtener más información, consulte Configuración de VPC en Información adicional.
AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).
Imagen personalizada de Amazon Machine (AMI). Para obtener más información, consulte Configuración de la AMI en Información adicional.
Depósito de Amazon Simple Storage Service (Amazon S3) que contiene la imagen ISO de SQL Server. Este requisito previo solo es necesario si se utiliza EC2 Image Builder con el
component.yaml
archivo proporcionado para crear la AMI personalizada.AWS Key Management Service (AWS KMS) clave de cifrado.
De forma predeterminada, SQL Server se instala con una clave de producto de la edición para desarrolladores. Se espera que los sistemas de producción utilicen una clave de producto válida que la variable correspondiente transmita al módulo.
Limitaciones
Esta solución requiere AWS Managed Microsoft AD. Sin embargo, si lo prefiere, puede utilizar una implementación de Active Directory autoadministrada en su lugar. Para ello, modifique el módulo Amazon FSx Terraform incluido para eliminar el
active_directory_id
atributo. A continuación, añada los cuatro atributos necesarios para la autogestión de Active Directory, tal y como se muestra en la documentación de Terraform. SQL Server está configurado para usar la autenticación de modo mixto. Si lo prefiere, puede utilizar la autenticación únicamente para Windows. Para ello, en el script de datos de usuario proporcionado, elimine los
/SAPWD
parámetros/SECURITYMODE
y que se proporcionan alsetup.exe
comando. Puede eliminar elsql_accounts.tf
archivo y modificarlo para eliminar lasql_sa_password
entrada.instances.tf
Al eliminar un clúster implementado, debe eliminar los objetos de computadora virtual correspondientes y los objetos de computadora individuales de Active Directory. Para eliminar los objetos, utilice las herramientas administrativas de Active Directory.
Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para ver la disponibilidad regional, consulta AWS Servicios por región
. Para conocer puntos de enlace específicos, consulte Puntos de enlace y cuotas del servicio y elija el enlace para el servicio.
Versiones de producto
Esta solución se probó con las siguientes versiones:
Windows Server 2019
SQL Server 2019
Arquitectura
Pila de tecnología de origen
SQL Server
Pila de tecnología de destino
FCI de SQL Server en nodos WSFC mediante Amazon EC2
Servidor FSx de archivos Amazon para Windows
Bucket de Amazon S3
AWS Secrets Manager
AWS Managed Microsoft AD
AWS KMS
AWS Identity and Access Management (IAM)
Arquitectura de destino
El siguiente diagrama muestra la arquitectura de esta solución.

En el diagrama se muestra lo siguiente:
Una función de IAM que proporciona a las EC2 instancias acceso a AWS KMS Secrets Manager
Dos nodos de SQL Server implementados en EC2 instancias de Amazon en subredes privadas en dos zonas de disponibilidad
Un Network Load Balancer para facilitar las conexiones a la instancia activa de SQL Server (no se implementa al configurar un clúster de un solo nodo)
Sistema de archivos Amazon FSx para Windows File Server implementado en ambas subredes privadas para el almacenamiento compartido por los nodos de SQL Server
Secrets Manager para almacenar las credenciales y la configuración de Active Directory y SQL Server
Depósito de Amazon S3 para almacenar la imagen de instalación de SQL Server
AWS Managed Microsoft AD para la autenticación de Windows
AWS KMS para crear la clave de cifrado
Automatizar y escalar
Puede automatizar el despliegue de la arquitectura de destino mediante los módulos de Terraform que se encuentran en el GitHub repositorioterraform.tfvars
archivo para incluir valores variables específicos de su entorno. El depósito de Amazon S3, AWS Managed Microsoft AD los componentes, la clave de AWS KMS cifrado y algunos secretos son requisitos previos para esta implementación y no se incluyen en el código de Terraform.
Herramientas
Servicios de AWS
AWS Directory Service for Microsoft Active Directorypermite que sus cargas de trabajo y AWS recursos compatibles con directorios utilicen Microsoft Active Directory en. Nube de AWS En este patrón, AWS Managed Microsoft AD se utiliza para la autenticación de Windows Server y SQL Server y para el DNS.
Amazon Elastic Compute Cloud (Amazon EC2) proporciona una capacidad informática escalable en el Nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez. En este patrón, las instancias del clúster de conmutación por error de SQL Server se instalan en las EC2 instancias de Amazon.
EC2 Image Builder le ayuda a automatizar la creación, la administración y el despliegue de imágenes de servidor personalizadas.
Amazon FSx for Windows File Server proporciona almacenamiento compartido totalmente gestionado en Windows Server. Siguiendo este patrón, en el FSx caso de Windows, File Server proporciona almacenamiento compartido para los datos y los archivos de registro de SQL Server y para el testigo de quórum.
AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
AWS Key Management Service (AWS KMS) le ayuda a crear y controlar claves criptográficas para proteger sus datos. En este patrón, se utiliza para cifrar los secretos de Secrets Manager, el almacenamiento de SQL Server en los volúmenes de Amazon Elastic Block Store (Amazon EBS) y el FSx sistema de archivos de Windows File Server.
AWS Secrets Manager lo ayuda a reemplazar las credenciales codificadas en su código, incluidas contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación. En este patrón, las credenciales de Active Directory para instalar y ejecutar SQL Server, las credenciales de
sa
usuario y la información de conexión a la base de datos se almacenan en Secrets Manager.Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos. Este patrón utiliza un bucket de Amazon S3 para almacenar la imagen de instalación de SQL Server.
Amazon Virtual Private Cloud (Amazon VPC) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS.
Otras herramientas
Microsoft SQL Server FCIs
se instala en los nodos del clúster de Windows Server. Además, se pueden instalar en varias subredes. En este patrón, las instancias FCI de SQL Server se instalan en los nodos de WSFC. Terraform
es una herramienta de infraestructura como código (IaC) que le ayuda a usar el código para aprovisionar y administrar la infraestructura y los recursos de la nube. En este patrón, Terraform se utiliza para crear los recursos y configurar las instancias FCI de SQL Server. Los clústeres de conmutación por error de Windows Server
proporcionan características de infraestructura que respaldan la alta disponibilidad de las aplicaciones de servidor alojadas, como SQL Server. En este patrón, los nodos de la FCI utilizan la funcionalidad WSFC para proporcionar una alta disponibilidad local mediante la redundancia a nivel de instancia.
Repositorio de código
El código de este patrón está disponible en el repositorio - -sql-server. GitHub cluster-amazon-elastic-compute cloud-amazon-fsx-microsoft
Un
README.md
archivo que proporciona una descripción general de la solución e información adicional sobre la instalación y el usoUn conjunto básico de archivos de configuración de Terraform y un módulo FSx específico de Amazon para aprovisionar los componentes de este patrón
Un script de configuración de instancias que se ejecuta como un script de datos EC2 de usuario de Amazon
Un archivo
component.yam
l que Image Builder puede usar para crear una AMI personalizada
Prácticas recomendadas
Seguridad y parches
Las instalaciones y configuraciones previas de la AMI son los requisitos mínimos para implementar clústeres FCI de SQL Server. Es posible que se necesiten configuraciones y software adicionales para cumplir con los estándares y requisitos de seguridad de su organización.
Tras la implementación, aplique parches a Windows de forma continua. Parchee directamente las instancias en ejecución o cree una nueva AMI con los últimos parches de Windows y sustituya las instancias (una por una) por la nueva AMI. AWS publica AMIs mensualmente un nuevo Windows que contiene los últimos parches, controladores y agentes de lanzamiento del sistema operativo. Le recomendamos que busque la AMI más reciente cuando lance nuevas instancias o cuando cree sus propias imágenes personalizadas.
Las EC2 instancias de Amazon están configuradas para permitir todo el tráfico saliente. Cuando se implementan en un entorno de producción, se deben establecer reglas de salida en el grupo de seguridad para restringir este tráfico a los destinos requeridos.
El sistema de archivos del servidor de archivos FSx para Windows puede registrar automáticamente los registros de auditoría para el uso compartido de archivos y el acceso a archivos y carpetas y enviarlos al destino deseado si así lo requiere su entorno.
Rota los secretos de Secrets Manager automáticamente de forma regular. Para el par de claves de EC2 instancia de Amazon, considere una solución de rotación automática, tal como se describe en Cómo usar AWS Secrets Manager para almacenar y rotar pares de claves SSH de forma segura
. Para las credenciales de Active Directory y los secretos de sa
credenciales de SQL Server, configure la rotación automática de acuerdo con sus políticas de administración de contraseñas.
Administración de Active Directory
Como parte del clúster de la FCI, Windows genera un objeto de nombre de equipo (CNO) en Active Directory. El CNO responde a las solicitudes de DNS y reenvía el tráfico al nodo SQL activo. No recomendamos usar este DNS proporcionado por Active Directory. El TTL es demasiado alto para proporcionar un tiempo de conmutación por error razonable y, a menudo, tarda más de 5 minutos en reflejar la nueva dirección IP principal. Por el contrario, para las instalaciones de alta disponibilidad, el Network Load Balancer interno está configurado para realizar la conmutación por error en 30 segundos.
Se necesita un administrador de dominio de Active Directory para crear el clúster. Este requisito se debe a los elevados permisos necesarios para crear los objetos del clúster y modificar los permisos en Active Directory. Sin embargo, no es necesario que los servicios de SQL Server se ejecuten como administrador de dominio. Por lo tanto, se recomienda crear un segundo usuario de Active Directory para este fin. Sin embargo, puede eliminar a este usuario si los servicios se ejecutarán como usuario administrador del dominio. En ese caso, el usuario administrador del dominio debe agregarse al grupo de administradores de Active Directory que se crea como parte de este patrón.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree grupos de Active Directory. | En AWS Managed Microsoft AD, cree los siguientes grupos:
Para obtener más información, consulte Crear un AWS Managed Microsoft AD grupo en la AWS documentación. | Administrador de AD |
Cree usuarios de Active Directory. | En AWS Managed Microsoft AD, cree los siguientes usuarios
Para obtener más información, consulte Crear un AWS Managed Microsoft AD usuario en la AWS documentación. | Administrador de AD |
Agregue credenciales de Active Directory a los secretos. | Use Secrets Manager para crear cuatro secretos para almacenar la siguiente información:
Para obtener más información, consulte Crear un AWS Secrets Manager secreto en la AWS documentación. | Administrador de AWS |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree la AMI de Windows. | Cree una AMI de Windows personalizada que incluya las configuraciones y el software necesarios. Para obtener más información, consulte Información adicional. | Administrador de AWS, AWS DevOps |
Instale Terraform. | Para instalar Terraform, siga las instrucciones del sitio web de Terraform | AWS DevOps |
Clonar el repositorio. | Clona el repositorio | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Modifique las variables de Terraform. | Actualice el Por ejemplo, actualice las | AWS DevOps |
Inicialice Terraform. | Para ver la implementación propuesta, navegue hasta la raíz del repositorio. Utilice la interfaz de línea de comandos (CLI) de Terraform para ejecutar | AWS DevOps |
Implemente recursos. | Para implementar el clúster de SQL y los recursos asociados, utilice la CLI de Terraform para ejecutarlo | AWS DevOps, administrador de AWS |
Valide la implementación. | Para validar la implementación, siga los siguientes pasos:
| Administrador de base de datos, administrador de sistemas |
Solución de problemas
Problema | Solución |
---|---|
Se completó el aprovisionamiento de Terraform, pero el administrador de clústeres de conmutación por error de Windows no muestra que se haya creado un clúster o que el clúster se encuentre en un estado no operativo. | La instalación completa de los recursos y la configuración de los clústeres pueden tardar entre 45 y 60 minutos. Una vez que Terraform se haya completado, el script de datos de usuario debe ejecutarse hasta su finalización, lo que requiere varios reinicios. Para supervisar el progreso, puede utilizar el |
Tras aprovisionar un clúster en funcionamiento, no se puede utilizar Terraform para eliminar y volver a crear el clúster. Terraform finaliza, pero el clúster no está configurado correctamente. | Parte del proceso de aprovisionamiento implica registrar máquinas y objetos virtuales en el DNS de Active Directory y Active Directory. Cuando existen nombres de computadora para los nodos del EC2 clúster de Amazon y el nodo del clúster, la FCI no se puede inicializar correctamente y no se realizará el aprovisionamiento. Para solucionar este problema, lleve a cabo los siguientes pasos:
|
Recursos relacionados
AWS documentación
Información adicional
Información del módulo Terraform
Este módulo utiliza una combinación de configuración de AMI y configuración de datos de usuario para obtener una buena combinación de tiempo de aprovisionamiento y estabilidad. Durante el aprovisionamiento, Windows requiere varios reinicios y esperas. Se ha implementado un método de puntos de control para evitar que se produzcan bucles infinitos durante los reinicios de los datos de usuario persistentes. Los datos del usuario están configurados para ser persistentes. Por lo tanto, los scripts de configuración de los datos de usuario deben seguir desarrollándose y deben seguir desarrollándose para que sean idempotentes. La idempotencia agiliza el proceso de actualización, ya que permite intercambiar instancias durante un ciclo de actualización sin necesidad de realizar una configuración manual para volver a unir los clústeres de la FCI o volver a crearlos.
Cadenas de conexión de SQL Server y clústeres de conmutación por error
El módulo publicará un secreto con la dirección del punto final que debe usarse en las cadenas de conexión de esta base de datos. El nombre secreto sigue el formato{environment_name}/sqlserver/{cluster_name}/endpoint
. Para las instalaciones en las que solo se utiliza un nodo, puede esperar que sea la dirección IP de la interfaz de SQL Server de la EC2 instancia de Amazon. Para instalaciones de alta disponibilidad (dos instancias), puede esperar que sea el nombre DNS del Network Load Balancer interno.
Este módulo IPs no admite los clústeres virtuales de conmutación por error. Una IP virtual debe permanecer en la misma subred para que funcione. En AWS, una sola subred no puede abarcar varias zonas de disponibilidad. Por lo tanto, el uso de la IPs tecnología virtual eliminaría la posibilidad de que este módulo se considere de alta disponibilidad.
A cada EC2 instancia de Amazon se le asignan tres direcciones IP privadas. Su uso es el siguiente:
IP principal para el tráfico de red: la IP de origen para el tráfico de salida.
Comunicaciones FCI: se utilizan para mantener el estado y la sincronización del clúster de conmutación por error.
SQL Server (puerto TCP 1433): escucha y también detecta el tráfico intermitente para determinar qué instancia es la principal.
Configuración de la VPC
Los requisitos previos incluyen un conjunto de opciones de DHCP configurado para usar Active Directory para la resolución de DNS. Sin embargo, este requisito previo no es obligatorio. El requisito más importante es que las EC2 instancias puedan resolver su nombre de dominio de Active Directory. El cumplimiento de este requisito se puede lograr de otras maneras, como mediante el uso de Amazon Route 53 Resolver puntos finales. Para obtener más información, consulte Integración de la resolución de DNS de su servicio de directorio con Amazon Route 53 Resolvers
Configuración de AMI
La AMI utilizada en este patrón debe contener los siguientes requisitos previos de software y configuraciones:
Descargue y amplíe los archivos de instalación de SQL Server 2019 a
C:\SQL_Install_media
.Instale las siguientes funciones de Windows:
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
Desactive el firewall de Windows de la siguiente manera:
Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled False
Habilite el método de autenticación CredSSP (
<domain>
sustitúyalo por el nombre de dominio de Windows de su organización) de la siguiente manera:Enable-WSManCredSSP -Role "Server" -Force
Enable-WSManCredSSP -Role "Client" -DelegateComputer *.<domain>.com -Force
Establezca las siguientes claves de registro:
Permita las credenciales de autenticación NTLM:
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation
Nombre:
AllowFreshCredentialsWhenNTLMOnly
Valor: 1
Tipo:
REG_DWORD
Permita que los equipos de dominio local utilicen NTLM desde: PowerShell
Ruta:
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnly
Nombre:
1
Valor:
wsman/*.<domain>.com
Tipo:
REG_SZ
Configure la PowerShell galería de la siguiente manera
: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
Instale los siguientes PowerShell módulos de Windows
*
:Install-Module -Name ComputerManagementDsc
Install-Module -Name FailOverClusterDsc
Install-Module -Name PSDscResources
Install-Module -Name xSmbShare
Install-Module -Name xActiveDirectory
Install-Module -Name SqlServer
Para usar Image Builder para crear la AMI, siga las instrucciones de Crear una canalización de imágenes mediante el asistente de consola de EC2 Image Builder en la documentación de Image Builder. Para crear el componente de la receta con los requisitos previos anteriores, siga los siguientes pasos:
Descargue el archivo component.yaml
de la ami
carpeta del repositorio. GitHubCopie el contenido en un nuevo componente de Image Builder.
Actualice los siguientes marcadores de posición con su información:
<domain>
— Su nombre de dominio de Active Directory<bucket_name>
— Nombre del bucket de Amazon S3 que contiene la imagen de SQL Server