GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar el clúster RabbitMQ en Ubuntu 20.04

RabbitMQ es un software de intermediario de mensajería gratuito, de código abierto y multiprotocolo escrito en el lenguaje de programación Erlang. Un intermediario de mensajes se utiliza para almacenar mensajes para una aplicación. Cuando una aplicación envía datos a otra aplicación, la aplicación publica el mensaje en el intermediario de mensajes. RabbitMQ admite múltiples protocolos de mensajería y se puede implementar fácilmente en configuraciones distribuidas. El intermediario de mensajes actúa como intermediario para varias aplicaciones web y se utiliza para reducir las cargas y el tiempo de entrega de la aplicación web.

En este tutorial, configuraremos un clúster RabbitMQ de tres nodos en el servidor Ubuntu 20.04.

Requisitos

  • Tres servidores con Ubuntu 20.04.
  • Se configura una contraseña raíz en cada servidor.

Cómo empezar

Antes de comenzar, deberá actualizar los paquetes de su sistema a la última versión. Puede actualizarlos ejecutando el siguiente comando en cada nodo:

apt-get update -y

Una vez que se actualicen todos los paquetes, deberá configurar el archivo /etc/hosts en cada nodo. Para que puedan comunicarse entre sí por nombre de host.

Edite el archivo /etc/hosts en cada nodo con el siguiente comando:

nano /etc/hosts

Agregue las siguientes líneas:

192.168.0.10 node1
192.168.0.11 node2
192.168.0.12 node3

Guarde y cierre el archivo cuando haya terminado. A continuación, puede continuar con el siguiente paso.

Instalar servidor RabbitMQ

A continuación, deberá instalar el paquete del servidor RabbitMQ en cada nodo. Puede instalarlo simplemente ejecutando el siguiente comando:

apt-get install rabbitmq-server -y

Una vez instalado, inicie el servicio RabbitMQ y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

También puede verificar el estado del servicio RabbitMQ con el siguiente comando:

systemctl status rabbitmq-server

Deberías obtener el siguiente resultado:

? rabbitmq-server.service - RabbitMQ Messaging Server
     Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-07-21 06:25:07 UTC; 19min ago
   Main PID: 2565 (beam.smp)
     Status: "Initialized"
      Tasks: 87 (limit: 2353)
     Memory: 83.5M
     CGroup: /system.slice/rabbitmq-server.service
             ??2551 /bin/sh /usr/sbin/rabbitmq-server
             ??2565 /usr/lib/erlang/erts-10.6.4/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1>
             ??2828 erl_child_setup 65536
             ??2921 inet_gethost 4
             ??2922 inet_gethost 4

Jul 21 06:24:58 node1 systemd[1]: Starting RabbitMQ Messaging Server...
Jul 21 06:25:07 node1 systemd[1]: rabbitmq-server.service: Supervising process 2565 which is not our child. We'll most likely not notice when >
Jul 21 06:25:07 node1 systemd[1]: Started RabbitMQ Messaging Server.

En este punto, el servidor RabbitMQ está instalado y ejecutándose en cada nodo. Ahora puede continuar con el siguiente paso.

Habilitar los complementos de administración de RabbitMQ

El complemento de administración de RabbitMQ proporciona una API basada en HTTP que se puede usar para monitorear y administrar nodos y clústeres de RabbitMQ a través de un navegador web. Por defecto, se ejecuta en el puerto TCP 15672.

Puede habilitar el complemento de administración de RabbitMQ ejecutando el siguiente comando en cada nodo:

rabbitmq-plugins enable rabbitmq_management

Debería ver el siguiente resultado:

Enabling plugins on node [email protected]:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to [email protected]
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

A continuación, reinicie el servicio RabbitMQ para aplicar los cambios:

systemctl restart rabbitmq-server

Puede verificar el puerto de escucha con el siguiente comando:

netstat -tunelp | grep 15672

Debería ver el siguiente resultado:

tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      109        23155      2565/beam.smp

Configurar el clúster de RabbitMQ

De forma predeterminada, el archivo /var/lib/rabbitmq/.erlang.cookie es el mismo en cada nodo. Para configurar el clúster RabbitMQ, deberá copiar el archivo /var/lib/rabbitmq/.erlang.cookie del nodo1 a otros nodos.

En el nodo 1, ejecute el siguiente comando para copiar el archivo /var/lib/rabbitmq/.erlang.cookie a los otros nodos.

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

A continuación, deberá configurar el nodo 1 y el nodo 2 para unirse al nodo 1 del clúster.

Primero, reinicie el servicio RabbitMQ y detenga la aplicación con el siguiente comando tanto en el nodo 2 como en el nodo 3:

systemctl restart rabbitmq-server
rabbitmqctl stop_app

En el nodo2, únase al clúster en el nodo1 ejecutando el siguiente comando:

rabbitmqctl join_cluster [email protected]

Debería ver el siguiente resultado:

Clustering node [email protected] with [email protected]

En el nodo2, inicie la aplicación con el siguiente comando:

rabbitmqctl start_app

Debería ver el siguiente resultado:

Starting node [email protected] ...
 completed with 3 plugins.

En el nodo 3, únase al clúster en el nodo 1 ejecutando el siguiente comando:

rabbitmqctl join_cluster [email protected]

Debería ver el siguiente resultado:

Clustering node [email protected] with [email protected]

En el nodo 3, inicie la aplicación con el siguiente comando:

rabbitmqctl start_app

Debería ver el siguiente resultado:

Starting node [email protected] ...
 completed with 3 plugins.

Una vez que haya terminado con éxito, verifique el estado del clúster ejecutando el siguiente comando en el nodo 1:

rabbitmqctl cluster_status

Debería ver el siguiente resultado:

Cluster status of node [email protected] ...
Basics

