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á.
Implante instâncias de cluster de failover do SQL Server na Amazon EC2 e na Amazon FSx usando o Terraform
Mark Hudson e Matt Burgess, Amazon Web Services
Resumo
Esse padrão usa o Terraform para implantar instâncias de cluster de failover do SQL Server (FCIs) em nós do Windows Server Failover Cluster (WSFC) no Amazon Elastic Compute Cloud (Amazon). EC2 Além disso, o padrão usa o armazenamento FSx compartilhado da Amazon para dados e arquivos de log.
Quando os bancos de dados do SQL Server são migrados para AWS, a primeira opção é o Amazon RDS for SQL Server. No entanto, às vezes o Amazon RDS for SQL Server não é adequado e o SQL Server deve ser implantado na EC2 Amazon em uma arquitetura altamente disponível. Nessa solução, o SQL Server FCIs é instalado nos nós do WSFC.
O módulo Terraform incluído nesse padrão provisiona até duas instâncias EC2 do Amazon SQL Server. Um sistema de arquivos Amazon FSx para Windows File Server atua como testemunha do quórum e armazena dados compartilhados e arquivos de log. Independentemente do número de instâncias configuradas, os nós da instância do SQL Server sempre criarão e ingressarão em um cluster de FCI para garantir a paridade do ambiente. (Normalmente, uma instância é configurada para desenvolvimento e duas instâncias para ambientes de produção.) Para configurações que usam dois nós para alta disponibilidade, um Network Load Balancer interno é provisionado. O Network Load Balancer usa uma sonda de integridade configurada no cluster de FCI para identificar qual nó é o principal.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS.
A Amazon Virtual Private Cloud (Amazon VPC) com duas sub-redes em zonas de disponibilidade separadas.
Conjunto de opções de DHCP da Amazon VPC. Configure o nome de domínio para resolver seu nome de domínio do Active Directory e o domínio e os servidores de nomes NetBIOS para apontar para seus controladores de domínio do Active Directory. Para obter mais informações, consulte Configuração da VPC em Informações adicionais.
AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).
Imagem de máquina da Amazon (AMI) personalizada. Para obter mais detalhes, consulte Configuração da AMI em Informações adicionais.
O Bucket do Amazon Simple Storage Service (Amazon S3) que contém a imagem ISO do SQL Server. Esse pré-requisito só é necessário se você estiver usando o EC2 Image Builder com o
component.yamlarquivo fornecido para criar a AMI personalizada.AWS Key Management Service (AWS KMS) chave de criptografia.
Por padrão, o SQL Server é instalado usando uma chave de produto da edição para desenvolvedores. Espera-se que os sistemas de produção usem uma chave de produto válida passada para o módulo pela variável relevante.
Limitações
Essa solução exige o AWS Managed Microsoft AD. No entanto, se preferir, é possível usar uma implementação autogerenciada do Active Directory. Para fazer isso, modifique o módulo Amazon FSx Terraform incluído para remover o
active_directory_idatributo. Em seguida, adicione os quatro atributos necessários para o Active Directory autogerenciado, conforme mostrado na documentação do Terraform. O SQL Server está configurado para usar a autenticação de modo misto. Caso prefira, é possível usar a autenticação somente para Windows. Para isso, no script de dados do usuário fornecido, remova os parâmetros
/SECURITYMODEe/SAPWDfornecidos para o comandosetup.exe. Você pode remover o arquivosql_accounts.tfe modificar o arquivoinstances.tfpara remover a entradasql_sa_password.Ao excluir um cluster implantado, você deve remover os objetos do computador virtual correspondentes e os objetos do computador individuais no Active Directory. Para remover os objetos, use as ferramentas administrativas do Active Directory.
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region
. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.
Versões do produto
Essa solução foi testada com as seguintes versões:
Windows Server 2019
SQL Server 2019
Arquitetura
Pilha de tecnologia de origem
SQL Server
Pilha de tecnologias de destino
SQL Server FCI em nós WSFC usando Amazon EC2
Servidor FSx de arquivos Amazon para Windows
Bucket do Amazon S3.
AWS Secrets Manager
AWS Managed Microsoft AD
AWS KMS
AWS Identity and Access Management (IAM)
Arquitetura de destino
O diagrama apresentado a seguir ilustra a arquitetura para esta solução.

