Automatize a configuração RabbitMQ no Amazon MQ - 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 a configuração RabbitMQ no Amazon MQ

Criado por Yogesh Bhatia (AWS) e Afroz Khan (AWS)

Ambiente: PoC ou piloto

Tecnologias: Mensagens e comunicações; DevOps; Infraestrutura

Serviços da AWS: Amazon MQ; AWS CloudFormation

Resumo

O Amazon MQ é um serviço de agente de mensagens gerenciado, que fornece compatibilidade com muitos agentes de mensagens populares. O uso do Amazon MQ com o RabbitMQ fornece um cluster RabbitMQ robusto gerenciado na nuvem da Amazon Web Services (AWS) com vários agentes e opções de configuração. O Amazon MQ fornece uma infraestrutura altamente disponível, segura e escalável e pode processar um grande número de mensagens por segundo com facilidade. Vários aplicativos podem usar a infraestrutura com diferentes hosts virtuais, filas e trocas. No entanto, gerenciar essas opções de configuração ou criar a infraestrutura manualmente pode exigir tempo e esforço. Esse padrão descreve uma forma de gerenciar as configurações do RabbitMQ em uma única etapa, por meio de um único arquivo. Você pode incorporar o código fornecido com esse padrão em qualquer ferramenta de integração contínua (CI), como Jenkins ou Bamboo. 

Você pode usar esse padrão para configurar qualquer cluster do RabbitMQ. Tudo o que é necessário é conectividade com o cluster. Embora existam muitas outras maneiras de gerenciar as configurações do RabbitMQ, essa solução cria configurações completas do aplicativo em uma única etapa, para que você possa gerenciar filas e outros detalhes com facilidade.

Pré-requisitos e limitações

Pré-requisitos

Requisitos adicionais

  • Certifique-se de criar as configurações para hosts virtuais e usuários separadamente e não como parte do JSON.

  • Certifique-se de a configuração JSON faça parte do repositório e tenha controle de versão.

  • A versão da CLI do rabbitmqadmin deve ser a mesma do servidor RabbitMQ, então a melhor opção é baixar a CLI do console do RabbitMQ.

  • Como parte do pipeline, certifique-se que a sintaxe JSON seja validada antes de cada execução.

Versões do produto

  • AWS CLI versão 2.0

  • Ansible versão 2.9.13

  • rabbitmqadmin versão 3.9.13 (deve ser igual à versão do servidor RabbitMQ)

Arquitetura

Pilha de tecnologia de origem

  • Um cluster RabbitMQ executado em uma máquina virtual (VM) on-premises existente ou em um cluster Kubernetes (no local ou na nuvem)

Pilha de tecnologias de destino

  • Configurações automatizadas do Automated RabbitMQ no Amazon MQ para RabbitMQ

Arquitetura de destino

Há muitas formas de configurar o RabbitMQ. Esse padrão usa a funcionalidade de configuração de importação, em que um único arquivo JSON contém todas as configurações. Esse arquivo aplica todas as configurações e pode ser gerenciado por um sistema de controle de versão, como o Bitbucket ou o Git. Esse padrão usa o Ansible para implementar a configuração por meio da CLI rabbitmqadmin.

Automatizar a configuração do RabbitMQ no Amazon MQ

Ferramentas

Ferramentas

  • rabbitmqadmin é uma ferramenta de linha de comando para a API baseada em HTTP do RabbitMQ. Ele é usado para gerenciar e monitorar nós e clusters do RabbitMQ.

  • O Ansible é uma ferramenta de código aberto para automatizar aplicativos e infraestrutura de TI.

  • A AWS CLI permite interagir com serviços da AWS usando comandos no shell da linha de comando. 

Serviços da AWS

  • O Amazon MQ é um serviço gerenciado de agente de mensagens que facilita a configuração e operação de agentes de mensagem na nuvem.

  • CloudFormationA AWS ajuda você a configurar sua infraestrutura da AWS e acelerar o provisionamento na nuvem com a infraestrutura como código.

Código

O arquivo de configuração JSON usado nesse padrão e um exemplo de manual do Ansible são fornecidos no anexo.

Épicos

TarefaDescriçãoHabilidades necessárias

Crie um cluster RabbitMQ na AWS.

Se você ainda não tem um cluster RabbitMQ, você pode usar a AWS CloudFormation para criar a pilha na AWS. Ou você pode usar o módulo Cloudformation no Ansible para criar a pilha. Com a última abordagem, você pode usar o Ansible para as duas tarefas: criar a infraestrutura do RabbitMQ e gerenciar configurações. 

AWS CloudFormation, Ansible
TarefaDescriçãoHabilidades necessárias

Crie um arquivo de propriedades.

Faça o download do arquivo de configuração JSON (rabbitmqconfig.json) no anexo ou exporte-o do console do RabbitMQ.  Modifique-o para configurar filas, trocas e vinculações. Este arquivo de configuração demonstra o seguinte:

- Cria duas filas: sample-queue1 e sample-queue2 

- Cria duas trocas: sample-exchange1 e sample-exchange2

- Implementa a ligação entre as filas e as trocas

Essas configurações são realizadas no host virtual root (/), conforme exigido pelo rabbitmqadmin

JSON

Recupere os detalhes da infraestrutura do Amazon MQ para RabbitMQ.

Recupere os seguintes detalhes da infraestrutura do RabbitMQ na AWS:

  • Nome do agente

  • RabbitMQ host

  • Nome de usuário do RabbitMQ (o usuário administrador criado durante a criação do cluster)

  • Senha RabbitMQ

É possível usar o Console de Gerenciamento da AWS ou a AWS CLI para recuperar essas informações. Esses detalhes permitem que o manual do Ansible se conecte à sua conta AWS e use o cluster RabbitMQ para executar comandos.

Importante: o computador que executa o manual do Ansible deve ser capaz de acessar sua conta AWS, e a AWS CLI já deve estar configurada, conforme descrito na seção Pré-requisitos.

AWS CLI, Amazon MQ

Crie o arquivo hosts_var.

Crie o arquivo hosts_var para o Ansible e certifique-se de que todas as variáveis estejam definidas no arquivo. Considere usar o Ansible Vault para armazenar a senha. Você pode configurar o arquivo hosts_var da seguinte forma (substitua os asteriscos pelas suas informações):

RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com" RABBITMQ_VHOST: "/" RABBITMQ_USERNAME: "admin" RABBITMQ_PASSWORD: "*******"
Ansible

Crie um manual do Ansible.

Para obter um exemplo de manual, consulte ansible-rabbit-config.yaml no anexo. Faça o download e salve esse arquivo. O manual do Ansible importa e gerencia todas as configurações do RabbitMQ, como filas, trocas e vinculações, que os aplicativos exigem. 

Siga as práticas recomendadas dos manuais do Ansible, como proteger senhas. Use o Ansible Vault para criptografia de senha e recupere a senha do RabbitMQ do arquivo criptografado.

Ansible
TarefaDescriçãoHabilidades necessárias

Execute o manual.

Execute o manual do Ansible que você criou no épico anterior.

ansible-playbook ansible-rabbit-config.yaml

Você pode verificar as novas configurações no console do RabbitMQ.

RabbitMQ, Amazon MQ, Ansible

Recursos relacionados

Anexos

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip