Cómo configurar el clúster RabbitMQ en Ubuntu 18.04 LTS

RabbitMQ es un software de código abierto de intermediación de mensajes que originalmente implementaba el protocolo AMQP (Advanced Message Queuing Protocol), y aunque se ha desarrollado y ampliado para soportar otros protocolos como STOMP (Streaming Text Oriented Messaging Protocol), y MQTT (Message Queuing Telemetry Transport).

Un software de cola de mensajes / corredor de mensajes se utiliza para enviar y recibir mensajes entre sistemas distribuidos, aplicaciones y servicios. RabbitMQ está escrito en el lenguaje de programación Erlang, y ofrece soporte para interfaces de cliente y bibliotecas para los principales lenguajes de programación, como Python, NodeJS, Java, PHP, etc.

En este tutorial, te mostraré cómo configurar un clúster de RabbitMQ en un servidor Ubuntu 18.04. Instalaré un clúster de RabbitMQ utilizando tres servidores Ubuntu, habilitaré la gestión de RabbitMQ y configuraré la política de HA para todos los nodos.

Requisitos previos

  • 3 o más servidores Ubuntu 18.04
    • 10.0.15.21 hakase-ubuntu01
    • 10.0.15.22 hakase-ubuntu02
    • 10.0.15.23 hakase-ubuntu03
  • Privilegios de root

¿Qué vamos a hacer?

  1. Configurar el archivo de hosts
  2. Instalar el servidor RabbitMQ
  3. Habilitar los plugins de gestión
  4. Configurar el Firewall UFW
  5. Configurar el Cluster RabbitMQ
  6. Configurar un nuevo usuario administrador
  7. Configurar RabbitMQ Queue Mirroring
  8. Probar

Paso 1 – Configurar el archivo Hosts

En este paso, editaremos el archivo ‘/etc/hosts’ en todos los servidores y mapearemos cada dirección IP del servidor como un nombre de host.

Edita el archivo ‘/etc/hosts’ con el editor vim.

sudo vim /etc/hosts

Ahora pega allí la siguiente configuración.

10.0.15.21 hakase-ubuntu01
10.0.15.22 hakase-ubuntu02
10.0.15.23 hakase-ubuntu03

Guarda y sal.

Paso 2 – Instalar el servidor RabbitMQ

Antes de instalar el servidor RabbitMQ, asegúrate de que todos los repositorios están actualizados.

Ejecuta el siguiente comando.

sudo apt update
sudo apt upgrade

Ahora instala los paquetes del servidor RabbitMQ desde el repositorio de Ubuntu utilizando el siguiente comando apt.

sudo apt install rabbitmq-server -y

Y una vez completada la instalación, inicia el servicio RabbitMQ y habilítalo para que se inicie siempre al arrancar el sistema.

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

El servidor RabbitMQ ha sido instalado en Ubuntu 18.04.

Instalar el servidor RabbitMQ

Paso 3 – Habilitar los plugins de gestión de RabbitMQ

En este paso, habilitaremos los plugins de gestión de RabbitMQ. Es una interfaz que te permite monitorizar y manejar el servidor RabbitMQ desde el navegador web, que se ejecuta en el puerto TCP por defecto ‘15672’.

Habilita los plugins de gestión de RabbitMQ ejecutando el siguiente comando.

sudo rabbitmq-plugins enable rabbitmq_management

Asegúrate de que no hay ningún error, y luego reinicia el servicio RabbitMQ.

sudo systemctl restart rabbitmq-server

Los plugins de gestión de RabbitMQ han sido habilitados.

Habilitar los plugins de gestión de RabbitMQ

Paso 4 – Configurar el cortafuegos UFW

En este tutorial, habilitaremos el cortafuegos UFW de Ubuntu. Necesitamos abrir algunos puertos que serán utilizados por el servidor RabbitMQ.

Añade el servicio ssh al cortafuegos UFW y habilita el servicio de cortafuegos.

sudo ufw allow ssh
sudo ufw enable

Ahora añade los nuevos puertos tcp de RabbitMQ ‘5672,15672,4369,25672’.

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

A continuación, comprueba la lista de puertos del cortafuegos UFW.

sudo ufw status

Configurar el cortafuegos UFW

La configuración del cortafuegos UFW de Ubuntu se ha completado, y estamos listos para configurar el Cluster RabbitMQ.

Paso 5 – Configurar el Cluster RabbitMQ

Para configurar el cluster RabbitMQ, necesitamos asegurarnos de que el archivo ‘.erlang.cookie’ es el mismo en todos los nodos. Copiaremos el archivo ‘.erlang.cookie’ en el directorio ‘/var/lib/rabbitmq’ de ‘hakase-ubuntu01’ al otro nodo ‘hakase-ubuntu02’ y ‘hakase-ubuntu03’.

