View a markdown version of this page

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

Yogesh Bhatia y Afroz Khan, Amazon Web Services

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 que se administra con varios agentes y opciones de configuración. Nube de AWS 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 

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

  • AWS CLI 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

Tools (Herramientas)

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 CloudFormationle ayuda a configurar su AWS infraestructura y a acelerar el aprovisionamiento en la nube con la infraestructura como código.

  • AWS CLIle permite interactuar con él Servicios de AWS mediante comandos de una consola de línea de comandos. 

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

Repositorio de 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 tienes un clúster de RabbitMQ, puedes usarlo para AWS CloudFormationcrear la pila. AWS O bien, puede usar el CloudFormation módulo 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 general, 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: y sample-queue1 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 siguientes 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 el Consola de administración de AWS o el AWS CLI para recuperar esta información. Estos detalles permiten que el manual de estrategias de Ansible se conecte a su clúster RabbitMQ Cuenta de AWS y lo utilice para ejecutar comandos.

importante

El ordenador que ejecuta el manual de estrategias de Ansible debe poder acceder al suyo y debe estar ya configurado Cuenta de AWS, tal y como se AWS CLI describe en la sección Requisitos previos.

AWS general

Creación del 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.

Información general sobre AWS, RabbitMQ y Ansible

Recursos relacionados

Conexiones

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