O blog da AWS

Apresentando a replicação de dados entre regiões do Amazon MQ para agentes ActiveMQ

Apresentando a replicação de dados entre regiões do Amazon MQ para agentes ActiveMQ

Este post foi escrito por Dominic Gagné, engenheiro sênior de desenvolvimento de software, e Vinodh Kannan Sadayamuthu, arquiteto sênior de soluções

O Amazon MQ agora oferece suporte à replicação de dados entre regiões para agentes do ActiveMQ. Esse recurso permite que você crie aplicativos de mensagens resilientes regionalmente e facilita a configuração da replicação de mensagens entre regiões entre os agentes do ActiveMQ no Amazon MQ. Este blog explica como a replicação de dados entre regiões funciona no Amazon MQ, como configurar agentes de réplica entre regiões para o ActiveMQ e como testar a promoção de um agente de réplicas.

O Amazon MQ é um serviço gerenciado de agente de mensagens para Apache ActiveMQ e RabbitMQ que simplifica a configuração e a operação de agentes de mensagens na AWS.

A replicação entre regiões melhora a resiliência e os recursos de recuperação de desastres de seus sistemas. Esse novo recurso do Amazon MQ facilita o aumento da resiliência de seus sistemas de mensagens ActiveMQ em todas as regiões da AWS.

Como a replicação de dados entre regiões funciona no Amazon MQ para ActiveMQ

O recurso de replicação de dados entre regiões do Amazon MQ for ActiveMQ replica o estado do agente primário em uma região da AWS para o agente de réplicas em outra região. O estado do agente consiste em mensagens que foram enviadas a um agente por um produtor de mensagens. Além disso, as confirmações e transações de mensagens são replicadas. As mensagens agendadas e a configuração XML do agente não são replicadas do agente primário para o agente de réplica.

A replicação de estado ocorre de forma assíncrona e é executada em segundo plano. Quando uma mensagem é enviada para um agente habilitado para replicação de dados entre regiões, os dados são mantidos no armazenamento de dados primário e também em uma fila usada para replicar dados. O agente de réplica atua como cliente dessa fila e consome dados que representam o estado do agente primário.

A qualquer momento, somente o agente primário está disponível para conexões de clientes. O agente de réplicas está em espera ativa e replica passivamente o estado do agente primário. No entanto, ele não aceita conexões de clientes. O diagrama a seguir mostra uma versão simplificada de um par de agentes de replicação de dados entre regiões. Todo o tráfego de replicação é criptografado usando TLS e permanece dentro do backbone privado da AWS.

Amazon MQ for ActiveMQ cross-region data replication architecture

Configurando agentes de réplica entre regiões para o Amazon MQ for ActiveMQ

Para configurar um agente de réplicas entre regiões, seu agente primário do Amazon MQ para ActiveMQ deve atender aos seguintes critérios de elegibilidade:

  • ActiveMQ versão 5.17.6 ou superior
  • Tamanho da instância m5.large ou superior
  • Implantação de agente ativo/em espera ativada
  • Esteja no estado de execução

Se você não tiver um agente ActiveMQ que atenda a esses critérios, consulte o link Criação e configuração de um agente ActiveMQ para obter instruções sobre como criar um agente primário.

Para configurar a replicação entre regiões

  1. Navegue até o console do Amazon MQ e escolha Criar agente de réplicas.
    Amazon MQ console create replica broker
  2. Selecione um agente primário na lista de agente es primários elegíveis e escolha Avançar.
    Amazon MQ console choose primary broker
  3. Em Detalhes do agente de réplicas, selecione a região do seu agente de réplicas e insira o nome do agente de réplicas.
    Amazon MQ console configure replica broker
  4. No painel Usuário do ActiveMQ para agente de réplicas, insira um nome de usuário e uma senha para acesso ao agente.
    Amazon MQ console user for replica broker
  5. No painel Usuário de replicação de dados para conectar o acesso entre agentes, insira um nome de usuário e uma senha do usuário de replicação.
    Amazon MQ console user for replica broker
  6. No painel Configurações adicionais, mantenha os padrões e escolha Avançar.
  7. Revise as configurações e escolha Criar agente de réplicas.
    Nota: O tipo de acesso do agente é definido automaticamente com base no tipo de acesso do agente primário.
    Amazon MQ console create replica broker setting summary
  8. O processo de criação leva até 25 minutos. Quando a criação do agente de réplicas estiver concluída, inicie a replicação entre o agente primário e o agente de réplica reinicializando o agente primário.
  9. Depois que o agente primário for reinicializado e seu status for Executando, você poderá ver os detalhes da réplica no painel de replicação de dados do agente primário.
    Amazon MQ console broker replication details

Agora, os dois agentes se sincronizam para estabelecer uma rede e uma conexão inter-regionais por meio da qual o estado do agente é replicado. Quando os dois agentes estão no estado em execução, o agente primário aceita as conexões do cliente e passa todas as alterações de estado do agente(mensagens, confirmações, transações etc.) para a agente a de réplica.

O agente de réplicas agora reflete de forma assíncrona o estado do agente primário. No entanto, ele não fica disponível para conexões de clientes até ser promovido por meio de uma alternância ou de um failover. Essas operações são abordadas na seção a seguir.

Testando a replicação de dados e promovendo o agente de réplicas

Há duas maneiras de promover um agente de réplicas: iniciar uma transição ou um failover.

Transição Failover
  • Prioriza a consistência em detrimento da disponibilidade.
  • Prioriza a disponibilidade em vez da consistência.
  • É garantido que os agentes tenham estados idênticos.
  • Não é garantido que os agentes estejam em estados idênticos.
  • Os agentes podem não estar disponíveis imediatamente para atender ao tráfego de clientes.
  • O agente de réplicas está imediatamente disponível para atender ao tráfego do cliente.

Para iniciar um failover ou um switchover

  1. Navegue até o console do Amazon MQ, escolha seu agente primário e faça login no ActiveMQ Web Console usando os URLs localizados no painel Conexões.
  2. No menu superior, selecione Filas. Você deve conseguir ver quatro filas ActiveMQ.Plugin.Replication usadas pelo recurso de replicação.
    Active MQ console queues
  3. Para testar a replicação de mensagens do agente primário para um agente de réplica, crie uma fila e envie mensagens. Para criar a fila:
    • Em Nome da fila, insira TestQueue.
    • Escolha Criar. (passo 3)

    ActiveMQ console create queue

  4.  Em Operações para o TestQueue, escolha Enviar para e execute as seguintes etapas:
    • Em Número de mensagens a serem enviadas, digite 10 e mantenha os outros padrões.
    • Em Corpo da mensagem, insira uma mensagem de teste.
    • Escolha Enviar.

    ActiveMQ console send test message

  5. Para promover o agente de réplicas, navegue até o console do Amazon MQ e altere a região para a região da AWS em que o agente de réplicas está localizado.
  6. Selecione o agente de réplica (neste exemplo chamado Secondarybroker) e escolha Promover réplica.Amazon MQ console promote broker
  7. Na janela pop-up Promova o agente de réplicas:
    • Selecione Failover ou Switchover.
    • Digite confirmar na caixa de texto.
    • Escolha Confirmar.

    Amazon MQ console confirm broker promotion

  8. Enquanto um agente de réplicas está sendo promovido, seu status de replicação muda para Promoção em andamento. O status de replicação do agente primário correspondente muda para Rebaixamento em andamento.

Status da réplica Secondarybroker — Promoção em andamento:

Replica Secondarybroker status - Promotion in progress

Status do agente primário — Rebaixamento em andamento:

Primary broker status - Demotion in progress

Status de Secondarybroker — Promovido a novo agente primário:

Secondarybroker status – Promoted to new primary broker

  1. Quando o status do Secondarybrokerestiver em execução, faça login no ActiveMQ Web Console a partir dos URLs localizados no painel Conexões.Você pode ver as mensagens replicadas enviadas do antigo broker primário na Etapa 4 no TestQueue:
    Replicated message from primary broker in TestQueue

Monitorando a replicação de dados entre regiões

Para monitorar o progresso da replicação de dados entre regiões, você pode usar as métricas TotalReplicationLag e ReplicationLag do Amazon CloudWatch.

Amazon CloudWatch metrics TotalReplicationLag and ReplicationLag

Você pode usar essas duas métricas para monitorar o progresso de uma transição. Quando seu valor chegar a zero, a transição será concluída porque os estados do broker foram sincronizados e o agente de réplica começa a aceitar conexões de clientes. Se a transição não progredir com rapidez suficiente ou se você precisar que o agente de réplicas esteja imediatamente disponível para atender ao tráfego do cliente, você poderá solicitar um failover a qualquer momento.

Nota: Um failover pode interromper uma transição em andamento. No entanto, uma transição não pode interromper um failover contínuo.

A emissão de uma solicitação de failover faz com que o agente de réplica fique imediatamente disponível, mas não fornece nenhuma garantia sobre quais dados foram replicados para o agente de réplicas. Isso significa que um failover pode tornar o rastreamento e a reconciliação de dados mais desafiadores para seu aplicativo cliente do que uma transição.

Por esse motivo, recomendamos que você sempre comece com uma transição e a interrompa com um failover, se necessário. Para interromper uma transição contínua, siga as mesmas etapas para promover um agente de réplicas, selecione a opção de failover e confirme.

Observação: se você retornar ao agente primário original, as mensagens que não forem replicadas do agente primário para o agente de réplica durante o failover ainda existirão no agente primário. Portanto, os consumidores devem gerenciar essas mensagens. Recomendamos rastrear as IDs das mensagens processadas em um armazenamento de dados, como as tabelas globais do Amazon DynamoDB, e comparar a mensagem com as IDs das mensagens processadas.

Se você não precisar mais replicar dados do agente entre regiões ou se precisar excluir um agente primário ou de réplica, você deverá desemparelhar o agente de réplica e reinicializar o agente primário. Você pode desemparelhar o agente de réplica no console do Amazon MQ seguindo o link Excluir um agente CRDR.

Para desemparelhar o agente usando a AWS Command Line Interface (AWS CLI), execute o comando a seguir, substituindo o --broker-idprincipal do agente:

aws mq update-broker --broker-id <primary broker ID> \
--data-replication-mode "NONE" \
--region us-east-1

Conclusão

O uso do recurso de replicação de dados entre regiões do Amazon MQ for ActiveMQ fornece uma maneira simples de implementar a replicação entre regiões para melhorar a resiliência de sua arquitetura e atender aos requisitos de continuidade de negócios e recuperação de desastres. Este blog explica como a replicação de dados entre regiões funciona no Amazon MQ, como configurar um agente de réplicas entre regiões e como testar e promover o agente de réplicas.

Para obter mais detalhes, consulte a documentação do Amazon MQ.

Para obter mais recursos de aprendizado sem servidor, visite Serverless Land.

Este blog é uma tradução do conteúdo original em inglês (link aqui).

Biografia do Autor

Dominic Gagné, engenheiro sênior de desenvolvimento de software
Vinodh Kannan Sadayamuthu, arquiteto sênior de soluções

Biografia do tradutor

Rodrigo Peres é Arquiteto de Soluções na AWS, com mais de 20 anos de experiência trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados.