Einführung
In diesem Dokument wird beschrieben, wie RabbitMQ manuell zu einem Cluster hinzugefügt wird, wenn der Cluster beschädigt ist.
Voraussetzungen
Anforderungen
Für dieses Dokument bestehen keine speziellen Anforderungen.
Verwendete Komponenten
Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:
- Mindestens 2 RabbitMQ-Server
- Ein Load Balancer
Problem
Dieser Artikel führt Sie durch die Überprüfung des RabbitMQ-Clusters und das manuelle Hinzufügen dieser Instanz zum Cluster. CloudCenter bietet einen Assistenten zur Konfiguration von High Availability (HA) für RabbitMQ, aber in einigen Fällen sagt es, dass die HA erfolgreich konfiguriert ist, nachdem sie den Assistenten verlassen hat, aber der RabbitMQ-Cluster ist nicht richtig geformt.
Überprüfung, ob RabbitMQ außerhalb des Clusters ist
Schritt 1: Melden Sie sich mit der CLI-Konsole bei allen RabbitMQ-Servern an.
Schritt 2: Überprüfen Sie, ob der RabbitMQ-Server auf allen Instanzen ausgeführt wird.
#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
Schritt 3: Überprüfen Sie den Cluster-Status aller Instanzen mit den folgenden Befehlen:
[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,[]}]
In dieser Ausgabe können Sie festlegen, dass nur ein Knoten im Cluster ausgeführt wird.
Lösung
In diesem Szenario fügen Sie Ihrem Cluster rabbit@ip-172-31-32-101 hinzu rabbit@ip-172-31-45-110.us-east-2.compute.internal
Schritt 1: Um den zweiten RabbitMQ-Server zu verbinden, müssen Sie sicherstellen, dass die Anwendung beendet wird und dem Cluster beitritt.
Schritt 2: Wechseln Sie zum RabbitMQ2-Server, und beenden Sie die Anwendung.
[root@ip-172-31-32-101 ~]# rabbitmqctl stop_app
Stopping node 'rabbit@ip-172-31-32-101' ...
[root@ip-172-31-32-101 ~]#
Schritt 3: Treten Sie dem RabbitMQ2-Server zum RabbitMQ1-Cluster bei.
[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' ...
Schritt 4: Starten Sie die Anwendung rabbitmq2.
[root@ip-172-31-32-101 ~]# rabbitmqctl start_app
Starting node 'rabbit@ip-172-31-32-101' ...
Sie können sehen, dass die beiden Knoten in einem Cluster verbunden sind, wenn Sie den Befehl cluster_status auf einem der Knoten ausführen.
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,[]}]