Cómo configurar un clúster RabbitMQ en CentOS 7

RabbitMQ es un software de colas de mensajes de código abierto que originalmente implementa 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).

RabbitMQ es el software de cola de mensajes que ofrece soporte para enviar y recibir mensajes entre sistemas distribuidos, aplicaciones y servicios. Está escrito con el lenguaje de programación Erlang y admite interfaces de cliente y bibliotecas para los principales lenguajes de programación, como Python, NodeJS, Java, PHP, etc.

En este tutorial, te mostraré paso a paso cómo configurar el Clúster RabbitMQ en un Servidor CentOS 7. Configuraremos el Cluster RabbitMQ utilizando tres servidores CentOS, habilitaremos la Gestión de RabbitMQ, y configuraremos la política de HA para todos los nodos.

Requisitos previos

  • 3 o más Servidores CentOS 7
    • 10.0.15.21 nodo01
    • 10.0.15.22 nodo02
    • 10.0.15.23 nodo03
  • Privilegios de root

¿Qué vamos a hacer?

  1. Configurar el Archivo Hosts
  2. Instalar el Servidor RabbitMQ
  3. Habilitar los plugins de gestión de RabbitMQ
  4. Configurar Firewalld
  5. Configurar el Cluster RabbitMQ
  6. Configurar un nuevo usuario administrador
  7. Configurar la réplica de colas de RabbitMQ
  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’ utilizando el editor vim.

sudo vim /etc/hosts

Ahora pega allí la siguiente configuración.

10.0.15.21 node01
10.0.15.22 node02
10.0.15.23 node03

Guarda y sal.

Paso 2 – Instalar el Servidor RabbitMQ

En este paso, instalaremos los paquetes del Servidor RabbitMQ desde el repositorio EPEL (Extra Packages for Enterprise Linux).

Añade el repositorio EPEL al sistema CentOS 7.

sudo yum -y install epel-release

Ahora instala RabbitMQ Server en todos los nodos ‘node01’, ‘node02’ y ‘node03’ utilizando el comando yum que aparece a continuación.

sudo yum -y install rabbitmq-server

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 todos los nodos del cluster CentOS 7.

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, ejecutándose 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 se produce ningún error y, a continuación, reinicia el servicio RabbitMQ.

sudo systemctl restart rabbitmq-server

Y la gestión de RabbitMQ ha sido habilitada.

Activar los plugins de gestión de RabbitMQ

Paso 4 – Configurar CentOS Firewalld

En este tutorial, habilitaremos el servicio firewalld de CentOS, por lo que necesitamos abrir el puerto que utiliza el servidor RabbitMQ.

Abriremos el puerto que utiliza el servidor RabbitMQ ‘5672’, el puerto para la gestión de RabbitMQ ‘15672’, y los puertos para el cluster RabbitMQ ‘4369, 25672’.

Ejecuta los siguientes comandos firewalld.

sudo firewall-cmd --add-port=15672/tcp --permanent
sudo firewall-cmd --add-port=5672/tcp --permanent
sudo firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent

Ahora recarga firewalld y comprueba todos los puertos abiertos de la lista.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Configurar CentOS Firewalld

La configuración de firewalld en CentOS se ha completado, y estamos listos para configurar el Cluster RabbitMQ.

Paso 5 – Configurar el Cluster RabbitMQ

Para configurar el clúster 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’ del ‘nodo01’ a los otros nodos ‘nodo02’ y ‘nodo03’.

Copia el archivo ‘.erlang.cookie’ utilizando comandos scp desde el ‘nodo01’.

scp /var/lib/rabbitmq/.erlang.cookie root@node02:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node03:/var/lib/rabbitmq/

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

Configurar el clúster RabbitMQ

A continuación, tenemos que configurar el ‘nodo02’ y el ‘nodo03’ para que se unan al cluster ‘nodo01’.

Ejecuta todos los comandos siguientes en los servidores ‘node02’ y ‘node03’.

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 clúster del ‘nodo01’, y luego inicia la app.

sudo rabbitmqctl join_cluster rabbit@node01
sudo rabbitmqctl start_app

Cuando se haya completado, comprueba el estado del clúster RabbitMQ.

sudo rabbitmqctl cluster_status

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

En el ‘nodo02’.

Nodo 02

En el ‘nodo03’.

Nodo 03

El Cluster RabbitMQ ha sido creado, con node01, node02, y node03 como miembros.

Paso 6 – Crear un Nuevo Usuario Administrador

En este tutorial, crearemos un nuevo usuario administrador para nuestro servidor RabbitMQ y borraremos el usuario «invitado» por defecto. Crearemos un nuevo usuario desde ‘nodo01’, 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.

Crear usuario administrador de RabbitMQ

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

Paso 7 – Configuración de RabbitMQ Queue Mirroring

Esta configuración es imprescindible, necesitamos 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 la cola maestra falla, la réplica más antigua será promovida a la nueva maestra siempre que esté sincronizada, depende de las políticas ‘ha-mode’ y ‘ha-params’.

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

Establece una política ha llamada ‘ha-all’ que reflejará todas las colas del clúster RabbitMQ a todos los nodos del clúster.

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

Establece una política ha llamada «ha-dos» que refleje todas las colas cuyo nombre empiece por «dos» en los dos nodos del clúster.

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

Establece una política ha llamada «ha-nodos» cuyos nombres de cola empiecen por «nodos» y se reflejarán en dos nodos específicos «nodo02» y «nodo03» del clúster.

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

Ahora comprueba todas las políticas disponibles utilizando el comando siguiente.

sudo rabbitmqctl list_policies;

Y si quieres eliminar la política, utiliza el siguiente comando.

sudo rabbitmqctl clear_policy ha-two

Configuración de RabbitMQ Queue Mirroring

Paso 8 – Pruebas

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

http://10.0.15.21:15672/

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

Inicio de sesión en RabbitMQ

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

Panel de RabbitMQ

Todos los nodos del clúster están funcionando.

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

Menú de administración

Aparecerá el usuario hakase en la lista.

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

Políticas

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

La instalación y configuración del Cluster RabbitMQ en el servidor CentOS 7 se ha completado con éxito.

Referencia

También te podría gustar...