Usar a solução Neptune Blue/Green para realizar atualizações azuis/verdes - Amazon Neptune

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á.

Usar a solução Neptune Blue/Green para realizar atualizações azuis/verdes

As atualizações do mecanismo do Amazon Neptune podem precisar de tempo de inatividade da aplicação porque o banco de dados não fica disponível enquanto as atualizações estão sendo instaladas e verificadas. Isso será fato se eles forem iniciados manualmente ou automaticamente.

O Neptune fornece uma solução de implantação azul/verde que você pode executar usando uma pilha AWS CloudFormation e que reduz consideravelmente esse tempo de inatividade. Ela cria um ambiente de preparação verde que é sincronizado com o ambiente de produção azul. Depois, é possível atualizar esse ambiente de preparação para realizar uma atualização secundária ou principal da versão do mecanismo, uma alteração no modelo de dados de grafos ou uma atualização do sistema operacional e testar o resultado. Por fim, é possível migrá-lo rapidamente para se tornar seu ambiente de produção, com muito pouco tempo de inatividade.

A solução Neptune Blue/Green passa por duas fases, conforme ilustrado neste diagrama:

Fluxograma geral da estratégia de implantação azul/verde

A fase 1 cria um cluster de banco de dados verde idêntico ao cluster de produção

A solução cria um cluster de banco de dados com um identificador exclusivo de implantação azul/verde e com a mesma topologia do cluster de produção. Ou seja, ele tem o mesmo número e tamanho de instâncias de banco de dados, os mesmos grupos de parâmetros e todas as mesmas configurações do cluster de banco de dados de produção (azul), exceto que ele foi atualizado para a versão do mecanismo de destino que você especificou, que deve ser superior à versão atual do mecanismo (azul). É possível especificar uma versão secundária e principal do mecanismo para o destino. Se necessário, a solução executará todas as atualizações intermediárias necessárias para alcançar a versão especificada do mecanismo de destino. Esse novo cluster se torna o ambiente de preparação verde.

A fase 2 configura a sincronização contínua de dados

Depois que o ambiente verde estiver totalmente preparado, a solução vai configurar a replicação contínua entre o cluster de origem (azul) e o cluster de destino (verde) usando fluxos do Neptune. Quando a diferença de replicação entre eles chegar a zero, o ambiente de teste estará pronto para testes. Nesse ponto, você deve pausar a gravação no cluster azul para evitar mais atrasos na replicação.

A versão do mecanismo de destino pode ter novos recursos ou dependências que afetam as aplicações. Confira a página de versão do mecanismo de destino e as páginas de versão do mecanismo de intervenção em Versões do mecanismo para ver o que mudou desde a versão atual do mecanismo. É melhor executar testes de integração ou verificar as aplicações manualmente no cluster verde antes de promovê-lo ao ambiente de produção.

Depois de testar e qualificar as alterações no cluster verde, basta mudar o endpoint do banco de dados nas aplicações do cluster azul para o verde.

Após a transição, a solução Neptune Blue/Green não exclui o antigo ambiente de produção azul. Você ainda terá acesso a ele para validação e testes adicionais, se necessário. As cobranças de faturamento padrão se aplicam às instâncias até a exclusão. A solução Blue/Green também usa outros serviços da AWS, cujos custos são cobrados a preços normais. Os detalhes sobre como excluir a solução quando terminar de usá-la são abordados na seção sobre limpeza.

Pré-requisitos para executar a pilha do Neptune Blue/Green

Antes de iniciar a pilha do Neptune Blue/Green:

  • Habilite os fluxos do Neptune no cluster de produção (azul).

  • Todas as instâncias no cluster azul devem estar no estado disponível. É possível conferir os estados das instâncias no console do Neptune ou usando a API describe-db-instances.

  • Todas as instâncias também devem estar sincronizadas com o grupo de parâmetros do cluster de banco de dados.

  • A solução Neptune Blue/Green precisa de um endpoint da VPC do DynamoDB na VPC em que o cluster azul está localizado. Consulte Usar endpoints da Amazon VPC para acessar o DynamoDB.

  • Selecione um momento para executar a solução quando a workload de gravação no cluster de banco de dados azul de produção for a mais leve possível. Evite, por exemplo, executar a solução durante um carregamento em massa ou quando houver probabilidade de um grande número de operações de gravação por qualquer outro motivo.

