Configure a infraestrutura Multi-AZ para um SQL Server Always On FCI usando o Amazon FSx - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configure a infraestrutura Multi-AZ para um SQL Server Always On FCI usando o Amazon FSx

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

Repositório de código: aws-windows-failover-cluster -automation

Ambiente: PoC ou piloto

Origem: banco de dados do SQL Server on-premises

Destino: Microsoft SQL Server on EC2

Tipo R: redefinir a hospedagem

Workload: Microsoft

Tecnologias: Migração; Infraestrutura; DevOps

Serviços da AWS: AWS Managed Microsoft AD; Amazon EC2; Amazon FSx; AWS Systems Manager

Resumo

Se precisar migrar rapidamente um grande número de instâncias de cluster de failover (FCIs) do Microsoft SQL Server Always On, esse padrão pode ajudá-lo a minimizar o tempo de provisionamento. Ao usar a automação e o Amazon FSx para Windows File Server, ele reduz os esforços manuais, os erros cometidos por humanos e o tempo necessário para implantar um grande número de clusters.

Esse padrão configura a infraestrutura para FCIs do SQL Server em uma implantação (Multi-AZ) de Zona de Multidisponibilidade na Amazon Web Services (AWS). O provisionamento dos serviços da AWS necessários para essa infraestrutura é automatizado usando modelos da AWS CloudFormation. A instalação do SQL Server e a criação de nós de cluster em uma instância do Amazon Elastic Compute Cloud (Amazon EC2) são realizadas usando comandos. PowerShell

Esta solução usa um sistema de arquivos Multi-AZ do Amazon FSx para Windows altamente disponível como testemunha compartilhada para armazenar os arquivos de banco de dados do SQL Server. O sistema de arquivos do Amazon FSx e as instâncias do EC2 Windows que hospedam o SQL Server são unidas ao mesmo domínio do AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta AWS ativa

  • Um usuário da AWS com permissões suficientes para provisionar recursos usando CloudFormation modelos da AWS

  • AWS Directory Service para Microsoft Active Directory

  • Credenciais no AWS Secrets Manager para autenticação no AWS Managed Microsoft AD em um par de valores-chave:

    • ADDomainName: <Nome do domínio>

    • ADDomainJoinUserName: <Nome de usuário do domínio>

    • ADDomainJoinPassword: <Senha do usuário do domínio>

    • TargetOU: <Valor OU Alvo>

    Observação: você usará o mesmo nome de chave na AWS Systems Manager Automation para a atividade de junção do AWS Managed Microsoft AD.

  • Arquivos de mídia do SQL Server para instalação do SQL Server e contas de serviço ou domínio do Windows criadas, que serão usados durante a criação do cluster

  • Uma nuvem privada virtual (VPC), com duas sub-redes públicas em zonas de disponibilidade separadas, duas sub-redes privadas nas zonas de disponibilidade, um gateway da internet, gateways NAT, associações de tabelas de rotas e um servidor de salto

Versões do produto

  • Windows Server 2012 R2 e Microsoft SQL Server 2016

Arquitetura

Pilha de tecnologia de origem

  • SQL Server com FCIs on-premises usando um drive compartilhado

Pilha de tecnologias de destino

  • Instâncias AWS EC2

  • Amazon FSx para Windows File Server

  • Runbook do AWS Systems Manager Automation

  • Configurações de rede (VPC, sub-redes, gateway da internet, gateways NAT, servidor de salto, grupos de segurança)

  • AWS Secrets Manager

  • AWS Managed Microsoft AD

  • Amazon EventBridge

  • AWS Identity and Access Management (IAM)

Arquitetura de destino

O diagrama a seguir mostra uma conta da AWS em uma única região da AWS, com uma VPC que inclui duas zonas de disponibilidade, duas sub-redes públicas com gateways NAT, um servidor de salto na primeira sub-rede pública, duas sub-redes privadas, cada uma com uma instância do EC2 para um nó do SQL Server em um grupo de segurança de nós e um sistema de arquivos do Amazon FSx conectado a cada um dos nós do SQL Server. O AWS Directory Service, o Amazon EventBridge, o AWS Secrets Manager e o AWS Systems Manager também estão incluídos.

Arquitetura Multi-AZ com recursos em sub-redes públicas e privadas, com grupos de segurança de nós.

Automação e escala

  • Você pode usar o AWS Systems Manager para se juntar ao AWS Managed Microsoft AD e realizar a instalação do SQL Server.

Ferramentas

