Automatizar la configuración de RabbitMQ en Amazon MQ - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Automatizar la configuración de RabbitMQ en Amazon MQ

Creado por Yogesh Bhatia (AWS) y Afroz Khan (AWS)

Entorno: PoC o piloto

Tecnologías: mensajería y comunicaciones; Infraestructura DevOps

Servicios de AWS: Amazon MQ; AWS CloudFormation

Resumen

Amazon MQ es un servicio de agente de mensajes administrado que proporciona compatibilidad con muchos de los agentes de mensajes más populares. El uso de Amazon MQ con RabbitMQ proporciona un sólido clúster de RabbitMQ gestionado en la nube de Amazon Web Services (AWS) con varios agentes y opciones de configuración. Amazon MQ proporciona una infraestructura escalable, segura y de alta disponibilidad, y puede procesar una gran cantidad de mensajes por segundo con facilidad. Varias aplicaciones pueden utilizar la infraestructura con distintos hosts virtuales, colas e intercambios. Sin embargo, administrar estas opciones de configuración o crear la infraestructura manualmente puede requerir tiempo y esfuerzo. Este patrón describe una forma de administrar las configuraciones de RabbitMQ en un solo paso, a través de un único archivo. Puede incrustar el código proporcionado con este patrón en cualquier herramienta de integración continua (CI), como Jenkins o Bamboo. 

Puede utilizar este patrón para configurar cualquier clúster de RabbitMQ. Lo único que necesita es conectividad con el clúster. Aunque hay muchas otras maneras de administrar las configuraciones de RabbitMQ, esta solución crea configuraciones de aplicaciones completas en un solo paso, para poder administrar las colas y otros detalles con facilidad.

Requisitos previos y limitaciones

Requisitos previos 

  • Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada para que apunte a su cuenta de AWS (para obtener instrucciones, consulte la documentación de la AWS CLI)

  • Ansible instalado, para poder ejecutar guías para crear la configuración

  • rabbitmqadmin instalado (para obtener instrucciones, consulte la documentación de RabbitMQ)

  • Un clúster de RabbitMQ en Amazon MQ, creado con métricas de Amazon saludables CloudWatch

Requisitos adicionales

  • Asegúrese de crear las configuraciones para los hosts virtuales y los usuarios por separado y no como parte de JSON.

  • Asegúrese de que el JSON de configuración forme parte del repositorio y esté controlado por versiones.

  • La versión de la CLI de rabbitmqadmin debe ser la misma que la versión del servidor de RabbitMQ, por lo que la mejor opción es descargar la CLI desde la consola de RabbitMQ.

  • Como parte de la canalización, asegúrese de que la sintaxis JSON esté validada antes de cada ejecución.

Versiones de producto

  • CLI de AWS versión 2.0

  • Ansible versión 2.9.13

  • rabbitmqadmin versión 3.9.13 (debe ser la misma que la versión del servidor RabbitMQ)

Arquitectura

Pila de tecnología de origen

  • Un clúster de RabbitMQ que se ejecute en una máquina virtual (VM) existente en las instalaciones o en un clúster de Kubernetes (en las instalaciones o en la nube)

Pila de tecnología de destino

  • Configuraciones de RabbitMQ automatizadas en Amazon MQ para RabbitMQ

Arquitectura de destino

Existen muchas formas de configurar RabbitMQ. Este patrón utiliza la funcionalidad de configuración de importación, en la que un único archivo JSON contiene todas las configuraciones. Este archivo aplica todos los ajustes y se puede administrar mediante un sistema de control de versiones como Bitbucket o Git. Este patrón utiliza Ansible para implementar la configuración a través de la CLI rabbitmqadmin.

Automatizar la configuración de RabbitMQ en Amazon MQ

Herramientas

Herramientas

  • rabbitmqadmin es una herramienta de línea de comandos para la API basada en HTTP de RabbitMQ. Se usa para administrar y supervisar los nodos y clústeres de RabbitMQ.

  • Ansible es una herramienta de código abierto para automatizar las aplicaciones y la infraestructura de TI.

  • AWS CLI permite interactuar con los servicios de AWS mediante el uso de comandos en el intérprete de comandos de la línea de comandos. 

Servicios de AWS

  • Amazon MQ es un servicio de agente de mensajes administrado que facilita la configuración y el funcionamiento de los agentes de mensajes en la nube.

  • AWS le CloudFormation ayuda a configurar su infraestructura de AWS y a acelerar el aprovisionamiento en la nube con la infraestructura como código.

Código

El archivo de configuración JSON utilizado en este patrón y un ejemplo del manual de estrategias de Ansible se incluyen en el archivo adjunto.

Epics

TareaDescripciónHabilidades requeridas

Cree un clúster de RabbitMQ en AWS.

Si aún no tiene un clúster de RabbitMQ, puede usar AWS CloudFormation para crear la pila en AWS. O bien, puede usar el módulo de Cloudformation de Ansible para crear la pila. Con este último enfoque, puede usar Ansible para ambas tareas: crear la infraestructura de RabbitMQ y administrar las configuraciones. 

AWS CloudFormation, Ansible
TareaDescripciónHabilidades requeridas

Cree un archivo de propiedades.

Descargue el archivo de configuración JSON (rabbitmqconfig.json) del archivo adjunto o expórtelo desde la consola RabbitMQ.  Modifíquelo para configurar colas, intercambios y enlaces. En el diagrama siguiente, se muestra esta configuración:

- Crea dos colas: sample-queue1 y sample-queue2 

- Crea dos intercambios: sample-exchange1 y sample-exchange2

- Implementa el enlace entre las colas y los intercambios

Estas configuraciones se realizan en el host virtual raíz (/), según lo exige rabbitmqadmin

JSON

Obtenga los detalles de la infraestructura de Amazon MQ para RabbitMQ.

Obtenga los detalles de la infraestructura de RabbitMQ en AWS:

  • Nombre del agente

  • Host de RabbitMQ

  • Nombre de usuario de RabbitMQ (el usuario administrador creado durante la creación del clúster)

  • Contraseña de RabbitMQ

Puede utilizar la opción Consola de administración de AWS o la AWS CLI para recuperar esta información. Estos detalles permiten que el manual de Ansible se conecte a su cuenta de AWS y utilice el clúster de RabbitMQ para ejecutar comandos.

Importante: La computadora que ejecuta el manual de Ansible debe poder acceder a su cuenta de AWS, y la AWS CLI debe estar ya configurada, tal y como se describe en la sección Requisitos previos.

AWS CLI, Amazon MQ

Cree el archivo hosts_var.

Cree el archivo hosts_var para Ansible y asegúrese de que todas las variables estén definidas en el archivo. Considere la posibilidad de utilizar Ansible Vault para almacenar la contraseña. Puede configurar el archivo hosts_var de la siguiente manera (sustituya los asteriscos por su información):

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

Cree un manual de Ansible.

Para ver un ejemplo de manual, consulte ansible-rabbit-config.yaml en el archivo adjunto. Descargue y guarde este archivo. El manual de Ansible importa y administra todas las configuraciones de RabbitMQ, como las colas, los intercambios y los enlaces, que requieren las aplicaciones. 

Siga las prácticas recomendadas de los manuales de Ansible, como proteger las contraseñas. Utilice Ansible Vault para cifrar las contraseñas y recupere la contraseña de RabbitMQ del archivo cifrado.

Ansible
TareaDescripciónHabilidades requeridas

Ejecute el manual.

Ejecute el manual de Ansible que creó en la Epics anterior.

ansible-playbook ansible-rabbit-config.yaml

Puede verificar las nuevas configuraciones en la consola RabbitMQ.

RabbitMQ, Amazon MQ, Ansible

Recursos relacionados

Conexiones

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip