Configure una infraestructura Multi-AZ para una FCI Always On de SQL Server mediante Amazon FSx - Recomendaciones de AWS

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.

Configure una infraestructura Multi-AZ para una FCI Always On de SQL Server mediante Amazon FSx

Creado por Manish Garg (AWS), T.V.R.L.Phani Kumar Dadi (AWS), Nishad Mankar (AWS) y RAJNEESH TYAGI (AWS)

Repositorio de código: -automation aws-windows-failover-cluster

Entorno: PoC o piloto

Origen: Base de datos de Microsoft SQL Server en las instalaciones

Destino: Microsoft SQL Server en EC2

Tipo R: volver a alojar

Carga de trabajo: Microsoft

Tecnologías: migración; infraestructura; DevOps

Servicios de AWS: AWS Managed Microsoft AD; Amazon EC2; Amazon FSx; AWS Systems Manager

Resumen

Si necesita migrar rápidamente una gran cantidad de instancias de clúster de conmutación por error (FCI) Always On de Microsoft SQL Server, este patrón puede ayudarle a minimizar el tiempo de aprovisionamiento. Al utilizar la automatización y Amazon FSx para Windows File Server, reduce los esfuerzos manuales, los errores cometidos por el hombre y el tiempo necesario para implementar una gran cantidad de clústeres.

Este patrón configura la infraestructura para las FCI de SQL Server en una implementación de zona de disponibilidad múltiple (Multi-AZ) en Amazon Web Services (AWS). El aprovisionamiento de los servicios de AWS necesarios para esta infraestructura se automatiza mediante CloudFormation plantillas de AWS. La instalación de SQL Server y la creación de nodos de clúster en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) se realizan mediante comandos. PowerShell

Esta solución utiliza un sistema de archivos Amazon FSx para Windows Multi-AZ de alta disponibilidad como testigo compartido para almacenar los archivos de la base de datos de SQL Server. El sistema de archivos Amazon FSx y las instancias EC2 de Windows que alojan SQL Server se unen al mismo dominio de AWS Directory Service para Microsoft Active Directory (AWS Managed Microsoft AD).

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa

  • Un usuario de AWS con permisos suficientes para aprovisionar recursos mediante CloudFormation plantillas de AWS

  • AWS Directory Service para Microsoft Active Directory

  • Credenciales en AWS Secrets Manager para autenticarse en AWS Managed Microsoft AD en un par clave-valor:

    • ADDomainName: <Nombre del dominio>

    • ADDomainJoinUserName: <Nombre-de-usuario>

    • ADDomainJoinPassword: <Domain User Password>

    • TargetOU: <Target OU Value>

    Nota: Utilizará el mismo nombre clave en la automatización de AWS Systems Manager para la actividad de unión a AWS Managed Microsoft AD.

  • Archivos multimedia de SQL Server para la instalación de SQL Server y la creación de cuentas de servicio o dominio de Windows, que se utilizarán durante la creación del clúster

  • Una nube privada virtual (VPC), con dos subredes públicas en zonas de disponibilidad independientes, dos subredes privadas en las zonas de disponibilidad, una puerta de enlace de Internet, puertas de enlace NAT, asociaciones de tablas de enrutamiento y un servidor Jump

Versiones de producto

  • Microsoft Windows Server 2012 R2 y Microsoft SQL Server 2016

Arquitectura

Pila de tecnología de origen

  • Servidor en las instalaciones de SQL Server con FCI que utilizan una unidad compartida

Pila de tecnología de destino

  • Instancias de AWS EC2

  • Amazon FSx para Windows File Server

  • Manual de procedimiento de Automatización de AWS Systems Manager

  • Configuraciones de red (VPC, subredes, puerta de enlace de Internet, puertas de enlace NAT, servidor de salto, grupos de seguridad)

  • AWS Secrets Manager

  • AWS Managed Microsoft AD

  • Amazon EventBridge

  • AWS Identity y Access Management (IAM)

Arquitectura de destino

El siguiente diagrama muestra una cuenta de AWS en una sola región de AWS, con una VPC que incluye dos zonas de disponibilidad, dos subredes públicas con puertas de enlace NAT, un servidor de salto en la primera subred pública, dos subredes privadas, cada una con una instancia EC2 para un nodo de SQL Server en un grupo de seguridad de nodos, y un sistema de archivos Amazon FSx que se conecta a cada uno de los nodos de SQL Server. También se incluyen AWS Directory Service EventBridge, Amazon, AWS Secrets Manager y AWS Systems Manager.

Arquitectura Multi-AZ con recursos en subredes públicas y privadas, con grupos de seguridad de nodos.

Automatizar y escalar

  • Puede usar AWS Systems Manager para unirse a AWS Managed Microsoft AD y realizar la instalación de SQL Server.

Herramientas

