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
Mark Hudson y Matt Burgess, Amazon Web Services
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 FCI y se unirán a él para garantizar la paridad del entorno. (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 equilibrador de carga de red interno. El equilibrador de carga de red 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 de máquina de Amazon (AMI) personalizada. Para obtener más información, consulte Configuración de AMI en Información adicional.
Bucket de Amazon Simple Storage Service (Amazon S3) que incluye la imagen ISO de SQL Server. Este requisito previo solo es necesario si se utiliza EC2 Image Builder con el
component.yamlarchivo 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_idatributo. A continuación, añada los cuatro atributos necesarios para la autoadministració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 solo de Windows. Para ello, en el script de datos de usuario proporcionado, elimine los parámetros
/SECURITYMODEy/SAPWDque se proporcionan al comandosetup.exe. Puede eliminar el archivosql_accounts.tfy modificar el archivoinstances.tfpara eliminar la entradasql_sa_password.Al eliminar un clúster implementado, debe eliminar los objetos de computadora virtual correspondientes y los objetos de equipo individuales de Active Directory. Para eliminar los objetos, utilice las herramientas administrativas de Active Directory.
Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS Services by Region
. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del 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
En el siguiente diagrama se muestra la arquitectura para 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 equilibrador de carga de red 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
Bucket 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
Automatización y escala
Puede automatizar el despliegue de la arquitectura de destino mediante los módulos de Terraform que se encuentran en el GitHub repositorioterraform.tfvars 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.
Tools (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 usuario
say 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 lo 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 facilita usar el código para aprovisionar y administrar los recursos y la infraestructura en la nube. En este patrón, Terraform se usa 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 GitHub cluster-amazon-elastic-compute- cloud-amazon-fsx-microsoft -sql-server
Un archivo
README.mdque 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.yaml que Image Builder puede usar para crear una AMI personalizada
Prácticas recomendadas
Seguridad y creación de parches
Las instalaciones y configuraciones de requisitos previos 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.
Después de la implementación, aplique los parches de 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 compruebe las AMI más recientes al lanzar nuevas instancias o al crear 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 compartir archivos y acceder a archivos y carpetas y enviarlos al destino deseado si así lo requiere su entorno.
Rote automáticamente los secretos de Secrets Manager 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 credenciales de sade 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 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 equilibrador de carga de red 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 este usuario si los servicios se ejecutan 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 |
Añada 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 Detalles adicionales. | Administrador de AWS, AWS DevOps |
Instale Terraform. | Para instalar Terraform, siga las instrucciones del sitio web de Terraform | AWS DevOps |
Clonar el repositorio. | Clone el repositorio | AWS DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Modifique las variables de Terraform. | Actualice el archivo Por ejemplo, actualice las variables | AWS DevOps |
Inicialice Terraform. | Para ver la implementación propuesta, navegue hasta la raíz del repositorio. Use la interfaz de la línea de comandos (CLI) de Terraform para ejecutar | AWS DevOps |
Implemente los recursos. | Para implementar el clúster de SQL y los recursos asociados, utilice la CLI de Terraform para ejecutar | AWS DevOps, administrador de AWS |
Valide la implementación. | Para validar la implementación, siga estos pasos:
| Administrador de base de datos, administrador de sistemas |
Resolució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 directorio |
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 equipo para los nodos del EC2 clúster de Amazon y el nodo del clúster, la FCI no se puede inicializar correctamente y se produce un error en el aprovisionamiento. Para solucionar este problema, siga estos 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 de usuario están configurados para ser persistentes. Por lo tanto, los scripts de configuración de los datos de usuario 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 conexión que debe usarse en las cadenas de conexión de esta base de datos. El nombre del secreto sigue este 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 equilibrador de carga de red 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. El uso es como se indica a continuación:
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): oyente y también escucha el tráfico intermitente para determinar qué instancia es la principal.
Configuración de la VPC
Los requisitos previosincluyen 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 tu 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 características de Windows:
Install-WindowsFeature Failover-ClusteringInstall-WindowsFeature RSAT-AD-PowerShellInstall-WindowsFeature RSAT-AD-ToolsInstall-WindowsFeature RSAT-Clustering-MgmtInstall-WindowsFeature RSAT-Clustering-PowerShellInstall-WindowsFeature RSAT-Clustering-CmdInterface
Deshabilite el firewall de Windows como se indica a continuación:
Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled False
Habilite el método de autenticación CredSSP (sustituya
<domain>por el nombre de dominio de Windows de su organización) de la siguiente manera:Enable-WSManCredSSP -Role "Server" -ForceEnable-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\CredentialsDelegationNombre:
AllowFreshCredentialsWhenNTLMOnlyValor: 1
Tipo:
REG_DWORD
Permita que los ordenadores de dominio local utilicen NTLM desde: PowerShell
Ruta:
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnlyNombre:
1Valor:
wsman/*.<domain>.comTipo:
REG_SZ
Configure la PowerShell galería de la siguiente manera
: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -ForceSet-PSRepository -Name PSGallery -InstallationPolicy Trusted
Instale los siguientes PowerShell módulos de Windows
*:Install-Module -Name ComputerManagementDscInstall-Module -Name FailOverClusterDscInstall-Module -Name PSDscResourcesInstall-Module -Name xSmbShareInstall-Module -Name xActiveDirectoryInstall-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 estos pasos:
Descargue el archivo component.yaml
de la carpeta del amirepositorio. 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