Automatize blue/green as implantações dos bancos de dados globais do Amazon Aurora usando os princípios de IaC - 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á.

Automatize blue/green as implantações dos bancos de dados globais do Amazon Aurora usando os princípios de IaC

Ishwar Chauthaiwale, ANKIT JAIN e Ramu Jagini, Amazon Web Services

Resumo

Gerenciar atualizações de bancos de dados, migrações ou esforços de escalabilidade pode ser um desafio para organizações que executam workloads críticas em bancos de dados globais do Amazon Aurora. Garantir que essas operações sejam realizadas sem interrupções, sem tempo de inatividade, é essencial para manter a disponibilidade do serviço e evitar interrupções para seus usuários.

Uma estratégia de blue/green implantação oferece uma solução para esse desafio, permitindo que você execute dois ambientes idênticos simultaneamente: azul (o ambiente atual) e verde (o novo ambiente). Uma blue/green estratégia permite que você implemente mudanças, realize testes e alterne o tráfego entre ambientes com o mínimo de risco e tempo de inatividade.

Esse padrão ajuda você a automatizar o processo de blue/green implantação dos bancos de dados globais do Aurora usando princípios de infraestrutura como código (IaC). Ele usa AWS CloudFormation, AWS Lambda, e o Amazon Route 53 para simplificar blue/green as implantações. Para melhorar a confiabilidade, ele usa identificadores de transação globais (GTIDs) para replicação. A replicação baseada em GTID fornece melhor consistência de dados e recursos de failover entre ambientes em comparação com a replicação de log binário (binlog).

nota

Este padrão pressupõe que você esteja usando um cluster de banco de dados global do Aurora edição compatível com MySQL do Aurora. Se você estiver usando o Aurora compatível com o PostgreSQL em vez disso, use os equivalentes PostgreSQL dos comandos do MySQL.

Siga as etapas neste padrão para fazer o seguinte:

  • Provisione um banco de dados global Aurora verde: usando CloudFormation modelos, você cria um ambiente verde que reflete seu ambiente azul existente.

  • Configurar a replicação baseada em GTID: você configura a replicação GTID para manter os ambientes azul e verde sincronizados.

  • Alternar o tráfego sem problemas: você usa o Route 53 e o Lambda para alternar automaticamente o tráfego do ambiente azul para o verde após a sincronização completa.

  • Finalizar a implantação: você valida que o ambiente verde está totalmente operacional como banco de dados primário e, em seguida, interrompe a replicação e limpa todos os recursos temporários.

A abordagem neste padrão fornece os seguintes benefícios:

  • Reduz o tempo de inatividade durante atualizações ou migrações críticas do banco de dados: a automação garante uma transição suave entre ambientes com o mínimo de interrupção do serviço.

  • Permite reversões rápidas: se surgir um problema depois que o tráfego for transferido para o ambiente verde, você poderá reverter rapidamente para o ambiente azul e manter a continuidade do serviço.

  • Melhora os testes e a verificação: o ambiente verde pode ser totalmente testado sem afetar o ambiente azul ativo, o que reduz a probabilidade de erros na produção.

  • Garante a consistência de dados: a replicação baseada em GTID mantém seus ambientes azul e verde sincronizados, o que evita perda de dados ou inconsistências durante a migração.

  • Mantém a continuidade dos negócios: automatizar suas blue/green implantações ajuda a evitar longas interrupções e perdas financeiras, mantendo seus serviços disponíveis durante atualizações ou migrações.

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS.

  • Um cluster de banco de dados global de origem do Aurora compatível com MySQL (ambiente azul). Os bancos de dados globais fornecem uma configuração multirregional para alta disponibilidade e recuperação de desastres. Para obter instruções sobre como configurar um cluster de banco de dados global, consulte a documentação do Aurora.

  • Replicação baseada em GTID habilitada no cluster de origem.

Limitações

  • 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 Serviços da AWS by Region. Para endpoints específicos, consulte a página Cotas e endpoints de serviços e clique no link correspondente ao serviço desejado.

Versões do produto

  • Aurora compatível com MySQL 8.0 ou posterior

Arquitetura

Usar a replicação GTID para sincronizar ambientes azuis e verdes em diferentes regiões.

O diagrama ilustra o seguinte:

  • Configuração de banco de dados global: um cluster de banco de dados global Aurora é implantado estrategicamente em dois. Regiões da AWS Essa configuração permite distribuição geográfica e redundância regional para recursos aprimorados de recuperação de desastres.

  • Replicação da região primária para a região secundária: o mecanismo de replicação lógica garante a sincronização perfeita dos dados da região primária para a região secundária. Essa replicação mantém a consistência de dados com latência mínima em distâncias geográficas.

  • Replicação baseada em GTID entre clusters: a replicação baseada em GTID mantém a consistência transacional e o fluxo de dados ordenado entre o cluster primário azul e o cluster primário verde e garante a sincronização confiável dos dados.

  • Replicação azul primária para secundária: a replicação lógica estabelece um pipeline de dados robusto entre o cluster principal azul e seu cluster secundário. Essa replicação permite a sincronização contínua de dados e a alta disponibilidade.

  • Configuração de DNS do Route 53: os registros da zona hospedada do Route 53 gerenciam a resolução de DNS para todos os endpoints do banco de dados de cluster azul e verde. Essa configuração fornece mapeamento contínuo de endpoints e permite o roteamento eficiente do tráfego durante cenários de failover.

Ferramentas

Serviços da AWS

  • O Amazon Aurora é um mecanismo de banco de dados relacional totalmente gerenciado criado para a nuvem e compatível com o MySQL e o PostgreSQL.

  • CloudFormationajuda você a modelar e configurar seus AWS recursos para que você possa passar menos tempo gerenciando esses recursos e mais tempo se concentrando nos aplicativos que são executados em AWS. Você cria um modelo que descreve todos os AWS recursos que você deseja e se CloudFormation encarrega de provisionar e configurar esses recursos para você.

  • O AWS Lambda é um serviço de computação que permite a execução de código sem a necessidade de provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. 

  • O Amazon Route 53 é um serviço web de DNS altamente disponível e escalável.

Práticas recomendadas

Recomendamos que você analise minuciosamente a AWS documentação para aprofundar sua compreensão da estratégia de implantação azul/verde, da replicação baseada em GTID e das políticas de roteamento ponderado no Route 53. Esse conhecimento é crucial para implementar e gerenciar com eficácia suas migrações de banco de dados, garantindo a consistência de dados e otimizando o roteamento de tráfego. Ao obter uma compreensão abrangente desses AWS recursos e das melhores práticas, você estará mais bem equipado para lidar com futuras atualizações, minimizar o tempo de inatividade e manter um ambiente de banco de dados resiliente e seguro.

Para obter diretrizes sobre como usar o Serviços da AWS para esse padrão, consulte a AWS documentação a seguir:

Épicos

TarefaDescriptionHabilidades necessárias

Crie um backup snapshot do cluster azul.

Em uma blue/green implantação, o ambiente verde representa uma versão nova e idêntica do seu ambiente de banco de dados atual (azul). Você usa o ambiente verde para testar atualizações com segurança, validar alterações e garantir a estabilidade antes de mudar o tráfego de produção. Ele atua como um ponto de partida para a implementação de alterações no banco de dados com o mínimo de interrupção no ambiente ativo.

Para criar um ambiente verde, primeiro você cria um snapshot do cluster primário (azul) em seu banco de dados global compatível com o Aurora MySQL. Esse snapshot serve como base para a criação do ambiente verde.

Para criar um snapshot:

  1. Faça login no console do Amazon Relational Database Service (Amazon RDS) Console de gerenciamento da AWS e abra o console do Amazon Relational Database Service (Amazon RDS).

  2. Selecione seu cluster primário (azul).

  3. Escolha Ações, Tirar snapshot.

  4. Forneça um nome para o snapshot, como blue-green-demo, e inicie o processo de backup.

Como alternativa, você pode usar o AWS Command Line Interface (AWS CLI) para criar o instantâneo:

aws rds create-db-cluster-snapshot --db-cluster-snapshot-identifier blue-green-demo --db-cluster-identifier ex-global-cluster --region eu-west-1

