RabbitMQ es un software de intermediario de mensajes de código abierto que originalmente implementa el protocolo AMQP (Advanced Message Queuing Protocol), y aunque se ha desarrollado y ampliado para admitir otros protocolos como STOMP (Streaming Text Oriented Messaging Protocol) y MQTT (Message Transporte de telemetría en cola).
RabbitMQ es el software de cola de mensajes que ofrece soporte para enviar y recibir mensajes entre sistemas, aplicaciones y servicios distribuidos. Está escrito con el lenguaje de programación Erlang y admite interfaces de cliente y bibliotecas para todos los principales lenguajes de programación, incluidos Python, NodeJS, Java, PHP, etc.
En este tutorial, le mostraré paso a paso cómo configurar el clúster RabbitMQ en un servidor CentOS 7. Configuraremos el clúster de RabbitMQ utilizando tres servidores CentOS, habilitaremos la administración de RabbitMQ y configuraremos la política HA para todos los nodos.
Requisitos
- 3 o más servidores CentOS 7
- 10.0.15.21 nodo01
- 10.0.15.22 nodo02
- 10.0.15.23 nodo03
- Privilegios de raíz
¿Qué haremos?
- Archivo de hosts de configuración
- Instalar servidor RabbitMQ
- Habilitar los complementos de administración de RabbitMQ
- Configurar cortafuegos
- Configurar el clúster de RabbitMQ
- Configurar un nuevo usuario administrador
- Configurar la duplicación de colas de RabbitMQ
- Pruebas
Paso 1:configurar el archivo de hosts
En este paso, editaremos el archivo '/etc/hosts' en todos los servidores y asignaremos la dirección IP de cada servidor como un nombre de host.
Edite el archivo '/etc/hosts' usando vim editor.
sudo vim /etc/hosts
Ahora pegue la siguiente configuración allí.
10.0.15.21 node01 10.0.15.22 node02 10.0.15.23 node03
Guardar y salir.
Paso 2:instalar el servidor RabbitMQ
En este paso, instalaremos los paquetes del servidor RabbitMQ desde el repositorio EPEL (paquetes adicionales para Enterprise Linux).
Agregue el repositorio EPEL al sistema CentOS 7.
sudo yum -y install epel-release
Ahora instale RabbitMQ Server en todos los nodos 'node01', 'node02' y 'node03' usando el comando yum a continuación.
sudo yum -y install rabbitmq-server
Y una vez completada la instalación, inicie el servicio RabbitMQ y permita que se inicie cada vez que se inicie el sistema.
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
El servidor RabbitMQ se ha instalado en todos los clústeres de nodos CentOS 7.
Paso 3:habilite los complementos de administración de RabbitMQ
En este paso, habilitaremos los complementos de administración de RabbitMQ. Es una interfaz que le permite monitorear y manejar el servidor RabbitMQ desde el navegador web, ejecutándose en el puerto TCP predeterminado '15672'.
Habilite los complementos de administración de RabbitMQ ejecutando el siguiente comando.
sudo rabbitmq-plugins enable rabbitmq_management
Asegúrese de que no haya ningún error, luego reinicie el servicio RabbitMQ.
sudo systemctl restart rabbitmq-server
Y la gestión de RabbitMQ se ha habilitado.
Paso 4:configurar CentOS Firewalld
En este tutorial, habilitaremos el servicio de firewalld de CentOS, por lo que debemos abrir el puerto que usa el servidor RabbitMQ.
Abriremos el puerto que usa el servidor RabbitMQ '5672', el puerto para la gestión de RabbitMQ '15672' y los puertos para el clúster RabbitMQ '4369, 25672'.
Ejecute los siguientes comandos de 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 vuelva a cargar firewalld y verifique todos los puertos abiertos en la lista.
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
La configuración del firewalld de CentOS se ha completado y estamos listos para configurar el clúster RabbitMQ.
Paso 5:configurar el clúster de RabbitMQ
Para configurar el clúster RabbitMQ, debemos asegurarnos de que el archivo '.erlang.cookie' sea el mismo en todos los nodos. Copiaremos el archivo '.erlang.cookie' en el directorio '/var/lib/rabbitmq' desde 'node01' a otro nodo 'node02' y 'node03'.
Copie el archivo '.erlang.cookie' usando los comandos scp del 'node01'.
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
Asegúrese de que no haya ningún error en ambos servidores.
A continuación, debemos configurar 'node02' y 'node03' para unirse al clúster 'node01'.
Ejecute todos los comandos a continuación en los servidores 'node02' y 'node03'.
Reinicie el servicio RabbitMQ y detenga la aplicación.
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
Ahora deje que el servidor RabbitMQ en ambos nodos se una al clúster en 'node01', luego inicie la aplicación.
sudo rabbitmqctl join_cluster [email protected]
sudo rabbitmqctl start_app
Una vez que se complete, verifique el estado del clúster de RabbitMQ.
sudo rabbitmqctl cluster_status
Y obtendrá los resultados como se muestra a continuación.
En el 'nodo02'.
En el 'nodo03'.
Se ha creado el clúster RabbitMQ, 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 eliminaremos el usuario "invitado" predeterminado. Crearemos un nuevo usuario a partir de 'node01' y se replicará automáticamente en todos los nodos del clúster.
Agregue un nuevo usuario llamado 'hakase' con contraseña '[email protected]'.
sudo rabbitmqctl add_user hakase [email protected]
Configure el usuario 'hakase' como administrador.
sudo rabbitmqctl set_user_tags hakase administrator
Y otorgue al usuario 'hakase' permiso para modificar, escribir y leer todos los vhosts.
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
Ahora elimine el usuario 'invitado' predeterminado.
sudo rabbitmqctl delete_user guest
Y verifique todos los usuarios disponibles.
sudo rabbitmqctl list_users
Y obtendrá el resultado como se muestra a continuación.
Se creó un nuevo usuario de RabbitMQ y se eliminó el usuario 'invitado' predeterminado.
Paso 7 - Duplicación de la cola de configuración de RabbitMQ
Esta configuración es obligatoria, necesitamos configurar el clúster de "política ha" para la replicación y duplicación de colas en todos los nodos del clúster. Si el nodo que aloja el maestro de la cola falla, el espejo más antiguo se promocionará al nuevo maestro siempre que esté sincronizado, según las políticas de 'ha-mode' y 'ha-params'.
Los siguientes son algunos ejemplos sobre las políticas ha de RabbitMQ.
Configure una política llamada 'ha-all' que todas las colas en el clúster de RabbitMQ reflejarán en todos los nodos del clúster.
sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Configure la política ha llamada 'ha-dos', en la que todos los nombres de cola comienzan con 'dos'. se reflejará en los dos nodos del clúster.
sudo rabbitmqctl set_policy ha-two "^two\." \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Configure la política ha denominada 'ha-nodes', cuyos nombres de cola comienzan con 'nodes'. se reflejará en dos nodos específicos 'node02' y 'node03' en el clúster.
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
Ahora verifique todas las políticas disponibles usando el siguiente comando.
sudo rabbitmqctl list_policies;
Y si desea eliminar la política, use el siguiente comando.
sudo rabbitmqctl clear_policy ha-two
Paso 8 - Prueba
Abra su navegador web y escriba la dirección IP del nodo con el puerto '15672'.
http://10.0.15.21:15672/
Escriba el nombre de usuario 'hakase' con la contraseña '[email protected]'.
Y obtendrá el panel de administración de RabbitMQ como se muestra a continuación.
El estado de todos los nodos del clúster está en funcionamiento.
Ahora haga clic en el menú de la pestaña "Administrador" y haga clic en el menú "Usuarios" al costado.
Y obtendrá el usuario hakase en la lista.
Ahora haga clic en el menú de la pestaña "Administrador" y haga clic en el menú "Políticas" al costado.
Y obtendrá todas las políticas RabbitMQ ha que hemos creado.
La instalación y configuración de RabbitMQ Cluster en el servidor CentOS 7 se completó con éxito.