Cómo instalar el clúster RabbitMQ en Ubuntu 22.04

RabbitMQ es un gestor de mensajes gratuito y de código abierto. Compatible con múltiples protocolos de mensajes, RabbitMQ es el corredor de mensajes más utilizado en Internet. Es compatible con protocolos como AMQP, STOMP, MQTT, HTTP y WebSockets, así como con RabbitMQ Stream.

RabbitMQ es totalmente compatible con el estándar JMS 1.1 y es adecuado para una gran variedad de escenarios de desarrollo, desde entornos de despliegue pequeños a medianos o grandes.

Como intermediario de mensajes, RabbitMQ se sitúa entre las aplicaciones y les permite comunicarse entre sí de forma asíncrona, fiable y cómoda. RabbitMQ proporciona almacenamiento temporal entre aplicaciones y protege contra la pérdida de datos.

En este tutorial, instalaremos y configuraremos el servidor RabbitMQ entre varias máquinas Ubuntu 22.04. También aprenderás a configurar un usuario administrador para RabbitMQ y a configurar la clásica réplica de colas mediante la política HA.

Requisitos previos

Para completar esta guía, necesitarás los siguientes requisitos:

  • Dos o más servidores Ubuntu 22.04 – Este ejemplo utiliza tres máquinas Ubuntu,‘rabbitmq1,‘rabbitmq2‘, y‘rabbitmq3‘.
  • Un usuario no root con privilegios de administrador sudo/root.

Preparar las máquinas

Antes de empezar, actualiza y refresca los repositorios de tu sistema. A continuación, configura el archivo /etc/hosts en cada servidor para que el servidor pueda conectarse a través del nombre de host del sistema.

Actualiza y refresca tu repositorio de paquetes de Ubuntu mediante el siguiente comando apt.

sudo apt update

A continuación, edita el archivo‘/etc/hosts mediante el siguiente comando del editor nano.

sudo nano /etc/hosts

Añade la siguiente configuración y asegúrate de cambiar cada dirección IP y nombre de host con los detalles de tu entorno actual.

192.168.5.21    rabbitmq1
192.168.5.22    rabbitmq2
192.168.5.23    rabbitmq3

Guarda el archivo y sal del editor cuando hayas terminado. Con todos los servidores Ubuntu preparados, a continuación instalarás RabbitMQ y configurarás el clúster.

Instalar el Servidor RabbitMQ

Después de preparar tus máquinas Ubuntu, ahora estarás listo para instalar el servidor RabbitMQ en todas las máquinas de destino. El repositorio por defecto de Ubuntu 22.04 proporciona la versión más reciente y estable de RabbitMQ, que puede instalarse fácilmente mediante APT.

Ejecuta el siguiente comando apt para actualizar y refrescar el índice de paquetes de Ubuntu.

actualizar repo

Instala RabbitMQ mediante el siguiente comando apt.

sudo apt install rabbitmq-server

Esto te pedirá la confirmación, introduce y para confirmar, y pulsa ENTER para continuar.

instalar rabbitmq

Una vez instalado RabbitMQ, ejecuta el siguiente comando systemctl para verificar el servicio RabbitMQ y asegurarte de que el servicio está habilitado y funcionando.

sudo systemctl is-enabled rabbitmq-server
sudo systemctl status rabbitmq-server

El resultado – Puedes ver que RabbitMQ se está ejecutando y está habilitado. El RabbitMQ se ejecutará automáticamente al arrancar.

comprobar el servicio rabbitmq

Ahora que el servidor RabbitMQ está instalado, a continuación habilitarás el plugin RabbitMQ‘rabbitmq_management‘.

Habilitar el plugin de gestión de RabbitMQ

RabbitMQ proporciona un plugin de gestión que te permite gestionar y monitorizar nodos y clusters RabbitMQ a través del navegador web. El plugin ‘rabbitmq_management ‘ es una API basada en HTTP con una funcionalidad similar a la herramienta de línea de comandos‘rabbitmqadmin‘.

Antes de empezar a configurar el clúster RabbitMQ, deberás habilitar el plugin ‘ rabbitmq_management ‘ en tus máquinas objetivo.

Habilita el plugin de RabbitMQ ‘rabbitmq_management’ utilizando el siguiente comando‘rabbitmq-plugins‘. El siguiente comando también habilitará los plugins necesarios para ‘rabbitmq_management‘.

sudo rabbitmq-plugins enable rabbitmq_management

A continuación, reinicia el servicio RabbitMQ para aplicar los nuevos cambios y el plugin ‘rabbitmq_management‘ estará habilitado.

sudo systemctl restart rabbitmq-server

rabbitmq_management enable

El plugin por defecto ‘rabbitmq_management’ se ejecuta ahora en el puerto por defecto‘15672‘. Ejecuta el siguiente comando ss para asegurarte de que el puerto15672′ de rabbitmq_management está abierto.

ss -plnt

La salida – El puerto rabbitmq_management está activo y abierto.

verificar puerto

Configurar el cortafuegos UFW

Una vez configurado el plugin RabbitMQ Management, deberás configurar el cortafuegos UFW en todos los sistemas. La instalación por defecto de Ubuntu viene con el paquete UFW instalado, así que puedes iniciar y habilitar fácilmente el proceso del cortafuegos UFW.

Ejecuta el siguiente comando ufw para añadir el servicio OpenSSH y habilitar el cortafuegos ufw.

sudo ufw allow OpenSSH
sudo ufw enable

Cuando se te pida confirmación, introduce y para confirmar y pulsa ENTER para continuar. Y el cortafuegos ufw debería estar ahora ejecutándose y habilitado.

activar ufw

A continuación, abre algunos puertos TCP para el clúster RabbitMQ mediante el siguiente comando ufw. A continuación, recarga el cortafuegos ufw para aplicar los nuevos cambios.

sudo ufw allow 15672/tcp
sudo ufw allow 5672/tcp
sudo ufw allow 4369/tcp
sudo ufw allow 25672/tcp
sudo ufw reload

permitir ufw

Por último, ejecuta el siguiente comando ufw para verificar que los puertos RabbitMQ se han añadido al cortafuegos ufw.

sudo ufw status

La salida – Algunos puertos que se utilizarán para el clúster RabbitMQ añadidos al cortafuegos ufw.

verificar ufw

Configurar el clúster RabbitMQ

Tras habilitar el plugin‘rabbitmq_management’ y configurar el cortafuegos ufw, ahora empezarás a crear y configurar el clúster RabbitMQ mediante el comando ‘rabbitmqctl’.

En cada instalación de RabbitMQ, hay un archivo ‘.erlang’cooke’ que está disponible en el directorio ‘/var/lib/rabbitmq’. Para configurar el clúster, debes asegurarte de que todos los nodos del clúster tienen el mismo archivo ‘.erlang.cookie’.

En este ejemplo, el ‘rabbitmq1‘ se utilizará como primer clúster inicial, por lo que deberás copiar/transferir el archivo ‘.erlang.cookie a los servidores‘rabbitmq2‘ y‘rabbitmq3‘.

En el servidor ‘rabbitmq1‘, ejecuta el siguiente comando para verificar el archivo ‘.erlang.cookie‘ y asegurarte de que el archivo está disponible.

ls -lah /var/lib/rabbitmq/

A continuación, copia/transfiere el archivo ‘.erlang.cookie’ a los servidores ‘rabbitmq2‘ y‘rabbitmq3‘. Este ejemplo utiliza un comando SCP para copiar el archivo ‘.erlang.cookie’ a los servidores ‘192. 168.5.22′ y ‘192.168.5.23‘.

scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/

Una vez copiado/transferido el archivo ‘.erlang.cookie’, mueve la sesión de trabajo del servidor a ‘rabbitmq2‘ y‘rabbitmq3‘.

copiar archivo cookie erlang

Ejecuta el siguiente comando tanto en ‘rabbitmq2‘ como en ‘rabbitmq3‘ para reiniciar el servicio RabbitMQ y aplicar los nuevos cambios. A continuación, detén la aplicación RabbitMQ.

sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app

A continuación se muestra la salida del servidor ‘rabbitmq2‘.

conejomq2

A continuación se muestra la salida del servidor ‘rabbitmq3‘.

conejomq3

Después, añade los servidores ‘rabbitmq2‘ y‘rabbitmq3‘ al clúster RabbitMQ mediante el siguiente comando. A continuación, inicia la aplicación RabbitMQ.

sudo rabbitmqctl join_cluster rabbit@rabbitmq1
sudo rabbitmqctl start_app

A continuación se muestra la salida cuando ‘rabbitmq2‘ se une al clúster RabbitMQ e inicia la aplicación RabbitMQ.

rabbitmq2 join cluster

A continuación se muestra la salida cuando ‘rabbitmq3‘ se une al clúster RabbitMQ e inicia la aplicación RabbitMQ.

rabbitmq3 unirse al clúster

Por último, vuelve al servidor‘rabbitmq1‘ y ejecuta el siguiente comando para verificar el estado del clúster RabbitMQ.

sudo rabbitmqctl cluster_status

Verás entonces que el clúster RabbitMQ se ha creado con tres nodos‘rabbitmq1‘,‘rabbitmq2‘ y‘rabbitmq3‘. También verás la versión actual de RabbitMQ en cada nodo y el estado de mantenimiento de los nodos en todo el clúster.

estado del clúster rabbitmq

Configurar el Administrador de RabbitMQ

Con el cluster RabbitMQ creado, ahora crearás y configurarás un nuevo usuario administrador para el servidor RabbitMQ a través de ‘rabbitmqctl’, la línea de comandos principal para gestionar el servidor RabbitMQ.

Ejecuta el siguiente comando para añadir un nuevo usuario RabbitMQ. Este ejemplo añadirá el usuario‘alice‘ al RbbitMQ. Además, debes cambiar la contraseña por la nueva.

sudo rabbitmqctl add_user alice password

A continuación, el comando siguiente convierte al nuevo usuario ‘alice’ en administrador del clúster RabbitMQ.

sudo rabbitmqctl set_user_tags alice administrator

Establece el permiso para el usuario ‘alice’ a todas las entidades dentro del cluster RabbitMQ.

sudo rabbitmqctl set_permissions -p / alice ".*" ".*" ".*"

Ahora ejecuta el siguiente comando para eliminar el usuario por defecto ‘guest’ de tu instalación de RabbitMQ.

sudo rabbitmqctl delete_user guest

Comprueba la lista de usuarios disponibles en RabbitMQ. Verás que el nuevo usuario ‘alice’ se ha creado y puede utilizarse como administrador del servidor RabbitMQ.

sudo rabbitmqctl list_users

configurar usuario administrador

En este punto, has terminado la instalación y configuración del cluster RabbitMQ y configurado el administrador para RabbitMQ. A continuación, configurarás la réplica clásica de colas mediante las políticas de RabbitMQ.

Configurar la réplica clásica de colas

RabbitMQ proporciona dos formas de configurar la réplica de colas, puedes utilizar la réplica de colas clásica a través de la política de RabbitMQ o configurarla utilizando las colas de quórum.

En este ejemplo, aprenderás a configurar la duplicación de colas mediante las políticas de RabbitMQ.

Ejecuta el siguiente comando para crear una nueva política‘ha-all‘. Esta política permite que todas las colas se reflejen a través de los nodos del cluster RabbitMQ.

sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'

Ahora si quieres especificar las colas que se reflejarán a través del cluster. Este ejemplo creará una nueva política‘ha-dos-‘ que reflejará todas las colas con el nombre‘dos‘.

sudo rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

Por último, también puedes crear una nueva política que te permita configurar que las colas se reflejen en nodos específicos del clúster RabbitMQ. En este ejemplo crearás una nueva política‘ha-nodes‘ que reflejará cualquier cola con el nombre ‘nodes.’ a los nodos específicos‘rabbitmq2‘ y‘rabbitmq3‘.

sudo rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["rabbit@rabbitmq2", "rabbit@rabbitmq3"]}'

crear políticas

Comprueba la lista de políticas de tu clúster RabbitMQ mediante el siguiente comando. Verás que las políticas ‘ha-all‘,‘ha-two‘ y‘ha-nodes‘ están disponibles en el clúster RabbitMQ.

sudo rabbitmqctl list_policies

políticas de rabbitmq

Acceder al Cluster RabbitMQ a través del Plugin de Gestión

Abre tu navegador web y visita la dirección IP del servidor seguida del puerto RabbitMQ 15672 por defecto (es decir: http://192.168.5.21). Aparecerá la página de inicio de sesión de RabbitMQ.

Inicia sesión con el nuevo usuario y contraseña que has creado y haz clic en«Iniciar sesión«.

inicio de sesión en rabbitmq

Ahora deberías ver el panel de administración de RabbitMQ proporcionado por el plugin‘rabbitmq_management’.

salpicadero rabbitmq

A continuación, haz clic en la pestaña«Admin» y haz clic en«Políticas» para comprobar que las políticas de RabbitMQ que has creado están disponibles.

En la siguiente captura de pantalla, puedes ver tres políticas diferentes,‘ha-all‘,‘ha-two‘ y‘ha-nodes‘.

lista de políticas

Conclusión

¡Enhorabuena! Ya has instalado el servidor RabbitMQ y configurado el cluster RabbitMQ con tres servidores Ubuntu 22.04. Además, has configurado el cortafuegos UFW para asegurar el despliegue de RabbitMQ, y también has configurado el usuario administrador para RabbitMQ, y has creado una réplica clásica de colas en el clúster RabbitMQ a través de las políticas de RabbitMQ.

Con esto, ya puedes utilizar RabbitMQ como intermediario de mensajes para tu aplicación e infraestructura. Sin embargo, también puedes llevar el despliegue de RabbitMQ al siguiente nivel configurando colas de quórum, asegurando RabbitMQ mediante TLS, y muchas cosas más.

También te podría gustar...