Certifique-se de que o snapshot tenha concluído com êxito antes de prosseguir para a próxima etapa.

DBA

Gere o CloudFormation modelo para seu banco de dados global e seus recursos.

O gerador CloudFormation IaC ajuda você a gerar CloudFormation modelos a partir de AWS recursos existentes. Use esse recurso para criar um CloudFormation modelo para seu banco de dados global atual compatível com o Aurora MySQL e seus recursos associados. Esse modelo configura grupos de sub-redes, grupos de segurança, grupos de parâmetros e outras configurações do.

  1. Siga as instruções na CloudFormation documentação para navegar até a ferramenta e conectá-la ao seu AWS ambiente.

  2. Selecione seu banco de dados global do Aurora e os recursos associados para gerar o modelo.

DBA

Modifique o CloudFormation modelo para o ambiente verde.

Personalize o CloudFormation modelo para refletir as configurações do ambiente verde. Isso inclui atualizar nomes e identificadores de recursos para garantir que o ambiente verde opere independentemente do cluster azul.

  1. Atualize as propriedades DBClusterIdentifier e DBInstanceIdentifier para representar o ambiente verde.

  2. Modifique outros nomes de recursos (por exemplo, grupos de sub-rede e grupos de segurança) para evitar conflitos com o ambiente azul existente.

  3. Habilite a replicação baseada em GTID no modelo configurando os parâmetros corretos, conforme descrito na documentação do Aurora.

  4. Altere a SnapshotIdentifier propriedade para especificar Região da AWS o ID da sua conta e o nome do snapshot da etapa anterior:

    SnapshotIdentifier: arn:aws:rds:<region>:<account-id>:snapshot:<snapshot-name>
nota

Se você usar a propriedade SnapshotIdentifier para restaurar um cluster de banco de dados, evite especificar propriedades como GlobalClusterIdentifier, MasterUsername ou MasterUserPassword.

DBA

Implante a CloudFormation pilha para criar recursos para o ambiente verde.

Nesta etapa, você implanta o CloudFormation modelo personalizado para criar os recursos para o ambiente verde.

Para implantar a CloudFormation pilha:

  1. Abra o console do AWS CloudFormation.

  2. No canto superior direito, escolha Criar pilha, Com novos recursos (padrão).

  3. Faça o upload do CloudFormation modelo modificado ou especifique o URL do modelo. Escolha Próximo.

  4. Insira um nome de pilha, como GreenClusterStack, e forneça os parâmetros necessários (por exemplo, GreenClusterIdentifier). Escolha Próximo.

  5. Configure opções adicionais de pilha conforme necessário e marque a caixa para confirmar que isso CloudFormation pode criar recursos AWS Identity and Access Management (IAM). Escolha Próximo.

  6. Revise os detalhes da pilha.

  7. Selecione Enviar.

CloudFormation inicia o processo de criação de recursos ambientais verdes. Esse processo pode levar alguns minutos para ser concluído.

DBA

Valide a CloudFormation pilha e os recursos.

Quando a implantação da CloudFormation pilha estiver concluída, você precisará verificar se o ambiente ecológico foi criado com sucesso:

  1. Na seção Saídas da CloudFormation pilha, verifique os endpoints do cluster do banco de dados e da instância do banco de dados para verificar a configuração correta.

  2. Abra o console do Amazon RDS e confirme se o novo cluster de banco de dados Aurora (ambiente verde) está disponível.

  3. Certifique-se de que todos os recursos associados, como sub-redes e grupos de segurança, tenham sido criados e vinculados ao ambiente verde.

Após a verificação, seu ambiente verde está pronto para configuração adicional, incluindo a replicação do ambiente azul.

DBA
TarefaDescriptionHabilidades necessárias

Verifique as configurações do GTID no cluster azul.

GTIDs forneça um método altamente confiável para replicar dados entre seus ambientes azul e verde. A replicação baseada em GTID oferece uma abordagem resiliente e simplificada ao atribuir um identificador exclusivo a cada transação no ambiente azul. Esse método garante que a sincronização de dados entre ambientes seja perfeita, consistente e mais fácil de gerenciar do que a replicação tradicional de binlogs.

