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.
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.
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.
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
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 puerto‘15672′ de rabbitmq_management está abierto.
ss -plnt
La salida – El puerto rabbitmq_management está activo y abierto.
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.
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
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.
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‘.
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‘.
A continuación se muestra la salida del servidor ‘rabbitmq3‘.
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.
A continuación se muestra la salida cuando ‘rabbitmq3‘ se une al clúster RabbitMQ e inicia la aplicación RabbitMQ.
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.
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
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"]}'
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
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«.
Ahora deberías ver el panel de administración de RabbitMQ proporcionado por el plugin‘rabbitmq_management’.
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‘.
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.