Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Problema

Verifique si RabbitMQ está fuera de clúster

Solución

Introducción

Este documento describe cómo agregar manualmente RabbitMQ a un clúster si el clúster está roto.

Prerequisites

Requirements

No hay requisitos específicos para este documento.

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

- 2 servidores RabbitMQ como mínimo

- Un equilibrador de carga

Problema

En este artículo se explica cómo verificar el clúster de RabbitMQ y agregar manualmente esas instancias al clúster. CloudCenter proporciona un asistente para configurar la alta disponibilidad (HA) para RabbitMQ; sin embargo, en algunos casos, indica que la HA se ha configurado correctamente después de salir del asistente, pero el clúster de RabbitMQ no se ha formado correctamente.

Verifique si RabbitMQ está fuera de clúster

Paso 1. Inicie sesión en todo el servidor RabbitMQ con el uso de la consola CLI.

Paso 2. Verifique si el servidor RabbitMQ se ejecuta en todas las instancias.

#ps -ef | grep rabbit

Output:

rabbitmq  1677     1  0 14:47 ?        00:00:00 /usr/lib/erlang/erts-6.4/bin/epmd -daemon

root      1973     1  0 14:47 ?        00:00:00 /bin/sh /etc/rc.d/init.d/rabbitmq-server start

root      2000  1973  0 14:47 ?        00:00:00 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; /usr/sbin/rabbitmq-server

root      2003  2000  0 14:47 ?        00:00:00 su rabbitmq -s /bin/sh -c /usr/lib/rabbitmq/bin/rabbitmq-server

rabbitmq  2026  2003  0 14:47 ?        00:00:05 /usr/lib/erlang/erts-6.4/bin/beam -W w -K true -A30 -P 1048576 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.5.1/sbin/../ebin -noshell -noinput -s rabbit boot -sname rabbit@ip-172-31-32-101 -boot start_sasl -config /etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit@ip-172-31-32-101.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@ip-172-31-32-101-sasl.log"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.1/sbin/../plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@ip-172-31-32-101-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@ip-172-31-32-101" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672

rabbitmq  2242  2026  0 14:47 ?        00:00:00 inet_gethost 4

rabbitmq  2243  2242  0 14:47 ?        00:00:00 inet_gethost 4

root      2602  2588  0 15:04 pts/0    00:00:00 grep --color=auto rabbit

OR

#/sbin/service rabbitmq-server status

Status of node 'rabbit@ip-172-31-32-101' ...

[{pid,2026},

{running_applications,

[{rabbitmq_management,"RabbitMQ Management Console","3.5.1"},

{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.5.1"},

{webmachine,"webmachine","1.10.3-rmq3.5.1-gite9359c7"},

{mochiweb,"MochiMedia Web Server","2.7.0-rmq3.5.1-git680dba8"},

{rabbitmq_management_agent,"RabbitMQ Management Agent","3.5.1"},

{rabbit,"RabbitMQ","3.5.1"},

----- Text omitted for brevity

Paso 3. Verifique el estado del clúster de toda la instancia con estos comandos:

[root@ip-172-31-32-101 ~]# rabbitmqctl cluster_status

Cluster status of node 'rabbit@ip-172-31-32-101' ...

[{nodes,[{disc,['rabbit@ip-172-31-32-101']}]},

{running_nodes,['rabbit@ip-172-31-32-101']},

{cluster_name,<<"rabbit@ip-172-31-32-101.us-east-2.compute.internal">>},

{partitions,[]}]

En este resultado, puede identificar que sólo hay un nodo que se ejecuta en el clúster.

Solución

En esta situación, agrega rabbit@ip-172-31-32-101 a su clúster rabbit@ip-172-31-45-110.us-east-2.compute.internal

Paso 1. Para vincular el segundo servidor RabbitMQ, debe asegurarse de que la aplicación se detiene y se une al clúster.

Paso 2. Cambie al servidor RabbitMQ2 y detenga la aplicación.

[root@ip-172-31-32-101 ~]# rabbitmqctl stop_app

Stopping node 'rabbit@ip-172-31-32-101' ...

[root@ip-172-31-32-101 ~]#

Paso 3. Únase al servidor RabbitMQ2 al clúster RabbitMQ1.

[root@ip-172-31-32-101 ~]# rabbitmqctl join_cluster rabbit@ip-172-31-45-110

Clustering node 'rabbit@ip-172-31-32-101' with 'rabbit@ip-172-31-45-110' ...

Paso 4. Inicie la aplicación rabbitmq2.

[root@ip-172-31-32-101 ~]# rabbitmqctl start_app

Starting node 'rabbit@ip-172-31-32-101' ...

Puede ver que los dos nodos se unen en un clúster cuando ejecuta el comando cluster_status en cualquiera de los nodos.

Server1 : Output

[root@ip-172-31-45-110 ~]# rabbitmqctl cluster_status

Cluster status of node 'rabbit@ip-172-31-45-110' ...

[{nodes,[{disc,['rabbit@ip-172-31-32-101','rabbit@ip-172-31-45-110']}]},

{running_nodes,['rabbit@ip-172-31-32-101','rabbit@ip-172-31-45-110']},

{cluster_name,<<"rabbit@ip-172-31-45-110.us-east-2.compute.internal">>},

{partitions,[]}]

Server2 : Output

[root@ip-172-31-32-101 ~]# rabbitmqctl cluster_status

Cluster status of node 'rabbit@ip-172-31-32-101' ...

[{nodes,[{disc,['rabbit@ip-172-31-32-101','rabbit@ip-172-31-45-110']}]},

{running_nodes,['rabbit@ip-172-31-45-110','rabbit@ip-172-31-32-101']},

{cluster_name,<<"rabbit@ip-172-31-45-110.us-east-2.compute.internal">>},

{partitions,[]}]