Usar um modelo AWS CloudFormation para executar a solução Neptune Blue/Green

É possível usar AWS CloudFormation para implantar a solução Neptune Blue/Green. O modelo do CloudFormation cria uma instância do Amazon EC2 na mesma VPC do banco de dados do Neptune de origem azul, instala a solução no local e a executa. É possível monitorar o andamento nos logs do CloudWatch, conforme explicado em Monitoring progress.

É possível usar esses links para avaliar o modelo de solução ou selecionar o botão Iniciar pilha para iniciá-lo no console do AWS CloudFormation:

No console, escolha a região da AWS em que você deseja executar a solução no menu suspenso, no canto superior direito da janela.

Defina os parâmetros da pilha da seguinte forma:

  • DeploymentID: um identificador exclusivo para cada implantação azul/verde do Neptune.

    Ele é usado como o identificador verde do cluster de banco de dados e como um prefixo para nomear novos recursos criados durante a implantação.

  • NeptuneSourceClusterId: o identificador do cluster de banco de dados azul que você deseja atualizar.

  • NeptuneTargetClusterVersion:: a versão do mecanismo do Neptune para a qual você deseja atualizar o cluster de banco de dados azul.

    Esse valor deve ser mais recente do que a versão do mecanismo atual do cluster de banco de dados azul.

  • DeploymentMode: indica se essa é uma nova implantação ou uma tentativa de retomar uma implantação anterior. Quando você estiver usando o mesmo DeploymentID de uma implantação anterior, defina DeploymentMode como resume.

    Os valores válidos são: new (o padrão) e resume.

  • GraphQueryType: o tipo de dados de grafos para o banco de dados.

    Os valores válidos são: propertygraph (o padrão) e rdf.

  • SubnetId: um ID de sub-rede da mesma VPC em que o cluster de banco de dados azul está localizado. (Consulte Connecting to a Neptune DB Cluster from an Amazon EC2 instance in the same VPC.)

    Forneça o ID de uma sub-rede pública se você quiser usar o SSH para a instância por meio do EC2 Connect.

  • InstanceSecurityGroup: um grupo de segurança para a instância do EC2.

    O grupo de segurança deve ter acesso ao cluster de banco de dados azul e você deve poder usar SSH para a instância. Consulte Crie um grupo de segurança usando o VPC console.

Espere até que a pilha esteja completa. Assim que finalizar, a solução será iniciada. Depois, você pode monitorar o processo de implantação usando os logs do CloudWatch, conforme descrito na próxima seção.

Monitorar o andamento de uma implantação azul/verde do Neptune

É possível monitorar o andamento da solução Neptune Blue/Green acessando o console do CloudWatch e examinando os logs no grupo de logs /aws/neptune/(Neptune Blue/Green deployment ID) do CloudWatch. É possível encontrar um link para os logs do CloudWatch nas saídas da pilha AWS CloudFormation da solução:

Captura de tela da saída da pilha azul/verde do AWS CloudFormation

Se você forneceu uma sub-rede pública como parâmetro de pilha, também poderá usar SSH para a instância do Amazon EC2 criada como parte da pilha e consultar o login em /var/log/cloud-init-output.log.

O log mostra as ações realizadas pela solução Neptune Blue/Green, conforme mostrado nesta captura de tela:

Captura de tela da tela de logs do Neptune Blue/Green

As mensagens de log mostram o status de sincronização entre os clusters azul e verde:

Captura de tela das mensagens de log da solução Neptune Blue/Green

O processo de sincronização confere o atraso de replicação calculando a diferença entre o eventID do fluxo mais recente no cluster azul e o ponto de verificação de replicação presente na tabela de pontos de verificação do DynamoDB criada pela pilha de replicação Neptune para Neptune. Usando essas mensagens, é possível monitorar a diferença de replicação atual.

Passar do cluster azul de produção para o cluster verde atualizado