Copia el archivo ‘.erlang.cookie’ utilizando los comandos scp desde el ‘hakase-ubuntu01’.

scp /var/lib/rabbitmq/.erlang.cookie root@hakase-ubuntu02:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@hakase-ubuntu03:/var/lib/rabbitmq/

Asegúrate de que no hay ningún error en ambos servidores.

Configurar el clúster RabbitMQ

A continuación, tenemos que configurar ‘hakase-ubuntu02’ y ‘hakase-ubuntu03’ para que se unan al clúster ‘hakase-ubuntu01’.

Nota:

  • Ejecuta los siguientes comandos en los servidores ‘hakase-ubuntu02’ y ‘hakase-ubuntu03’.

Reinicia el servicio RabbitMQ y detén la aplicación.

sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app

Ahora deja que el servidor RabbitMQ de ambos nodos se una al cluster en ‘hakase-ubuntu01’, y luego inicia la app.

sudo rabbitmqctl join_cluster rabbit@hakase-ubuntu01
sudo rabbitmqctl start_app

Cuando esté completa, comprueba el estado del cluster RabbitMQ.

sudo rabbitmqctl cluster_status

Y obtendrás los resultados que se muestran a continuación

iniciar rabbitmq

El Cluster RabbitMQ ha sido creado, con hakase-ubuntu01, hakase-ubuntu02, y hakase-ubuntu03 como miembros.

Paso 6 – Configurar un nuevo usuario administrador

En este tutorial, crearemos un nuevo usuario administrador para nuestro servidor RabbitMQ y eliminaremos el usuario «invitado» por defecto. Crearemos un nuevo usuario desde ‘hakase-ubuntu01’, y se replicará automáticamente a todos los nodos del cluster.

Añade un nuevo usuario llamado ‘hakase’ con la contraseña ‘aqwe123@’.

sudo rabbitmqctl add_user hakase aqwe123@

Configura el usuario ‘hakase’ como administrador.

sudo rabbitmqctl set_user_tags hakase administrator

Y concede al usuario ‘hakase’ permiso para modificar, escribir y leer todos los vhosts.

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

Ahora elimina el usuario «invitado» por defecto.

sudo rabbitmqctl delete_user guest

Y comprueba todos los usuarios disponibles.

sudo rabbitmqctl list_users

Y obtendrás el resultado que se muestra a continuación.

Añadir usuario administrador

Se ha creado un nuevo usuario administrador de RabbitMQ, y se ha eliminado el usuario «invitado» por defecto.

Paso 7 – Configuración de RabbitMQ para la duplicación de colas

Por defecto, el contenido de una cola dentro de un cluster RabbitMQ se encuentra en un único nodo (el nodo en el que se declaró la cola).

Esta configuración es imprescindible, tenemos que configurar el cluster «ha policy» para la réplica de colas y la replicación a todos los nodos del cluster. Si el nodo que aloja el maestro de la cola falla, la réplica más antigua será promovida al nuevo maestro siempre que esté sincronizada, depende de las políticas ‘ha-mode’ y ‘ha-params’.

A continuación, algunos ejemplos sobre las políticas ha de RabbitMQ.

Establece una política ha llamada ‘ha-all’ que reflejará todas las colas del cluster RabbitMQ en todos los nodos del cluster.

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

Establece una política ha llamada «ha-dos» en la que todas las colas que empiecen por «dos» se reflejarán en los dos nodos del clúster.

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

Configura una política de alta disponibilidad llamada ‘ha-nodes’ que contendrá todas las colas cuyo nombre empiece por ‘nodes’. Haremos una réplica en dos nodos específicos ‘hakase-ubuntu02’ y ‘hakase-ubuntu03’ del clúster.

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

RabbitMQ lista las políticas ha.

sudo rabbitmqctl list_policies;

RabbitMQ elimina una política ha específica.

sudo rabbitmqctl clear_policy ha-two

Configurar la replicación

Paso 8 – Prueba

Abre tu navegador web y escribe la dirección IP del nodo con el puerto ‘15672’.

http://10.0.15.21:15672/

Escribe el nombre de usuario ‘hakase’ con la contraseña ‘aqwe123@’.

Iniciar sesión en RabbitMQ

Y obtendrás el panel de administración de RabbitMQ como se muestra a continuación.

Panel de control de RabbitMQ

El estado de todos los nodos del clúster está en funcionamiento.

Ahora haz clic en el menú de la pestaña «Admin», y haz clic en el menú «Usuarios» en el lateral.

Y aparecerá el usuario hakase en la lista.

Lista de usuarios

Ahora haz clic en el menú de la pestaña «Admin», y haz clic en el menú «Políticas» en el lateral.

Y obtendrás todas las políticas de RabbitMQ ha que hemos creado.

Políticas

La instalación y configuración del Cluster RabbitMQ en servidores Ubuntu 18.04 se ha completado con éxito.

Referencia

También te podría gustar...