Serviços da AWS

  • CloudFormationA AWS ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.

  • O AWS Directory Service fornece várias maneiras de usar o Microsoft Active Directory (AD) com outros serviços da AWS, como o Amazon Elastic Compute Cloud (Amazon EC2), o Amazon Relational Database Service (Amazon RDS) para SQL Server e o Amazon FSx para Windows File Server.

  • O Amazon Elastic Compute Cloud (Amazon EC2) oferece capacidade computacional escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.

  • EventBridgeA Amazon é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, funções do Lambda, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outras contas da AWS.

  • O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.

  • O AWS Secrets Manager ajuda você a substituir credenciais codificadas em seu código, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo programaticamente.

  • O AWS Systems Manager ajuda você a gerenciar seus aplicativos e infraestrutura em execução na nuvem AWS. Isso simplifica o gerenciamento de aplicações e recursos, diminui o tempo para detectar e resolver problemas operacionais e ajuda você a gerenciar seus recursos da AWS de modo seguro e em grande escala.

Outras ferramentas

  • PowerShellé um programa de gerenciamento de automação e configuração da Microsoft executado em Windows, Linux e macOS. Esse padrão usa PowerShell scripts.

Repositório de código

O código desse padrão está disponível no repositório GitHub aws-windows-failover-cluster-automation.

Práticas recomendadas

Épicos

TarefaDescriçãoHabilidades necessárias

Implante a CloudFormation pilha do Systems Manager.

  1. Faça login em sua conta AWS e abra o Console de Gerenciamento da AWS.

  2. Navegue até o CloudFormation console e crie a CloudFormation pilha do Systems Manager fazendo o upload do ssm.yaml modelo. Forneça valores para os parâmetros a seguir:

    • StateUnJoinAssociationLoggingBucketName— Forneça um nome para o bucket do S3 que o modelo criará para fins de registro.

    • SSMAssociationAd UnjoinName — Forneça um nome para o recurso. AWS::SSM::Association

    • SSM AutomationDocumentName — Forneça um nome para o runbook do Systems Manager Automation.

    • EventBridgeName— Forneça um nome para o ônibus do EventBridge evento.

  3. Implante a CloudFormation pilha do Systems Manager iniciando o ssm.yaml CloudFormation modelo. O modelo criará o runbook do Systems Manager Automation, que será iniciado quando uma nova instância do EC2 com a tag ADJoined: FSXADD for iniciada. O runbook Automation (Automação) adicionará a instância ao diretório AWS Managed Microsoft AD.

AWS DevOps, DevOps engenheiro

Implante a pilha de infraestrutura.

Após a implantação bem-sucedida da pilha do Systems Manager, crie a pilha infra, que inclui nós de instância do EC2, grupos de segurança, o sistema de arquivos do Amazon FSx para Windows File Server e o perfil do IAM.

  1. Navegue até o CloudFormation console e inicie o infra-cf.yaml modelo. Para implantar essa pilha, os seguintes parâmetros são obrigatórios:

    • ActiveDirectoryId: ID do AWS Managed Microsoft AD

    • ADDnsIpAddresses1: endereço IP DNS primário do AWS Managed Microsoft AD

    • ADDnsIpAddresses2: endereço IP DNS secundário do AWS Managed Microsoft AD

    • FSxSecurityGroupName: nome do grupo de segurança Amazon FSx

    • FSxWindowsFileSystemName: nome da unidade Amazon FSx

    • ImageID: ID da imagem base do Windows 2012 R2 ou imagem de máquina da Amazon (AMI) usada para criar o nó da instância do SQL Server

    • KeyPairName: par de valores-chave a ser anexado aos nós da instância do EC2 para acesso

    • Node1SecurityGroupName: nome do primeiro grupo de segurança do nó

    • Node2SecurityGroupName: nome do grupo de segurança do segundo nó

    • OUSecretName: nome do segredo que contém as informações do AWS Managed Microsoft AD

    • PrivateSubnet1: ID da primeira sub-rede privada

    • PrivateSubnet2: ID da segunda sub-rede privada

    • SqlFSxFCIName: nome da tag aplicada aos nós primário e secundário e ao Amazon FSx.

    • SqlFSxServerNetBIOSName1: nome do nó primário da instância do EC2 (máximo de 15 caracteres)

    • SqlFSxServerNetBIOSName2: nome do nó secundário da instância do EC2 (máximo de 15 caracteres)

    • VPC: ID da VPC

    • WorkloadInstanceType: tipo de instância do EC2

    Implante a pilha infra. A pilha criará todos os componentes de infraestrutura necessários para configurar a FCI do Windows SQL Server.

  2. Depois que os nós da instância do EC2 forem lançados, o documento Systems Manager Automation será invocado para unir essas instâncias ao AWS Managed Microsoft AD. Você pode acompanhar o progresso na página Automação do console do Systems Manager.

AWS DevOps, DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Instale as ferramentas do Windows.

  1. Faça login na instância do EC2 primária, que é o nó 1. Para instalar os recursos do Windows (Active Directory e FCI Tools), execute o PowerShell script a seguir.

    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. Faça login na instância secundária do EC2, que é o nó 2, e execute o mesmo script para ativar os atributos no nó 2.