Servicios de AWS

  • AWS le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.

  • AWS Directory Service ofrece varias formas de utilizar Microsoft Active Directory (AD) con otros servicios de AWS, como Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) para SQL Server y Amazon FSx para Windows File Server.

  • Amazon Elastic Compute Cloud (Amazon EC2) proporciona capacidad de computación escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.

  • Amazon EventBridge es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, las funciones de Lambda de AWS, los puntos de conexión de invocación HTTP que utilizan destinos de API o los buses de eventos de otras cuentas de AWS.

  • AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.

  • AWS Secrets Manager le permite reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.

  • AWS Systems Manager le permite administrar las aplicaciones y la infraestructura que se ejecutan en la nube de AWS. Simplifica la administración de aplicaciones y recursos, reduce el tiempo requerido para detectar y resolver problemas operativos y ayuda a utilizar y administrar los recursos de AWS a escala de manera segura.

Otras herramientas

  • PowerShelles un programa de administración de automatización y configuración de Microsoft que se ejecuta en Windows, Linux y macOS. Este patrón utiliza PowerShell scripts.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub aws-windows-failover-cluster-automation.

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Implemente la CloudFormation pila Systems Manager.

  1. Inicie sesión en su cuenta de AWS y abra la consola de administración de AWS.

  2. Navegue hasta la CloudFormation consola y cargue la ssm.yaml plantilla para crear la CloudFormation pila de Systems Manager. Proporcione valores para los siguientes parámetros:

    • StateUnJoinAssociationLoggingBucketName— Proporcione un nombre para el depósito de S3 que la plantilla creará con fines de registro.

    • ssmAssociationAd UnjoinName: proporciona un nombre para el recurso. AWS::SSM::Association

    • SSM AutomationDocumentName: proporcione un nombre para el manual de automatización de Systems Manager.

    • EventBridgeName— Proporcione un nombre para el bus de EventBridge eventos.

  3. Implemente la CloudFormation pila de Systems Manager lanzando la ssm.yaml CloudFormation plantilla. La plantilla creará el manual de ejecución de Systems Manager Automation que se iniciará cuando se lance una nueva instancia de EC2 con la etiqueta ADJoined: FSXADD. El manual de procedimiento de Automation añadirá la instancia al directorio de AWS Managed Microsoft AD.

AWS DevOps, DevOps ingeniero

Implemente la pila de infraestructuras.

Tras la correcta implementación de la pila de Systems Manager, cree la pila infra, que incluye los nodos de instancia EC2, los grupos de seguridad, el sistema de archivos Amazon FSx para Windows File Server y el rol de IAM.

  1. Navegue hasta la CloudFormation consola e inicie la infra-cf.yaml plantilla. Para implementar esta pila, se requieren los siguientes parámetros:

    • ActiveDirectoryId: Identificador de AWS Managed Microsoft AD

    • ADDnsIpAddresses1: Dirección IP DNS principal de AWS Managed Microsoft AD

    • ADDnsIpAddresses2: Dirección IP DNS secundaria de Microsoft AD gestionado por AWS

    • FSxSecurityGroupName: Nombre del grupo de seguridad de Amazon FSx

    • FSxWindowsFileSystemName: Nombre de la unidad Amazon FSx

    • ImageID: Identificador de la imagen base de Windows 2012 R2 o Imagen de máquina de Amazon (AMI) utilizada para crear el nodo de instancia de SQL Server

    • KeyPairName: Par clave-valor para adjuntar a los nodos de la instancia EC2 para su acceso

    • Node1SecurityGroupName: Nombre del grupo de seguridad del primer nodo

    • Node2SecurityGroupName: Nombre del grupo de seguridad del segundo nodo

    • OUSecretName: Nombre del secreto que contiene la información de AWS Managed Microsoft AD

    • PrivateSubnet1: Identificador de la primera subred privada

    • PrivateSubnet2: Identificador de la segunda subred privada

    • SqlFSxFCIName: Nombre de la etiqueta aplicada a los nodos principal y secundario y a Amazon FSx.

    • SqlFSxServerNetBIOSName1: Nombre del nodo de la instancia EC2 principal (15 caracteres como máximo)

    • SqlFSxServerNetBIOSName2: Nombre del nodo de la instancia EC2 secundaria (15 caracteres como máximo)

    • VPC: ID de VPC

    • WorkloadInstanceType: tipo de instancia EC2

    Implemente la pila de infra. La pila creará todos los componentes de infraestructura necesarios para configurar la FCI de Windows SQL Server.

  2. Una vez lanzados los nodos de la instancia EC2, se invocará el documento de automatización de Systems Manager para unir estas instancias a AWS Managed Microsoft AD. Puede realizar un seguimiento del progreso en la página Automatización de la consola de Systems Manager.

AWS DevOps, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Instale las herramientas de Windows.

  1. Inicie sesión en la instancia EC2 principal, que es el nodo 1. Para instalar las funciones de Windows (Active Directory y FCI Tools), ejecute el siguiente PowerShell script.

    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. Inicie sesión en la instancia EC2 secundaria, que es el nodo 2, y ejecute el mismo script para habilitar las funciones en el nodo 2.

AWS DevOps, DevOps ingeniero, administrador de bases de datos

Preconfigure los objetos informáticos del clúster en los servicios de dominio de Active Directory.

Para preconfigurar el objeto de nombre de clúster (CNO) en los Servicios de dominio de Active Directory (AD DS) y preconfigurar un objeto de equipo virtual (VCO) para una función agrupada, siga las instrucciones de Documentación de Windows Server.

AWS DevOps, DBA, ingeniero DevOps

Cree el WSFC.

Para crear el Clúster de Conmutación por error de Windows Server (WSFC), haga lo siguiente:

  1. Inicie sesión en la instancia EC2 principal, que es el nodo 1. Para crear el recurso compartido de archivos Amazon FSx y conceder acceso total a la cuenta de servicio de AD indicada, ejecute el siguiente código.

    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 }

    Este comando también creará el recurso compartido de archivos disponible de forma continua (CA), que está optimizado para su uso en Microsoft SQL Server.

  2. Para crear el clúster de conmutación por error en la instancia principal (nodo 1), ejecute el siguiente comando.

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

    El comando requiere los siguientes parámetros:

    • Name: el nombre del clúster (CNO)

    • Node: los nombres de los nodos principal y secundario, respectivamente

    • StaticAddress: las direcciones IP secundarias de los nodos principal y secundario, respectivamente

    Importante: Un administrador de dominio o un usuario normal debe tener permiso de administrador en ambos nodos para crear el clúster de conmutación por error de Windows Server (WSFC). De lo contrario, el comando anterior fallará y devolverá el mensaje, You do not have administrator privilege on servers.

  3. Una vez creado el clúster, ejecute el comando siguiente para adjuntar el testigo del recurso compartido de archivos.

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

Instale el clúster de conmutación por error de SQL Server.

Una vez configurado el clúster de WSFC, instale el clúster de SQL Server en la instancia principal (node1).

  1. En la unidad T de ambos nodos, cree carpetas tempdb y log Las carpetas se utilizan en los PowerShell comandos.

  2. Después de copiar los archivos multimedia de SQL Server para la instalación de SQL Server en ambos nodos, ejecute el siguiente PowerShell comando en el nodo 1 para instalar SQL Server en el 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, ingeniero DevOps

Agregue un nodo secundario al clúster.

Para añadir SQL Server al nodo secundario (nodo 2), ejecute el siguiente PowerShell comando.

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, ingeniero DevOps

Pruebe la FCI de SQL Server.

  1. En la instancia de Windows de uno de los nodos, en Herramientas administrativas, inicie el administrador de Clúster de conmutación por error.

  2. Navegue hasta Nodos y confirme que el estado del nodo es Estado en ejecución.

  3. Seleccione Roles, abra el menú contextual (haga clic con el botón derecho) de SQL Server (MSSQLSERVER) y seleccione Mover y seleccionar nodo.

  4. Tras la selección del nodo, SQL Server debería estar ejecutándose en el otro nodo.

DBA, ingeniero DevOps
TareaDescripciónHabilidades requeridas

Eliminación de recursos.

Para limpiar los recursos, utilice el proceso de eliminación de CloudFormation pilas de AWS:

  1. Abra la CloudFormation consola de AWS.

  2. En la página Pilas, seleccione la pila infra. La pila se debe estar ejecutando en este momento.

  3. En el panel de detalles de la pila, seleccione Eliminar.

  4. Seleccione Eliminar pila cuando se le indique.

  5. Repita los pasos 2 a 4 para la pila de ssm.

Una vez que se haya completado la eliminación de la pila, la pila estará en el estado DELETE_COMPLETE. De forma predeterminada, las pilas en ese DELETE_COMPLETE estado no se muestran en la CloudFormation consola. Para mostrar las pilas eliminadas, debe cambiar el filtro de vista de pilas tal y como se describe en Visualización de las pilas eliminadas en la consola de AWS CloudFormation .

Si la eliminación ha fallado, la pila tendrá el estado DELETE_FAILED. Para obtener información sobre las soluciones, consulte los errores al eliminar una pila en la CloudFormation documentación.

AWS DevOps, DBA, ingeniero DevOps

Resolución de problemas

ProblemaSolución

Error de CloudFormation plantilla de AWS

Si la CloudFormation plantilla falla durante la implementación, haga lo siguiente:

  1. Abra la CloudFormation consola de AWS.

  2. En la página Stacks de la CloudFormation consola, selecciona la pila.

  3. Elija Eventos y compruebe el estado de la pila.

Error de conexión de AWS Managed Microsoft AD

Para solucionar los problemas de unión, siga estos pasos:

  1. Abra la consola de Systems Manager.

  2. Seleccione la región de implementación.

  3. En el panel izquierdo, elija Automatización y localice el manual de procedimientos de automatización fallida.

  4. Abra el manual de automatización y compruebe Estado de la ejecución y Pasos de ejecución.

  5. Investigue los detalles del paso fallido para ver el error o el fallo exactos.

Recursos relacionados