O diagrama mostra o seguinte:
Uma função do IAM que fornece às EC2 instâncias acesso ao Secrets Manager AWS KMS e ao Secrets Manager
Dois nós do SQL Server implantados em EC2 instâncias da Amazon em sub-redes privadas em duas zonas de disponibilidade
Um Network Load Balancer para facilitar as conexões com a instância ativa do SQL Server (não implantado ao configurar um cluster de nó único)
Sistema de arquivos Amazon FSx para Windows File Server implantado em ambas as sub-redes privadas para armazenamento compartilhado pelos nós do SQL Server
O Secrets Manager para armazenar as credenciais e as configurações do Active Directory e do SQL Server
O bucket do Amazon S3 para armazenar a imagem de instalação do SQL Server
AWS Managed Microsoft AD para autenticação do Windows
AWS KMS para criar a chave de criptografia
Automação e escala
Você pode automatizar a implantação da arquitetura de destino usando os módulos do Terraform que estão no GitHub repositório.terraform.tfvars para incluir valores de variáveis específicos do seu ambiente. O bucket, os AWS Managed Microsoft AD componentes, a chave de AWS KMS criptografia e alguns segredos do Amazon S3 são pré-requisitos para essa implantação e não estão incluídos no código do Terraform.
Ferramentas
Serviços da AWS
AWS Directory Service for Microsoft Active Directorypermite que suas cargas de trabalho e AWS recursos com reconhecimento de diretório usem o Microsoft Active Directory no. Nuvem AWS Nesse padrão, AWS Managed Microsoft AD é usado para autenticação do Windows Server e SQL Server e para DNS.
O Amazon Elastic Compute Cloud (Amazon EC2) fornece capacidade de computação escalável no. Nuvem AWS Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente. Nesse padrão, as instâncias do cluster de failover do SQL Server são instaladas nas EC2 instâncias da Amazon.
EC2 O Image Builder ajuda você a automatizar a criação, o gerenciamento e a implantação de imagens personalizadas do servidor.
O Amazon FSx para Windows File Server fornece armazenamento compartilhado totalmente gerenciado no Windows Server. Nesse padrão, FSx para Windows, o File Server fornece armazenamento compartilhado para dados e arquivos de log do SQL Server e para a testemunha do quórum.
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
AWS Key Management Service (AWS KMS) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados. Nesse padrão, ele é usado para criptografar segredos do Secrets Manager, o armazenamento do SQL Server nos volumes do Amazon Elastic Block Store (Amazon EBS) e o sistema de arquivos do FSx Windows File Server.
O AWS Secrets Manager ajuda a substituir credenciais codificadas, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo por programação. Neste padrão, as credenciais do Active Directory para instalar e executar o SQL Server, as credenciais do usuário
sae as informações de conexão do banco de dados são armazenadas no Secrets Manager.O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados. Este padrão usa um bucket do Amazon S3 para armazenar a imagem de instalação do SQL Server.
A Amazon Virtual Private Cloud (Amazon VPC) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.
Outras ferramentas
O Microsoft SQL Server FCIs
é instalado nos nós de cluster do Windows Server. Além disso, eles podem ser instalados em várias sub-redes. Neste padrão, as instâncias FCI do SQL Server são instaladas nos nós do WSFC. O Terraform
é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código. Neste padrão, o Terraform é usado para criar os recursos e configurar as instâncias FCI do SQL Server. O cluster de failover do Windows Server
fornece recursos de infraestrutura que oferecem suporte à alta disponibilidade de aplicações de servidor hospedadas, como o SQL Server. Neste padrão, os nós FCI usam a funcionalidade do WSFC para fornecer alta disponibilidade local por meio de redundância no nível da instância.
Repositório de código
O código desse padrão está disponível no repositório GitHub cluster-amazon-elastic-compute- cloud-amazon-fsx-microsoft -sql-server
Um arquivo
README.mdque fornece uma visão geral da solução e informações adicionais de instalação e usoUm conjunto básico de arquivos de configuração do Terraform e um módulo FSx específico da Amazon para provisionar os componentes desse padrão
Um script de configuração de instância que é executado como um script de dados EC2 do usuário da Amazon
Um arquivo
component.yaml que o Image Builder pode usar para criar uma AMI personalizada
Práticas recomendadas
Segurança e patches
As instalações e configurações pré-requisitos da AMI são os requisitos mínimos para implantar clusters de FCI do SQL Server. Software e configurações adicionais podem ser necessários para atender aos padrões e os requisitos de segurança da sua organização.
Após a implantação, corrija o Windows continuamente. Corrija diretamente as instâncias em execução ou crie uma nova AMI com os patches mais recentes do Windows e substitua as instâncias (uma por vez) usando a nova AMI. AWS lança AMIs mensalmente o novo Windows que contém os patches, drivers e agentes de lançamento mais recentes do sistema operacional. Recomendamos verificar se está usando a AMI mais recente ao executar novas instâncias ou ao criar suas próprias imagens personalizadas.
As EC2 instâncias da Amazon são configuradas para permitir todo o tráfego de saída. Quando implantado em um ambiente de produção, as regras de saída no grupo de segurança devem ser implementadas para restringir esse tráfego aos destinos necessários.
O sistema FSx de arquivos do Windows File Server pode registrar automaticamente os registros de auditoria para compartilhamento de arquivos e acesso a arquivos e pastas e enviá-los para o destino desejado, se isso for um requisito em seu ambiente.
Alterne os segredos do Secrets Manager regularmente e de maneira automática. Para o par de chaves de EC2 instância da Amazon, considere uma solução de rotação automatizada, conforme descrito em Como usar o AWS Secrets Manager para armazenar e alternar pares de chaves SSH com segurança
. Para as credenciais do Active Directory e os segredos da credencial sado SQL Server, configure a rotação automática de acordo com suas políticas de gerenciamento de senhas.
Gerenciamento do Active Directory
Como parte do cluster de FCI, o Windows gera um objeto de nome de computador (CNO) no Active Directory. O CNO responde às solicitações de DNS e encaminha o tráfego para o nó do SQL ativo. Não recomendamos o uso desse DNS fornecido pelo Active Directory. O TTL é muito alto para fornecer um tempo razoável de failover e geralmente leva mais de cinco minutos para refletir o novo endereço IP primário. Por outro lado, para instalações de alta disponibilidade, o Network Load Balancer interno é configurado para failover em 30 segundos.
É necessário um administrador de domínio do Active Directory para criar o cluster. Esse requisito se deve às permissões elevadas necessárias para criar os objetos de cluster e modificar as permissões no Active Directory. No entanto, os serviços do SQL Server não precisam ser executados como administrador de domínio. Por isso, recomendamos criar um segundo usuário do Active Directory para essa finalidade. No entanto, você pode eliminar esse usuário se os serviços forem executados como usuário administrador do domínio. Nesse caso, o usuário administrador do domínio deve ser adicionado ao grupo de administradores do Active Directory criado como parte deste padrão.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Crie os grupos do Active Directory. | Em AWS Managed Microsoft AD, crie os seguintes grupos:
Para obter mais detalhes, consulte Criação de um AWS Managed Microsoft AD grupo na AWS documentação. | Administrador do AD |
Crie os usuários do Active Directory. | Em AWS Managed Microsoft AD, crie os seguintes usuários
Para obter mais detalhes, consulte Criação de um AWS Managed Microsoft AD usuário na AWS documentação. | Administrador do AD |
Adicione as credenciais do Active Directory aos segredos. | Use o Secrets Manager para criar quatro segredos para armazenar as seguintes informações:
Para obter mais detalhes, consulte Criar um AWS Secrets Manager segredo na AWS documentação. | Administrador da AWS |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Crie a AMI do Windows. | Crie uma AMI personalizada do Windows que inclua o software e as configurações pré-requisitos. Para obter mais detalhes, consulte Informações adicionais. | Administrador da AWS, AWS DevOps |
Instale o Terraform. | Para instalar o Terraform, siga as instruções no site do Terraform | AWS DevOps |
Clonar o repositório. | Clone o repositório | AWS DevOps |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Modifique as variáveis do Terraform. | Atualize o arquivo Por exemplo, atualize as variáveis | AWS DevOps |
Inicializar o Terraform. | Para ver a implantação proposta, navegue até a raiz do repositório. Use a interface de linha de comandos (CLI) do Terraform para executar | AWS DevOps |
Implante os recursos. | Para implantar o cluster do SQL e os recursos associados, use a CLI do Terraform para executar | AWS DevOps, administrador da AWS |
Valide a implantação. | Para validar a implantação, siga as etapas abaixo:
| DBA, administrador de sistemas da AWS |
Solução de problemas
| Problema | Solução |
|---|---|
O provisionamento do Terraform foi concluído, mas o gerenciador de cluster de failover do Windows não mostra que um cluster foi criado ou que o cluster está em um estado inoperável. | Toda a instalação dos recursos e a configuração dos clusters podem levar de 45 a 60 minutos. Depois que o Terraform for concluído, o script de dados do usuário deverá ser executado até a conclusão, o que requer várias reinicializações. Para monitorar o progresso, você pode usar o diretório |
Depois de provisionar um cluster em funcionamento, o uso do Terraform para excluir e recriar o cluster não é bem-sucedido. O Terraform é concluído, mas o cluster não está configurado corretamente. | Parte do processo de provisionamento envolve o registro de máquinas e objetos virtuais no Active Directory e no DNS do Active Directory. Quando existem nomes de computador para os nós do EC2 cluster da Amazon e para o nó do cluster, o FCI não pode inicializar corretamente e falhará no provisionamento. Para resolver esse problema, execute as seguintes etapas:
|
Recursos relacionados
AWS documentação
Mais informações
Informações do módulo do Terraform
Este módulo usa uma combinação de configuração de AMI e configuração de dados do usuário para obter uma boa combinação de tempo de provisionamento e estabilidade. Durante o provisionamento, o Windows exige várias reinicializações e esperas. Um método de pontos de verificação foi implementado para proteger contra loops infinitos durante as reinicializações dos dados persistentes do usuário. Os dados do usuário estão configurados para serem persistentes. Portanto, os scripts de configuração de dados do usuário devem continuar sendo desenvolvidos para serem idempotentes. A idempotência simplifica o processo de atualização, permitindo que as instâncias sejam trocadas durante um ciclo de atualização sem configuração manual para reingressar ou recriar clusters do FCI.
Strings de conexão e cluster de failover do SQL Server
O módulo publicará um segredo contendo o endereço do endpoint que deve ser usado nas strings de conexão desse banco de dados. O nome do segredo segue o formato {environment_name}/sqlserver/{cluster_name}/endpoint. Para instalações em que apenas um nó é usado, você pode esperar que esse seja o endereço IP da interface do SQL Server da EC2 instância Amazon. Para instalações de alta disponibilidade (duas instâncias), você pode esperar que esse seja o nome do DNS do Network Load Balancer interno.
O agrupamento virtual de failover IPs não é suportado neste módulo. Um IP virtual deve permanecer na mesma sub-rede para funcionar. Em AWS, uma única sub-rede não pode abranger várias zonas de disponibilidade. Portanto, o uso do virtual IPs eliminaria a capacidade desse módulo ser considerado altamente disponível.
Cada EC2 instância da Amazon recebe três endereços IP privados. Seu uso é o seguinte:
IP primário para tráfego de rede: o IP de origem para tráfego de saída.
Comunicações de FCI: usadas para manter o estado e a sincronização do cluster de failover.
SQL Server (porta TCP 1433): receptor e também escuta o tráfego de pulsação para determinar qual instância é primária.
Configuração de VPC
Os pré-requisitos listam um conjunto de opções de DHCP configurado para usar o Active Directory para resolução de DNS. No entanto, esse pré-requisito não é um requisito difícil. O requisito básico é que as EC2 instâncias sejam capazes de resolver seu nome de domínio do Active Directory. Atender a esse requisito pode ser feito de outras formas, como usando Amazon Route 53 Resolver endpoints. Para obter mais informações, consulte Integrando a resolução de DNS do seu serviço de diretório com os resolvedores do Amazon Route 53
Configuração da AMI
A AMI usada neste padrão deve conter os seguintes pré-requisitos de software e configurações:
Baixe e expanda os arquivos de instalação do SQL Server 2019 para
C:\SQL_Install_media.Instale os seguintes recursos do 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
Desabilite o firewall do Windows da seguinte maneira:
Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled False
Habilite o método de autenticação CredSSP (substitua
<domain>pelo nome de domínio Windows da sua organização) da seguinte forma:Enable-WSManCredSSP -Role "Server" -ForceEnable-WSManCredSSP -Role "Client" -DelegateComputer *.<domain>.com -Force
Defina as seguintes chaves de registro:
Permita credenciais de autenticação NTLM:
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegationNome:
AllowFreshCredentialsWhenNTLMOnlyValor: 1
Tipo:
REG_DWORD
Permita que computadores de domínio local usem o NTLM a partir de: PowerShell
Caminho:
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnlyNome:
1Valor:
wsman/*.<domain>.comTipo:
REG_SZ
Configure a PowerShell Galeria
da seguinte forma: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -ForceSet-PSRepository -Name PSGallery -InstallationPolicy Trusted
Instale os seguintes PowerShell módulos do Windows
*:Install-Module -Name ComputerManagementDscInstall-Module -Name FailOverClusterDscInstall-Module -Name PSDscResourcesInstall-Module -Name xSmbShareInstall-Module -Name xActiveDirectoryInstall-Module -Name SqlServer
Para usar o Image Builder para criar a AMI, siga as instruções em Criar um pipeline de imagem usando o assistente de console do EC2 Image Builder na documentação do Image Builder. Para criar o componente da fórmula com os pré-requisitos anteriores, siga as etapas abaixo:
Baixe o arquivo component.yaml
da amipasta do repositório. GitHubCopie o conteúdo em um novo componente do Image Builder.
Atualize os seguintes espaços reservados com suas próprias informações:
<domain>: seu nome de domínio do Active Directory<bucket_name>: nome do bucket do Amazon S3 que contém a imagem do SQL Server