AWS DevOps, DevOps engenheiro, DBA

Pré-configure os objetos do computador do cluster nos serviços de domínio do Active Directory.

Para pré-configurar o objeto de nome de cluster (CNO) nos serviços de domínio do Active Directory (AD DS) e pré-configurar um objeto de computador virtual (VCO) para um perfil em cluster, siga as instruções na documentação do Windows Server.

AWS DevOps, DBA, engenheiro DevOps

Crie o WSFC.

Para criar o cluster do Windows Server Failover Clustering (WSFC), faça o seguinte:

  1. Faça login na instância do EC2 primária, que é o nó 1. Para criar o compartilhamento de arquivos do Amazon FSx e conceder acesso total à conta de serviço do AD listada, execute o código a seguir.

    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 }

    Esse comando também criará o compartilhamento de arquivos continuamente disponível (CA), que é otimizado para uso pelo Microsoft SQL Server.

  2. Para criar o cluster de failover na instância primária (nó 1), execute o comando a seguir.

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

    O comando requer os seguintes parâmetros:

    • Name: o nome do cluster (CNO)

    • Node: os nomes dos nós primários e secundários, respectivamente

    • StaticAddress: os endereços IP secundários dos nós primário e secundário, respectivamente

    Importante: um administrador de domínio ou usuário comum deve ter permissão de administrador em ambos os nós para criar o cluster do Windows Server Failover Clustering (WSFC). Caso contrário, o comando anterior falhará e retornará a mensagem, You do not have administrator privilege on servers.

  3. Depois que o cluster for criado, execute o comando a seguir para anexar a testemunha de compartilhamento de arquivos.

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

Instale o cluster de failover do SQL Server.

Depois que o cluster do WSFC estiver configurado, instale o cluster do SQL Server na instância primária (node1).

  1. Na unidade T em ambos os nós, crie pastas tempdb e log . As pastas são usadas nos PowerShell comandos.

  2. Depois de copiar os arquivos de mídia do SQL Server para instalação do SQL Server nos dois nós, execute o PowerShell comando a seguir no nó 1 para instalar o SQL Server no nó 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, engenheiro DevOps

Adicione um nó secundário ao cluster.

Para adicionar o SQL Server ao nó secundário (nó 2), execute o PowerShell comando a seguir.

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

Teste a FCI do SQL Server.

  1. Na instância do Windows de um dos nós, em Ferramentas Administrativas, inicie o Gerenciador de cluster de failover.

  2. Navegue até Nós e confirme se o status do nó é Status em execução.

  3. Selecione Perfis, abra o menu de contexto (clique com o botão direito do mouse) do SQL Server (MSSQLSERVER) e selecione Mover e selecionar nó.

  4. Após a seleção do nó, o SQL Server deve estar em execução no outro nó.

DBA, engenheiro DevOps
TarefaDescriçãoHabilidades necessárias

Limpar os recursos

Para limpar os recursos, use o processo de exclusão de CloudFormation pilhas da AWS:

  1. Abra o CloudFormation console da AWS.

  2. Na página Pilhas, selecione a pilha infra. A pilha deve estar em execução no momento.

  3. No painel de detalhes da pilha, escolha Excluir.

  4. Selecione Excluir pilha quando solicitado.

  5. Repita as etapas 2 a 4 para a pilha ssm.

Após a conclusão da exclusão da pilha, as pilhas estarão no estado DELETE_COMPLETE. As pilhas no DELETE_COMPLETE estado não são exibidas no CloudFormation console por padrão. Para exibir as pilhas excluídas, você deve alterar o filtro de visualização da pilha conforme descrito em Visualização das pilhas excluídas no console da AWS. CloudFormation

Se houver falha na exclusão, uma pilha estará no estado DELETE_FAILED. Para obter soluções, consulte Falhas na exclusão da pilha na CloudFormation documentação.

AWS DevOps, DBA, engenheiro DevOps

Solução de problemas

ProblemaSolução

Falha no CloudFormation modelo da AWS

Se o CloudFormation modelo falhar durante a implantação, faça o seguinte:

  1. Abra o CloudFormation console da AWS.

  2. Na página Pilhas no CloudFormation console, selecione a pilha.

  3. Selecione Eventos e verifique o status da pilha.

Falha na junção do AWS Managed Microsoft AD

Para solucionar os problemas de junção, siga estas etapas:

  1. Abra o console do Systems Manager.

  2. Selecione a região de implantação.

  3. No painel esquerdo, selecione Automação e localize o runbook de automação com falha.

  4. Abra o runbook de automação e verifique o status de execução e as etapas de execução.

  5. Investigue os detalhes da etapa que falhou para ver o erro ou a falha exatos.

Recursos relacionados