Alternar uma implantação azul/verde - Amazon Relational Database Service

Alternar uma implantação azul/verde

Uma transição promove o ambiente verde para o novo ambiente de produção. Quando a instância de banco de dados verde tem réplicas de leitura, elas também são promovidas. Antes de você fazer a transição, o tráfego de produção é roteado para a instância de banco de dados e lê as réplicas no ambiente azul. Antes de você fazer a transição, o tráfego de produção é roteado para a instância de banco de dados e lê as réplicas no ambiente verde.

Mudar para uma implantação azul/verde não é o mesmo que promover a instância de banco de dados verde na implantação azul/verde. Se você promover manualmente a instância de banco de dados escolhendo Promover no menu Ações, a replicação entre os ambientes azul e verde será interrompida e a implantação azul/verde entrará no estado de Configuração inválida.

Tempo limite de transição

Você pode especificar um tempo limite de transição entre 30 segundos e 3.600 segundos (uma hora). Se a transição demorar mais do que o especificado, todas as alterações serão revertidas e nenhuma alteração será feita em nenhum dos ambientes. O limite de tempo padrão é 300 segundos (cinco minutos).

Barreiras de proteção de transição

Quando você inicia uma transição, o Amazon RDS executa algumas verificações básicas para testar a prontidão dos ambientes azul e verde para a transição. Essas verificações são conhecidas como barreiras de proteção de transição. Essas barreiras evitarão uma transição se os ambientes não estiverem prontos para isso. Portanto, elas evitam tempo de inatividade mais longo do que o esperado e evitam a perda de dados entre os ambientes azul e verde que pode ocorrer se a transição for iniciada.

O Amazon RDS executa as seguintes verificações de barreira de proteção no ambiente verde:

  • Integridade da replicação: confira se o status de replicação da instância de banco de dados primária do cluster de banco de dados verde é íntegro. A instância de banco de dados primária verde é uma réplica da instância de banco de dados primária azul.

  • Atraso na replicação: confira se o atraso da réplica da instância de banco de dados primária está nos limites permitidos para a transição. Os limites permitidos são baseados no tempo limite especificado. O atraso da réplica indica até que ponto a instância de banco de dados primária verde está atrás de sua instância de banco de dados primária azul.

  • Gravações ativas: certifique-se de que não haja gravações ativas na instância de banco de dados primária.

O Amazon RDS executa as seguintes verificações de barreira de proteção no ambiente azul:

  • Replicação externa: para o RDS for PostgreSQL, garante que o ambiente azul não seja uma fonte lógica autogerenciada (publicador) nem uma réplica (assinante). Se ele for, recomendamos que você elimine os slots de replicação autogerenciados e as assinaturas em todos os bancos de dados no ambiente azul, continue com a transição e, depois, recrie-os para retomar a replicação. Para o RDS para MySQL e RDS para MariaDB, verifica se o banco de dados azul não é uma réplica externa de log binário. Se for, verifique se ele não está se replicando ativamente.

  • Gravações ativas de longa duração: verifica se não há gravações ativas de longa duração na instância de banco de dados primária azul, pois elas podem aumentar o atraso da réplica.

  • Instruções DDL de longa duração: verifica se não há instruções DDL de longa duração na instância de banco de dados primária azul, pois elas podem aumentar o atraso da réplica.

  • Alterações não compatíveis do PostgreSQL: para instâncias de banco de dados RDS para PostgreSQL, verifica se não há nenhuma alteração de DDL e se nenhuma adição ou modificação de objetos grandes foi realizada no ambiente azul. Para ter mais informações, consulte Limitações de replicação lógica do PostgreSQL em implantações azul/verde.

    Se o Amazon RDS detectar alterações não compatíveis do PostgreSQL, ele alterará o estado de replicação para Replication degraded e notificará você de que a transição não está disponível para a implantação azul/verde. Para continuar com a transição, recomendamos que você exclua e recrie a implantação azul/verde e todos os bancos de dados verdes. Para fazer isso, escolha Ações, Excluir com bancos de dados verdes.

Ações de transição

Quando você alterna uma implantação azul/verde, o RDS realiza as seguintes ações:

  1. Executa verificações de barreira de proteção para verificar se os ambientes azul e verde estão prontos para a transição.

  2. Interrompe novas operações de gravação na instância de banco de dados primária nos dois ambientes.

  3. Descarta conexões com as instâncias de banco de dados em ambos os ambientes e não permite novas conexões.

  4. Espera que a replicação alcance o ambiente verde para que este esteja em sincronia com o ambiente azul.

  5. Renomeia as instâncias de banco de dados nos dois ambientes.

    O RDS renomeia as instâncias de banco de dados no ambiente verde para corresponder às instâncias de banco de dados no ambiente azul. Por exemplo, suponha que o nome de uma instância de banco de dados no ambiente azul seja mydb. Suponha também que o nome da instância de banco de dados correspondente no ambiente verde seja mydb-green-abc123. Durante a transição, o nome da instância de banco de dados no ambiente verde é alterado para mydb.

    O RDS renomeia as instâncias de banco de dados no ambiente azul anexando -oldn ao nome atual, em que n é um número. Por exemplo, suponha que o nome de uma instância de banco de dados no ambiente azul seja mydb. Após a transição, o nome da instância de banco de dados pode ser mydb-old1.

    O RDS também renomeia os endpoints no ambiente verde para corresponder aos endpoints correspondentes no ambiente azul, para que as alterações na aplicação não sejam necessárias.

  6. Permite conexões com bancos de dados nos dois ambientes.

  7. Permite operações de gravação na instância de banco de dados primária no novo ambiente de produção.

    Após a transição, a instância de banco de dados primária da produção anterior só permitirá operações de leitura quando você definir o parâmetro read_only como 0 e reinicializar a instância de banco de dados.

Você pode monitorar o status de uma transição usando o Amazon EventBridge. Para ter mais informações, consulte Eventos de implantação azul/verde.

Se você tiver tags configuradas no ambiente azul, essas tags serão copiadas no novo ambiente de produção durante a transição. Para ter mais informações sobre tags, consulte Marcar recursos do Amazon RDS.

Se a transição começar e parar antes de terminar por qualquer motivo, todas as alterações serão revertidas e nenhuma alteração será feita em nenhum dos ambientes.

Práticas recomendadas de transição

Antes de fazer a transição, é altamente recomendável que você siga as práticas recomendadas concluindo as seguintes tarefas:

  • Teste minuciosamente os recursos no ambiente verde. Eles devem funcionar de forma adequada e eficiente.

  • Monitore as métricas relevantes do Amazon CloudWatch. Para ter mais informações, consulte Verificar as métricas do CloudWatch antes da transição.

  • Identifique o melhor momento para a transição.

    Durante a transição, as gravações são cortadas dos bancos de dados nos dois ambientes. Identifique um momento em que o tráfego é o menor em seu ambiente de produção. Transações de longa duração, como DDLs ativas, podem aumentar seu tempo de transição, ocasionando maior tempo de inatividade para suas workloads de produção.

    Se houver um grande número de conexões em suas instâncias de banco de dados, considere reduzi-las manualmente até a quantidade mínima necessária para sua aplicação antes de realizar a transição da implantação azul/verde. Uma maneira de fazer isso é criar um script que monitore o status da implantação azul/verde e comece a limpar as conexões quando detectar que o status mudou para SWITCHOVER_IN_PROGRESS.

  • As instâncias nos dois ambientes devem estar no estado Available.

  • A instância de banco de dados primária no ambiente verde devem estar funcionando e sendo replicada .

  • Garanta que suas configurações de rede e cliente não aumentem o tempo de vida útil (TTL) do cache DNS além de cinco segundos, que é o padrão para zonas DNS do RDS.
 Caso contrário, as aplicações continuarão a enviar tráfego de gravação ao ambiente azul após
 transição.

  • O carregamento de dados deve ser concluído antes da transição. Para ter mais informações, consulte Lidar com o carregamento lento ao criar uma implantação azul/verde.

  • Para instâncias de banco de dados do RDS para PostgreSQL, faça o seguinte:

nota

Durante uma transição, você não pode modificar nenhuma instância de banco de dados incluída na transição .

Verificar as métricas do CloudWatch antes da transição

Antes de realizar a transição de uma implantação azul/verde, recomendamos que verifique os valores das métricas a seguir no Amazon CloudWatch.

  • ReplicaLag: use esta métrica para identificar o atraso de replicação atual no ambiente verde. Para reduzir o tempo de inatividade, certifique-se de que esse valor esteja próximo de zero antes da transição.

  • DatabaseConnections: use esta métrica para estimar o nível de atividade na implantação azul/verde; certifique-se de que o valor esteja em um nível aceitável para sua implantação antes da transição. Se o recurso Insights de Performance estiver ativado, DBLoad será uma métrica mais precisa.

Para ter mais informações sobre essas métricas, consulte Métricas do Amazon CloudWatch para o Amazon RDS.

Realizar a transição de uma implantação azul/verde

Você pode fazer a transição de uma implantação azul/verde usando o AWS Management Console, a AWS CLI ou a API do RDS.

Como realizar a transição de uma implantação azul/verde
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, selecione Databases (Bancos de dados) e, depois, selecione a implantação azul/verde da qual você deseja realizar a transição.

  3. Para Actions (Ações), selecione Switch over (Realizar transição).

    A página Switch over (Realizar transição) é exibida.

    Fazer a transição de uma implantação azul/verde
  4. Na página Switch over (Realizar transição), revise o resumo da transição. Os recursos nos dois ambientes devem corresponder ao que você espera. Caso contrário, selecione Cancel (Cancelar).

  5. Em Timeout (Tempo limite), insira o limite de tempo para a transição.

  6. Se seu , analise e confirme as recomendações de pré-transição. Para ter mais informações, consulte Limitações de replicação lógica do PostgreSQL em implantações azul/verde.

  7. Selecione Switch Role (Realizar transição).

Para realizar a transição de uma implantação azul/verde usando a AWS CLI, utilize o comando switchover-blue-green-deployment com as seguintes opções:

  • --blue-green-deployment-identifier: especifique o ID do recurso da implantação azul/verde.

  • --switchover-timeout: especifique o limite de tempo para a transição, em segundos. O padrão é 300.

exemplo Fazer a transição de uma implantação azul/verde

Para Linux, macOS ou Unix:

aws rds switchover-blue-green-deployment \ --blue-green-deployment-identifier bgd-1234567890abcdef \ --switchover-timeout 600

Para Windows:

aws rds switchover-blue-green-deployment ^ --blue-green-deployment-identifier bgd-1234567890abcdef ^ --switchover-timeout 600

Para realizar a transição de uma implantação azul/verde usando a API do Amazon RDS, use a operação SwitchoverBlueGreenDeployment com os seguintes parâmetros:

  • BlueGreenDeploymentIdentifier: especifique o ID do recurso da implantação azul/verde.

  • SwitchoverTimeout: especifique o limite de tempo para a transição, em segundos. O padrão é 300.

Após a transição

Depois de uma transição, as instâncias de banco de dados no ambiente azul anterior são retidas. Os custos padrão se aplicam a esses recursos. A replicação entre os ambientes azul e verde é interrompida.

O RDS renomeia as instâncias de banco de dados no ambiente azul anexando -oldn ao nome de recurso atual, em que n é um número. As instâncias de banco de dados são somente leitura até que você defina o parâmetro read_only como 0. O RDS nomeia as instâncias de banco de dados no ambiente verde -newn.

Se você excluir o recurso de implantação azul/verde, o RDS reterá os recursos -oldn e -newn.

Depois de realizar a transição de uma implantação azul/verde

Atualizar o nó principal para consumidores

Depois de fazer a transição de uma implantação azul/verde do RDS para MariaDB ou do RDS para MySQL , se a instância de banco de dados tiver alguma réplica externa ou consumidores de log binário antes da transição, será necessário atualizar o nó principal após a transição para manter a continuidade da replicação.

Após a transição, a instância de banco de dados de que estava anteriormente no ambiente verde emite um evento que contém o nome do arquivo de log principal e a posição do log principal. Por exemplo:

aws rds describe-events --output json --source-type db-instance --source-identifier db-instance-identifier { "Events": [ ... { "SourceIdentifier": "db-instance-identifier", "SourceType": "db-instance", "Message": "Binary log coordinates in green environment after switchover: file mysql-bin-changelog.000003 and position 804", "EventCategories": [], "Date": "2023-11-10T01:33:41.911Z", "SourceArn": "arn:aws:rds:us-east-1:123456789012:db:db-instance-identifier" } ] }

Primeiro, garanta que o consumidor ou a réplica tenha aplicado todos os logs binários do antigo ambiente azul. Depois, use as coordenadas do log binário fornecidas para retomar a aplicação nos consumidores. Por exemplo, se você estiver executando uma réplica do MySQL no EC2, poderá usar o comando CHANGE MASTER TO:

CHANGE MASTER TO MASTER_HOST='{new-writer-endpoint}', MASTER_LOG_FILE='mysql-bin-changelog.000003', MASTER_LOG_POS=804;
nota

Se o consumidor for outra instância de banco de dados do RDS para MariaDB ou do RDS para MariaDB, você poderá executar os seguintes procedimentos armazenados na ordem: mysql.rds_stop_replication, mysql.rds_reset_external_master, mysql.rds_set_external_master e mysql.rds_start_replication.