Antes de configurar a replicação, você precisa garantir que a replicação baseada em GTID esteja habilitada corretamente no cluster azul. Essa etapa garante que cada transação no ambiente azul seja rastreada de forma exclusiva e possa ser replicada no ambiente verde.

Para confirmar se o GTID está habilitado:

  1. No console do Amazon RDS, revise o grupo de parâmetros atribuído ao cluster azul.

  2. Verifique se os seguintes parâmetros estão definidos:

    • gtid-mode = ON

    • enforce_gtid_consistency = ON

Essas configurações permitem o rastreamento GTID para todas as transações futuras no ambiente azul. Depois de confirmar essas configurações, é possível começar a configurar a replicação.

DBA

Crie um usuário de replicação.

Para replicar dados do ambiente azul para o ambiente verde, é necessário criar um usuário de replicação dedicado no cluster azul. Esse usuário será responsável por gerenciar o processo de replicação.

Para configurar o usuário de replicação:

  1. Conecte-se ao cluster azul usando um cliente MySQL.

  2. Execute os seguintes comandos para criar o usuário da replicação:

    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password'; GRANT REPLICATION SLAVE ON . TO 'repl_user'@'%'; FLUSH PRIVILEGES;

Agora, esse usuário tem as permissões necessárias para replicar dados entre os dois ambientes.

DBA

Configurar a replicação baseada em GTID no cluster verde.

A próxima etapa é configurar o cluster verde para replicação baseada em GTID. Essa configuração garante que o ambiente verde espelhe continuamente todas as transações que acontecem no ambiente azul.

Para configurar o cluster verde:

  1. Conecte-se ao cluster verde usando um cliente MySQL.

  2. Execute o seguinte comando para configurar a replicação:

    CHANGE MASTER TO MASTER_HOST='blue-cluster-endpoint', MASTER_USER='repl_user', MASTER_PASSWORD='repl_password', MASTER_AUTO_POSITION=1;

    em que:

    • Substitua blue-cluster-endpoint pelo endpoint do seu cluster azul.

    • A configuração MASTER_AUTO_POSITION=1 instrui o MySQL a usar a replicação baseada em GTID. Ele posiciona automaticamente o cluster verde para replicar as transações do cluster azul sem precisar rastrear logs e posições manualmente.

DBA

Inicie a replicação no cluster verde.

É possível iniciar o processo de replicação agora. No cluster verde, execute o comando:

START SLAVE;

Isso permite que o ambiente verde comece a sincronizar dados e a receber e aplicar transações do ambiente azul.

DBA

Verifique o processo de replicação.

Para verificar se o ambiente verde está replicando com precisão os dados do cluster azul:

  1. Execute o seguinte comando no cluster verde para verificar o status da replicação:

    SHOW SLAVE STATUS\G;
  2. Analise a saída para verificar o seguinte:

    • Slave_IO_Running = Yes

    • Slave_SQL_Running = Yes

    • Os Executed_Gtid_Set valores Retrieved_Gtid_Set up-to-date e são sincronizados com o cluster azul.

    • Não há erros de replicação no campo Last_Error.

Se todos os indicadores estiverem corretos, a replicação baseada em GTID funcionará sem problemas e o ambiente verde estará totalmente sincronizado com o ambiente azul.

DBA
TarefaDescriptionHabilidades necessárias

Configure as políticas de roteamento ponderado do Route 53.

Depois de verificar consistência de dados entre os ambientes azul e verde, é possível alternar o tráfego do cluster azul para o cluster verde. Essa transição deve ser suave, minimizar o tempo de inatividade e garantir a integridade do banco de dados da sua aplicação. Para atender a esses requisitos, você pode usar o Route 53 para roteamento de DNS e o Lambda para automatizar a troca de tráfego. Além disso, um plano de reversão bem definido garante que você possa reverter para o cluster azul em caso de problemas.

A primeira etapa é configurar o roteamento ponderado no Route 53. O roteamento ponderado permite controlar a distribuição do tráfego entre os clusters azul e verde e transferir gradualmente o tráfego de um ambiente para outro.

