GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So richten Sie den RabbitMQ-Cluster unter Ubuntu 20.04 ein

RabbitMQ ist eine kostenlose Open-Source- und Multiprotokoll-Messaging-Broker-Software, die in der Programmiersprache Erlang geschrieben wurde. Ein Nachrichtenbroker wird verwendet, um Nachrichten für eine Anwendung zu speichern. Wenn eine Anwendung Daten an eine andere Anwendung sendet, veröffentlicht die App die Nachricht auf dem Nachrichtenbroker. RabbitMQ unterstützt mehrere Messaging-Protokolle und kann problemlos in verteilten Konfigurationen bereitgestellt werden. Der Message Broker agiert als Vermittler für verschiedene Webanwendungen und wird verwendet, um Lasten und Lieferzeiten von Webanwendungen zu reduzieren.

In diesem Tutorial werden wir einen RabbitMQ-Cluster mit drei Knoten auf einem Ubuntu 20.04-Server einrichten.

Voraussetzungen

  • Drei Server mit Ubuntu 20.04.
  • Ein Root-Passwort wird auf jedem Server konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie Ihre Systempakete auf die neueste Version aktualisieren. Sie können sie aktualisieren, indem Sie den folgenden Befehl auf jedem Knoten ausführen:

apt-get update -y

Sobald alle Pakete aktualisiert sind, müssen Sie die Datei /etc/hosts auf jedem Knoten einrichten. So können sie über den Hostnamen kommunizieren.

Bearbeiten Sie die Datei /etc/hosts auf jedem Knoten mit dem folgenden Befehl:

nano /etc/hosts

Fügen Sie die folgenden Zeilen hinzu:

192.168.0.10 Knoten1192.168.0.11 Knoten2192.168.0.12 Knoten3

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Als nächstes können Sie mit dem nächsten Schritt fortfahren.

Installieren Sie RabbitMQ Server

Als nächstes müssen Sie das RabbitMQ Server-Paket auf jedem Knoten installieren. Sie können es installieren, indem Sie einfach den folgenden Befehl ausführen:

apt-get install rabbitmq-server -y

Starten Sie nach der Installation den RabbitMQ-Dienst und ermöglichen Sie ihm, beim Systemneustart mit dem folgenden Befehl zu starten:

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

Sie können den Status des RabbitMQ-Dienstes auch mit dem folgenden Befehl überprüfen:

Systemctl-Status Rabbitmq-Server

Sie sollten die folgende Ausgabe erhalten:

? rabbitmq-server.service - RabbitMQ Messaging Server Geladen:geladen (/lib/systemd/system/rabbitmq-server.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Di 2020-07-21 06:25:07 UTC; Vor 19min Haupt-PID:2565 (beam.smp) Status:„Initialisiert“ Aufgaben:87 (Grenze:2353) Arbeitsspeicher:83,5 MB 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 21. Juli 06:24:58 node1 systemd[1]:RabbitMQ Messaging Server wird gestartet ... 21. Juli 06:25:07 node1 systemd[1]:rabbitmq- server.service:Überwachungsprozess 2565, der nicht unser Kind ist. Wir werden höchstwahrscheinlich nicht bemerken, wann> 21. Juli 06:25:07 node1 systemd[1]:RabbitMQ Messaging Server gestartet hat.

An diesem Punkt wird der RabbitMQ-Server auf jedem Knoten installiert und ausgeführt. Sie können jetzt mit dem nächsten Schritt fortfahren.

RabbitMQ-Verwaltungs-Plugins aktivieren

Das RabbitMQ-Management-Plugin bietet eine HTTP-basierte API, die zur Überwachung und Verwaltung von RabbitMQ-Knoten und -Clustern über einen Webbrowser verwendet werden kann. Standardmäßig läuft es auf dem TCP-Port 15672.

Sie können das RabbitMQ-Verwaltungs-Plugin aktivieren, indem Sie den folgenden Befehl auf jedem Knoten ausführen:

rabbitmq-Plugins ermöglichen rabbitmq_management

Sie sollten die folgende Ausgabe sehen:

Aktivierung von Plugins auf Knoten [email protected]:rabbitmq_managementDie folgenden Plugins wurden konfiguriert:rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatchApplying plugin configuration to [email protected]Die folgenden Plugins wurden aktiviert:rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatchstarted 3 plugins.

Starten Sie als Nächstes den RabbitMQ-Dienst neu, um die Änderungen zu übernehmen:

systemctl Kaninchenmq-Server neu starten

Sie können den Listening-Port mit dem folgenden Befehl überprüfen:

netstat -tunelp | grep 15672

Sie sollten die folgende Ausgabe sehen:

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

RabbitMQ-Cluster einrichten

Standardmäßig ist die Datei /var/lib/rabbitmq/.erlang.cookie auf jedem Knoten gleich. Um den RabbitMQ-Cluster einzurichten, müssen Sie die Datei /var/lib/rabbitmq/.erlang.cookie von Knoten1 auf andere Knoten kopieren.

Führen Sie auf Knoten1 den folgenden Befehl aus, um die Datei /var/lib/rabbitmq/.erlang.cookie auf die anderen Knoten zu kopieren.

scp /var/lib/rabbitmq/.erlang.cookie [E-Mail-geschützt]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [E-Mail-geschützt]:/var /lib/rabbitmq/

Als Nächstes müssen Sie node1 und node2 einrichten, um dem Cluster node1 beizutreten.

Starten Sie zuerst den RabbitMQ-Dienst neu und stoppen Sie die App mit dem folgenden Befehl auf Knoten2 und Knoten3:

systemctl Rabbitmq-Server neu starten
rabbitmqctl stop_app

Treten Sie auf node2 dem Cluster auf node1 bei, indem Sie den folgenden Befehl ausführen:

rabbitmqctl join_cluster [E-Mail-geschützt]

Sie sollten die folgende Ausgabe sehen:

Clustering-Knoten [email protected] mit [email protected]

Starten Sie auf Knoten2 die App mit dem folgenden Befehl:

rabbitmqctl start_app

Sie sollten die folgende Ausgabe sehen:

Startknoten [email protected] ... abgeschlossen mit 3 Plugins.

Treten Sie auf node3 dem Cluster auf node1 bei, indem Sie den folgenden Befehl ausführen:

rabbitmqctl join_cluster [E-Mail-geschützt]

Sie sollten die folgende Ausgabe sehen:

Clustering-Knoten [email protected] mit [email protected]

Starten Sie auf dem node3 die App mit dem folgenden Befehl:

rabbitmqctl start_app

Sie sollten die folgende Ausgabe sehen:

Startknoten [email protected] ... abgeschlossen mit 3 Plugins.

Wenn Sie erfolgreich fertig sind, überprüfen Sie den Status des Clusters, indem Sie den folgenden Befehl auf node1 ausführen:

rabbitmqctl cluster_status

Sie sollten die folgende Ausgabe sehen:

Cluster-Status des Knotens [E-Mail-geschützt] ...GrundlagenCluster-Name:[E-Mail-geschützt]Festplattenknoten[E-Mail-geschützt][E-Mail-geschützt][E-Mail-geschützt]Ausgeführte Knoten[E-Mail-geschützt][E-Mail-geschützt][E-Mail-geschützt]Versionen [E-Mail-geschützt]:RabbitMQ 3.8.2 auf Erlang 22.2.7[E-Mail-geschützt]:RabbitMQ 3.8.2 auf Erlang 22.2.7[E-Mail-geschützt]:RabbitMQ 3.8.2 auf Erlang 22.2.7Alarme(keine)Netzwerkpartitionen(keine) ListenersNode:[E-Mail-geschützt], Schnittstelle:[::], Port:25672, Protokoll:Clustering, Zweck:Kommunikationsknoten zwischen Knoten und CLI-Tool:[E-Mail-geschützt], Schnittstelle:[::], Port:5672, Protokoll:amqp, Zweck:AMQP 0-9-1 und AMQP 1.0 Knoten:[E-Mail-geschützt], Schnittstelle:[::], Port:15672, Protokoll:http, Zweck:HTTP API-Knoten:[E-Mail-geschützt], Schnittstelle:[::], Port:25672, Protokoll:Clustering, Zweck:knotenübergreifender und CLI-Tool-Kommunikationsknoten:[email protected], Schnittstelle:[::], Port:5672, Protokoll:amqp, Zweck:AMQP 0-9-1 und AMQP 1.0Knoten:[E-Mail-geschützt], Schnittstelle:[::], Port:15672, Protokoll:http, Zweck:HTTP APINode:[E-Mail-geschützt], Schnittstelle:[::], Port:25672, Protokoll:Clustering, Zweck:Kommunikationsknoten zwischen Knoten und CLI-Tool:[E-Mail-geschützt], Schnittstelle:[::], Port:5672, Protokoll:amqp, Zweck:AMQP 0-9-1 und AMQP 1.0Node:[email protected], Schnittstelle:[::], Port:15672, Protokoll:http, Zweck:HTTP APIFeature flagsFlag:drop_unroutable_metric, state:disabledFlag:empty_basic_get_metric, state:disabledFlag:implicit_default_bindings, state:enabledFlag:quorum_queue, state:enabledFlag:virtual_host_metadata, state:enabled

Administratorbenutzer einrichten

Als nächstes müssen Sie einen neuen Admin-Benutzer für den RabbitMQ-Server erstellen und den standardmäßigen „Gast“-Benutzer löschen.

Sie können einen neuen Benutzer namens „hitesh“ und ein Passwort „password“ erstellen, indem Sie den folgenden Befehl auf node1 ausführen:

rabbitmqctl add_user Hitesh-Passwort

Sie sollten die folgende Ausgabe sehen:

Hinzufügen des Benutzers "hitesh" ...

Als nächstes konfigurieren Sie den hitesh-Benutzer mit dem folgenden Befehl als Administrator:

rabbitmqctl set_user_tags hitesh-Administrator

Sie sollten die folgende Ausgabe sehen:

Setze Tags für Benutzer "hitesh" auf [Administrator] ...

Erteilen Sie als Nächstes dem hitesh-Benutzer die Berechtigung, alle vhosts zu ändern, zu schreiben und zu lesen.

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

Sie sollten die folgende Ausgabe sehen:

Setze Berechtigungen für Benutzer "hitesh" in vhost "/" ...

Löschen Sie als Nächstes den Gastbenutzer mit dem folgenden Befehl:

rabbitmqctl delete_user Gast

Sie sollten den folgenden Befehl erhalten:

Lösche den Benutzer "guest" ...

Sie können jetzt alle Benutzer mit dem folgenden Befehl auflisten:

rabbitmqctl list_users

Sie sollten die folgende Ausgabe erhalten:

Auflisten von Benutzern ...Benutzer tagshitesh [Administrator]

Ihr Benutzer, den Sie auf Knoten1 erstellt haben, wird automatisch auf alle Knoten im Cluster repliziert.

RabbitMQ Setup Queue Mirroring

Standardmäßig befinden sich die Inhalte einer Warteschlange auf einem einzigen Knoten. Sie müssen also den 'ha policy'-Cluster für die Warteschlangenspiegelung und Replikation auf alle Cluster-Knoten einrichten.

Erstellen Sie dazu eine ha-Richtlinie namens „ha-all“, die alle Warteschlangen im RabbitMQ-Cluster auf alle Knoten im Cluster spiegeln.

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

Ausgabe:

Einstellungsrichtlinie "ha-all" für Muster ".*" auf "{"ha-mode":"all"}" mit Priorität "0" für vhost "/" ...

Erstellen Sie als Nächstes eine ha-Richtlinie mit dem Namen „ha-two“, bei der alle Warteschlangennamen mit „two“ beginnen. wird auf die beiden Knoten im Cluster gespiegelt.

rabbitmqctl set_policy ha-two "^zwei\." '{"ha-mode":"genau","ha-params":2,"ha-sync-mode":"automatisch"}'

Ausgabe:

Einstellungsrichtlinie "ha-two" für Muster "^two\." zu "{"ha-mode":"genau","ha-params":2,"ha-sync-mode":"automatisch"}" mit Priorität "0" für vhost "/" ...

Erstellen Sie als Nächstes eine Hochverfügbarkeitsrichtlinie mit dem Namen „ha-nodes“, die alle Warteschlangen enthält, deren Name mit „nodes“ beginnt. Wir werden auf zwei spezifische Knoten „Knoten2“ und „Knoten3“ im Cluster spiegeln.

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

Ausgabe:

Einstellungsrichtlinie "ha-nodes" für Muster "^nodes\." zu "{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}" mit Priorität "0" für vhost "/" ...

Sie können jetzt alle konfigurierten Richtlinien auflisten, indem Sie den folgenden Befehl ausführen:

rabbitmqctl list_policies;

Sie sollten die folgende Ausgabe sehen:

Auflistungsrichtlinien für 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\. alle {"ha-mode":"nodes","ha-params":["[email protected]","[email protected]"]} 0

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Greifen Sie auf den RabbitMQ-Cluster zu

Sie können jetzt auf die RabbitMQ-Weboberfläche zugreifen, indem Sie die IP-Adresse eines beliebigen Knotens in Ihren Webbrowser mit Port 15672 eingeben wie http://192.168.0.10:15672/. Sie sollten die Login-Seite von RabbitMQ sehen:

Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf Anmelden Taste. Sie sollten das RabbitMQ-Dashboard auf dem folgenden Bildschirm sehen:

Klicken Sie anschließend auf "Admin". ' Tab-Menü und klicken Sie auf 'Richtlinien ' Speisekarte. Auf dem folgenden Bildschirm sollten Sie alle von uns erstellten RabbitMQ ha-Richtlinien sehen:

Schlussfolgerung

Herzliche Glückwünsche! Sie haben den RabbitMQ-Cluster mit drei Knoten erfolgreich auf dem Ubuntu20.04-Server eingerichtet. Ihr Cluster teilt jetzt Konfigurationsinformationen einschließlich Topologie- und Sicherheitsinformationen über alle Knoten hinweg.


Ubuntu
  1. So installieren Sie Logstash unter Ubuntu 18.04

  2. So richten Sie WireGuard VPN unter Ubuntu 20.04 ein

  3. Ubuntu – Wie stellt man eine statische IP in Ubuntu ein?

  4. So richten Sie MySQL Cluster unter Ubuntu ein

  5. Wie installiere und richte ich Git unter Ubuntu ein?

So installieren Sie Syncthing unter Ubuntu 20.04

So installieren Sie Usermin unter Ubuntu 20.04

So installieren Sie Podman unter Ubuntu 20.04

So richten Sie OpenVPN unter Ubuntu 20.04 ein

So installieren Sie RabbitMQ in Ubuntu 20.04

So richten Sie den RabbitMQ-Cluster unter Ubuntu/Debian Linux ein