Cluster name: [email protected]

Disk Nodes

[email protected]
[email protected]
[email protected]

Running Nodes

[email protected]
[email protected]
[email protected]

Versions

[email protected]: RabbitMQ 3.8.2 on Erlang 22.2.7
[email protected]: RabbitMQ 3.8.2 on Erlang 22.2.7
[email protected]: RabbitMQ 3.8.2 on Erlang 22.2.7

Alarms

(none)

Network Partitions

(none)

Listeners

Node: [email protected], interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: [email protected], interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: [email protected], interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: [email protected], interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: [email protected], interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: [email protected], interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: [email protected], interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: [email protected], interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: [email protected], interface: [::], port: 15672, protocol: http, purpose: HTTP API

Feature flags

Flag: drop_unroutable_metric, state: disabled
Flag: empty_basic_get_metric, state: disabled
Flag: implicit_default_bindings, state: enabled
Flag: quorum_queue, state: enabled
Flag: virtual_host_metadata, state: enabled

Configurar usuario administrador

A continuación, deberá crear un nuevo usuario administrador para el servidor RabbitMQ y eliminar el usuario "invitado" predeterminado.

Puede crear un nuevo usuario llamado "hitesh" y una contraseña "contraseña" ejecutando el siguiente comando en el nodo1:

rabbitmqctl add_user hitesh password

Debería ver el siguiente resultado:

Adding user "hitesh" ...

A continuación, configure el usuario hitesh como administrador con el siguiente comando:

rabbitmqctl set_user_tags hitesh administrator

Debería ver el siguiente resultado:

Setting tags for user "hitesh" to [administrator] ...

A continuación, otorgue al usuario hitesh permiso para modificar, escribir y leer todos los hosts virtuales.

rabbitmqctl set_permissions -p / hitesh ".*" ".*" ".*"

Debería ver el siguiente resultado:

Setting permissions for user "hitesh" in vhost "/" ...

A continuación, elimine el usuario invitado con el siguiente comando:

rabbitmqctl delete_user guest

Debería obtener el siguiente comando:

Deleting user "guest" ...

Ahora puede enumerar todos los usuarios con el siguiente comando:

rabbitmqctl list_users

Deberías obtener el siguiente resultado:

Listing users ...
user	tags
hitesh	[administrator]

Su usuario que ha creado en el nodo 1 se replicará automáticamente en todos los nodos del clúster.

Duplicación de cola de configuración de RabbitMQ

De forma predeterminada, el contenido de una cola se encuentra en un solo nodo. Por lo tanto, deberá configurar el clúster de 'política ha' para la duplicación de colas y la replicación en todos los nodos del clúster.

Para hacerlo, cree una política ha llamada 'ha-all' que todas las colas en el clúster de RabbitMQ reflejarán en todos los nodos del clúster.

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

Salida:

Setting policy "ha-all" for pattern ".*" to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...

A continuación, cree una política ha llamada 'ha-dos' en la que todos los nombres de cola comiencen con 'dos'. se reflejará en los dos nodos del clúster.

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

Salida:

Setting policy "ha-two" for pattern "^two\." to "{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}" with priority "0" for vhost "/" ...

A continuación, cree una política de alta disponibilidad llamada 'ha-nodes' que contendrá todas las colas cuyo nombre comience con 'nodes'. Reflejaremos dos nodos específicos 'nodo2' y 'nodo3' en el clúster.

rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'

Salida:

Setting policy "ha-nodes" for pattern "^nodes\." to "{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}" with priority "0" for vhost "/" ...

Ahora puede enumerar todas las políticas configuradas ejecutando el siguiente comando:

rabbitmqctl list_policies;

Debería ver el siguiente resultado:

Listing policies for vhost "/" ...
vhost	name	pattern	apply-to	definition	priority
/	ha-all	.*	all	{"ha-mode":"all"}	0
/	ha-two	^two\.	all	{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}	0
/	ha-nodes	^nodes\.	all	{"ha-mode":"nodes","ha-params":["[email protected]","[email protected]"]}	0

Una vez que haya terminado, puede continuar con el siguiente paso.

Acceder al clúster de RabbitMQ

Ahora puede acceder a la interfaz web de RabbitMQ escribiendo la dirección IP de cualquier nodo en su navegador web con el puerto 15672 como http://192.168.0.10:15672/. Debería ver la página de inicio de sesión de RabbitMQ:

Proporcione su nombre de usuario y contraseña de administrador y haga clic en Iniciar sesión botón. Debería ver el panel de RabbitMQ en la siguiente pantalla:

A continuación, haga clic en 'Administrador ' y haga clic en el menú 'Políticas 'menú. Debería ver todas las políticas RabbitMQ ha que hemos creado en la siguiente pantalla:

Conclusión

¡Felicidades! Ha configurado correctamente el clúster RabbitMQ de tres nodos en el servidor Ubuntu20.04. Su clúster ahora comparte información de configuración, incluida la topología y la información de seguridad en todos los nodos.


Ubuntu
  1. Cómo instalar Logstash en Ubuntu 18.04

  2. Cómo configurar WireGuard VPN en Ubuntu 20.04

  3. Ubuntu - ¿Cómo configurar una IP estática en Ubuntu?

  4. Cómo configurar MySQL Cluster en Ubuntu

  5. ¿Cómo instalo y configuro Git en Ubuntu?

Cómo instalar Syncthing en Ubuntu 20.04

Cómo instalar Usermin en Ubuntu 20.04

Cómo instalar Podman en Ubuntu 20.04

Cómo configurar OpenVPN en Ubuntu 20.04

Cómo instalar RabbitMQ en Ubuntu 20.04

Cómo configurar el clúster RabbitMQ en Ubuntu/Debian Linux