Para configurar o roteamento ponderado:

  1. Abra o console do Route 53 e escolha sua zona hospedada.

  2. Crie dois registros DNS (CNAMEs) para o banco de dados: um registro para o cluster azul e um registro para o cluster verde.

  3. Atribua pesos iniciais:

    • Defina um peso inicial baixo (como 5%) para que o cluster verde envie uma pequena parte do tráfego para teste.

    • Defina um peso maior (como 95%) para o cluster azul, para que ele retenha a maior parte do tráfego.

    Essa configuração permite que você realize uma transição gradual que reduz o risco e oferece suporte a testes em tempo real antes de você mudar totalmente.

Para obter mais informações sobre políticas de roteamento ponderado, consulte a documentação do Route 53.

AWS DevOps

Implante uma função do Lambda para monitorar o atraso na replicação.

Para garantir que o ambiente verde esteja totalmente sincronizado com o ambiente azul, implante uma função do Lambda que monitore o atraso na replicação entre os clusters. Essa função pode verificar o status da replicação, especificamente a métrica Seconds_Behind_Master, para determinar se o cluster verde está pronto para lidar com todo o tráfego.

Veja abaixo um exemplo da função do Lambda que você pode usar:

import boto3 def check_replication_lag(event, context): client = boto3.client('rds') response = client.describe_db_instances(DBInstanceIdentifier='green-cluster-instance') replication_status = response['DBInstances'][0]['ReadReplicaDBInstanceIdentifiers'] if replication_status: lag = replication_status[0]['ReplicationLag'] return lag return -1

Essa função verifica o atraso de replicação e retorna o valor. Se o atraso for zero, o cluster verde estará totalmente sincronizado com o cluster azul.

AWS DevOps

Automatize o ajuste de peso do DNS usando o Lambda.

Quando o atraso de replicação chegar a zero, é hora de mudar todo o tráfego para o cluster verde. Você pode automatizar essa transição usando outra função do Lambda que ajusta os pesos do DNS no Route 53 para direcionar 100% do tráfego para o cluster verde.

Veja abaixo um exemplo de uma função do Lambda que automatiza a troca de tráfego:

import boto3 def switch_traffic(event, context): route53 = boto3.client('route53') lag = check_replication_lag(event, context) if lag == 0: response = route53.change_resource_record_sets( HostedZoneId='YOUR_HOSTED_ZONE_ID', ChangeBatch={ 'Changes': [ { 'Action': 'UPSERT', 'ResourceRecordSet': { 'Name': 'db.example.com', 'Type': 'CNAME', 'SetIdentifier': 'GreenCluster', 'Weight': 100, 'TTL': 60, 'ResourceRecords': [{'Value': 'green-cluster-endpoint'}] } }, { 'Action': 'UPSERT', 'ResourceRecordSet': { 'Name': 'db.example.com', 'Type': 'CNAME', 'SetIdentifier': 'BlueCluster', 'Weight': 0, 'TTL': 60, 'ResourceRecords': [{'Value': 'blue-cluster-endpoint'}] } } ] } ) return response

Essa função verifica o atraso de replicação e atualiza os pesos do DNS do Route 53 quando o atraso é zero para mudar totalmente o tráfego para o cluster verde.

nota

Durante o processo de substituição, se o cluster azul tiver tráfego intenso de gravação, considere pausar temporariamente as operações de gravação durante a transição. Isso garante que a replicação seja atualizada e evita inconsistências de dados entre os clusters azul e verde.

AWS DevOps

Verifique o interruptor de tráfego.

Depois que a função do Lambda ajustar os pesos do DNS, você deve verificar se todo o tráfego foi direcionado para o cluster verde e se a troca foi bem-sucedida.

Para verificar:

  1. Monitore os registros DNS do Route 53 para confirmar se o tráfego está sendo direcionado para o cluster verde. Para obter mais informações, consulte a documentação do Route 53.

  2. Verifique a performance da aplicação confirmando que os usuários estão sendo atendidos pelo ambiente verde.

  3. Verifique as conexões do banco de dados para confirmar se o cluster verde está processando todas as solicitações do banco de dados.

  4. Monitore CloudWatch as métricas da Amazon em busca de sinais de latência, atraso na replicação ou degradação do desempenho. Para obter mais informações, consulte a documentação do Aurora.