Antes de promover o cluster verde para produção, garanta que a diferença de confirmação entre os clusters azul e verde seja zero e, depois, desabilite todo o tráfego de gravação no cluster azul. Continuar gravando no cluster azul e alternando o endpoint do banco de dados para o cluster verde pode ocasionar a corrupção de dados causada pela gravação parcial de dados nos dois clusters. Talvez você ainda não precise desabilitar o tráfego de leitura.

Se você habilitou a autenticação do IAM no cluster de origem (azul), atualize todas as políticas do IAM usadas nas aplicações para apontar para o cluster verde (para ver um exemplo dessa política, consulte esta política de acesso irrestrito).

Depois de desabilitar o tráfego de gravação, aguarde a conclusão da replicação e habilite o tráfego de gravação no cluster verde (mas não no cluster azul). Também alterne o tráfego de leitura do cluster azul para o verde.

Limpeza após a conclusão da solução Neptune Blue/Green

Depois de promover o cluster de preparação (verde) para produção, limpe os recursos criados pela solução Neptune Blue/Green:

  • Exclua a instância do Amazon EC2 que foi criada para executar a solução.

  • Exclua os modelos AWS CloudFormation da replicação baseada em fluxos do Neptune que manteve o cluster verde sincronizado com o cluster azul. O principal tem o nome da pilha que você forneceu anteriormente e o outro é composto pelo ID de implantação seguida por “-replication”: ou seja, (DeploymentID)-replication.

A exclusão de modelos AWS CloudFormation não exclui os clusters em si. Depois de verificar se o cluster verde está funcionando conforme o esperado, você pode criar um snapshot antes de excluir manualmente o cluster azul.

Práticas recomendadas da solução Neptune Blue/Green

  • Antes de mudar o cluster verde para produção, vale a pena verificar minuciosamente se ele está funcionando da forma correta. Confira a consistência dos dados e a configuração do banco de dados. É possível que algumas das novas versões do mecanismo também exijam atualizações do cliente. Confira as notas de versão do mecanismo antes de fazer a atualização. Vale a pena testar tudo isso em ambientes de desenvolvimento, teste e pré-produção antes de iniciar uma atualização azul/verde na produção.

  • É melhor realizar a transição do servidor azul para o verde durante a janela de manutenção.

  • Para garantir que tudo esteja funcionando corretamente após a atualização e a sincronização, vale a pena manter o cluster original por algum tempo antes de excluí-lo. Isso poderá ser útil se surgir um problema imprevisto.

  • Evite operações de gravação pesadas, como cargas em massa, ao executar a solução Neptune Blue/Green, pois elas podem causar atrasos na replicação que introduzem um tempo de inatividade significativo. Preferencialmente, o tempo entre desativar as gravações no cluster azul e ativá-las no cluster verde deve ser de apenas alguns instantes.

Solução de problemas da solução Neptune Blue/Green

Erros gerados pela solução Neptune Blue/Green
  • Cluster with id = (blue_green_deployment_id) already exists: existe um cluster com identificador (blue_green_deployment_id).

    Forneça um novo ID de implantação ou defina o modo de implantação como resume se o cluster tiver sido criado em uma execução anterior do Neptune Blue/Green.

  • Streams should be enabled on the source Cluster for Blue Green Deployment: ative os fluxos do Neptune no cluster azul (de origem).

  • No Bulkload should be in progress on source cluster: (cluster_id): a solução Neptune Blue/Green terminará se identificar uma carga em massa contínua.

    O objetivo é garantir que o processo de sincronização seja capaz de acompanhar as gravações feitas. Evite ou cancele qualquer trabalho de carregamento em massa contínuo antes de iniciar a solução Neptune Blue/Green.

  • Blue Green deployment requires instances to be in sync with db cluster parameter group: qualquer alteração no grupo de parâmetros do cluster deve estar sincronizada em todo o cluster de banco de dados. Consulte Grupos de parâmetros do Amazon Neptune.

  • Invalid target engine version for Blue Green Deployment: a versão do mecanismo de destino deve estar listada como ativa em Versões do mecanismo do Amazon Neptune e deve ser superior à versão atual do mecanismo do cluster de origem (azul).