Se tudo estiver funcionando conforme o esperado, a mudança de tráfego estará concluída.

AWS DevOps

Se você encontrar algum problema, reverta as alterações.

Ter um plano de reversão é fundamental no caso de surgirem problemas após a mudança de tráfego. Veja como reverter rapidamente para o cluster azul, se necessário:

  1. Reverta os pesos do DNS no Route 53: use a mesma função do Lambda ou ajuste manualmente os pesos do DNS do Route 53 para direcionar 100% do tráfego de volta para o cluster azul.

  2. Monitore o desempenho do aplicativo: monitore imediatamente os registros, CloudWatch as métricas e o desempenho do banco de dados do aplicativo para confirmar se a mudança para o ambiente azul resolveu os problemas.

  3. Identifique e resolva problemas: investigue e resolva quaisquer problemas com o cluster verde antes de tentar outra mudança de tráfego.

Ao implementar esse plano de reversão, você pode garantir o mínimo de interrupção para seus usuários no caso de problemas inesperados.

AWS DevOps
TarefaDescriptionHabilidades necessárias

Interrompa a replicação baseada em GTID no cluster verde.

Depois de mudar o tráfego do ambiente azul para o ambiente verde, você deve validar o sucesso da transição e garantir que o cluster verde esteja funcionando conforme o esperado. Além disso, a replicação baseada em GTID entre os clusters azul e verde deve ser interrompida, porque o ambiente verde agora serve como banco de dados primário. A conclusão dessas tarefas garante que seu ambiente esteja seguro, simplificado e otimizado para operações contínuas.

Para interromper a replicação:

  1. Use um cliente MySQL para se conectar ao cluster verde.

  2. Execute o comando SQL a seguir para interromper o processo de replicação no cluster verde:

    STOP SLAVE;
  3. (Opcional) Se desejar, você pode redefinir a configuração de replicação para limpar qualquer configuração de replicação residual:

    RESET SLAVE ALL;

Quando você interrompe a replicação, o cluster verde se torna totalmente independente e funciona como o ambiente do banco de dados primário para suas workloads.

DBA

Limpe recursos.

A limpeza de todos os recursos temporários ou não utilizados que foram criados durante a migração do cluster azul para o verde garante que seu ambiente permaneça otimizado, seguro e econômico. A limpeza inclui ajustar as configurações de segurança, fazer backups finais e descomissionar recursos desnecessários.

Para limpar recursos:

  1. Atualizar grupos de segurança: configure os grupos de segurança associados aos clusters azul e verde para refletir o novo ambiente primário (verde). Restrinja o acesso ao ambiente azul se ele não for mais necessário e verifique se as configurações de segurança do cluster verde seguem as práticas recomendadas.

  2. Faça um backup final do cluster verde: após a conclusão da migração, tire um snapshot final do cluster verde para servir como backup. Você pode usar esse snapshot para restaurar o ambiente no futuro, se necessário.

    aws rds create-db-snapshot --db-instance-identifier green-cluster-instance --db-snapshot-identifier green-cluster-final-snapshot
  3. Revise e remova recursos temporários: revise todos os recursos temporários criados durante a migração, como grupos de segurança temporários, snapshots ou outras configurações. Exclua recursos que não sejam mais necessários para evitar custos desnecessários. Por exemplo, exclua o cluster azul se ele não for mais necessário:

    aws rds delete-db-cluster --db-cluster-identifier blue-cluster-identifier --skip-final-snapshot

A limpeza dos recursos ajuda a manter um ambiente seguro e simplificado, reduz custos e garante que somente a infraestrutura necessária permaneça.

AWS DevOps

Recursos relacionados

CloudFormation:

Amazon Aurora:

Estratégia de implantações azul/verde:

Replicação baseada em GTID:

AWS Lambda:

Amazon Route 53:

Ferramentas de cliente do MySQL: