So installierst du RabbitMQ Cluster unter Ubuntu 22.04

RabbitMQ ist ein freier und quelloffener Message Broker. RabbitMQ unterstützt mehrere Nachrichtenprotokolle und ist der am häufigsten verwendete Message Broker im Internet. Es unterstützt Protokolle wie AMQP, STOMP, MQTT, HTTP und WebSockets sowie den RabbitMQ Stream.

RabbitMQ ist vollständig konform mit dem JMS 1.1 Standard und eignet sich für eine Vielzahl von Entwicklungsszenarien, von kleinen über mittlere bis hin zu großen Einsatzumgebungen.

Als Message Broker sitzt RabbitMQ zwischen den Anwendungen und ermöglicht es ihnen, asynchron, zuverlässig und bequem miteinander zu kommunizieren. RabbitMQ bietet einen Zwischenspeicher zwischen den Anwendungen und schützt vor Datenverlusten.

In diesem Lernprogramm werden wir den RabbitMQ-Server zwischen mehreren Ubuntu 22.04-Maschinen installieren und einrichten. Außerdem erfährst du, wie du einen Administratorbenutzer für RabbitMQ einrichtest und die klassische Warteschlangenspiegelung über die HA-Richtlinie einrichtest.

Voraussetzungen

Für diesen Leitfaden benötigst du die folgenden Voraussetzungen:

  • Zwei oder mehr Ubuntu 22.04-Server – In diesem Beispiel werden drei Ubuntu-Maschinen verwendet, die‚rabbitmq1,‚rabbitmq2‚ und‚rabbitmq3‚.
  • Ein Nicht-Root-Benutzer mit sudo/root-Administrator-Rechten.

Vorbereiten der Maschinen

Bevor du loslegst, aktualisierst du deine Systemrepositories. Dann richtest du die Datei /etc/hosts auf jedem Server ein, damit sich der Server über den Systemhostnamen verbinden kann.

Aktualisiere dein Ubuntu-Paket-Repository mit dem unten stehenden apt-Befehl.

sudo apt update

Als Nächstes bearbeitest du die Datei„/etc/hosts “ mit dem Editor nano.

sudo nano /etc/hosts

Füge die folgende Konfiguration hinzu und achte darauf, dass du jede IP-Adresse und jeden Hostnamen mit deinen aktuellen Umgebungsdaten änderst.

192.168.5.21    rabbitmq1
192.168.5.22    rabbitmq2
192.168.5.23    rabbitmq3

Speichere die Datei und beende den Editor, wenn du fertig bist. Wenn alle Ubuntu-Server vorbereitet sind, kannst du RabbitMQ installieren und den Cluster einrichten.

RabbitMQ Server installieren

Nachdem du deine Ubuntu-Rechner vorbereitet hast, kannst du nun den RabbitMQ-Server auf allen Zielrechnern installieren. Das Standard-Repository von Ubuntu 22.04 stellt die neueste und stabile Version von RabbitMQ bereit, die einfach über APT installiert werden kann.

Führe den folgenden apt-Befehl aus, um deinen Ubuntu-Paketindex zu aktualisieren und aufzufrischen.

Repo aktualisieren

Installiere RabbitMQ mit dem folgenden apt-Befehl.

sudo apt install rabbitmq-server

Du wirst nach einer Bestätigung gefragt. Gib zur Bestätigung y ein und drücke ENTER, um fortzufahren.

rabbitmq installieren

Nachdem RabbitMQ installiert ist, führe den folgenden systemctl-Befehl aus, um den RabbitMQ-Dienst zu überprüfen und sicherzustellen, dass der Dienst aktiviert ist und läuft.

sudo systemctl is-enabled rabbitmq-server
sudo systemctl status rabbitmq-server

Die Ausgabe – Du kannst sehen, dass RabbitMQ läuft und aktiviert ist. RabbitMQ wird beim Hochfahren automatisch gestartet.

rabbitmq Dienst prüfen

Jetzt, wo der RabbitMQ-Server installiert ist, aktivierst du als Nächstes das RabbitMQ-Plugin„rabbitmq_management„.

Aktivieren des RabbitMQ-Management-Plugins

RabbitMQ bietet ein Management-Plugin, mit dem du RabbitMQ-Knoten und -Cluster über den Webbrowser verwalten und überwachen kannst. Das ‚rabbitmq_management‘ Plugin ist eine HTTP-basierte API mit ähnlichen Funktionen wie das Kommandozeilen-Tool‚rabbitmqadmin‚.

Bevor du mit der Konfiguration des RabbitMQ-Clusters beginnst, aktivierst du das „rabbitmq_management“ -Plugin auf deinen Zielrechnern.

Aktiviere das RabbitMQ-Plugin „rabbitmq_management“ mit dem folgenden Befehl„rabbitmq-plugins„. Mit dem folgenden Befehl aktivierst du auch die erforderlichen Plugins für„rabbitmq_management„.

sudo rabbitmq-plugins enable rabbitmq_management

Starte anschließend den RabbitMQ-Dienst neu, damit die Änderungen übernommen werden und das Plugin„rabbitmq_management“ aktiviert wird.

sudo systemctl restart rabbitmq-server

rabbitmq_management aktivieren

Das Standard-Plugin „rabbitmq_management“ läuft jetzt auf dem Standard-Port„15672„. Führe den folgenden ss-Befehl aus, um sicherzustellen, dass der rabbitmq_management-Port‚15672‚ geöffnet ist.

ss -plnt

Die Ausgabe – Der rabbitmq_management Port ist aktiv und offen.

Anschluss überprüfen

Einrichten der UFW-Firewall

Nachdem du das RabbitMQ-Management-Plugin aktiviert hast, musst du die UFW-Firewall auf allen Systemen einrichten. Bei der Standardinstallation von Ubuntu ist das UFW-Paket bereits installiert, so dass du den UFW-Firewall-Prozess ganz einfach starten und aktivieren kannst.

Führe den folgenden ufw-Befehl aus, um den OpenSSH-Dienst hinzuzufügen und die ufw-Firewall zu aktivieren.

sudo ufw allow OpenSSH
sudo ufw enable

Wenn du zur Bestätigung aufgefordert wirst, gib y ein, um zu bestätigen, und drücke ENTER, um fortzufahren. Die ufw-Firewall sollte jetzt laufen und aktiviert sein.

ufw aktivieren

Als nächstes öffnest du einige TCP-Ports für den RabbitMQ-Cluster mit dem folgenden ufw-Befehl. Lade dann die ufw-Firewall neu, um die neuen Änderungen zu übernehmen.

sudo ufw allow 15672/tcp
sudo ufw allow 5672/tcp
sudo ufw allow 4369/tcp
sudo ufw allow 25672/tcp
sudo ufw reload

ufw erlauben

Zum Schluss führst du den folgenden ufw-Befehl aus, um zu überprüfen, ob die RabbitMQ-Ports zur ufw-Firewall hinzugefügt wurden.

sudo ufw status

Die Ausgabe – Einige Ports, die für den RabbitMQ-Cluster verwendet werden, wurden zur ufw-Firewall hinzugefügt.

ufw verifizieren

RabbitMQ-Cluster einrichten

Nachdem du das„rabbitmq_management“-Plugin aktiviert und die ufw-Firewall konfiguriert hast, kannst du den RabbitMQ-Cluster mit dem Befehl „rabbitmqctl“ erstellen und konfigurieren.

Auf jeder RabbitMQ-Installation gibt es eine Datei ‚.erlang’cooke‘, die im Verzeichnis ‚/var/lib/rabbitmq‘ verfügbar ist. Um den Cluster einzurichten, musst du sicherstellen, dass alle Knoten im Cluster die gleiche Datei ‚.erlang.cookie‚ haben.

In diesem Beispiel wird‚rabbitmq1‚ als erster Cluster verwendet, also musst du die Datei ‚.erlang.cookie‘ auf die beiden Server‚rabbitmq2‚ und‚rabbitmq3‚ kopieren/übertragen.

Führe auf dem‚rabbitmq1‚-Server den folgenden Befehl aus, um die Datei ‚.erlang.cookie‚ zu überprüfen und sicherzustellen, dass die Datei verfügbar ist.

ls -lah /var/lib/rabbitmq/

Kopiere/übertrage dann die Datei ‚.erlang.cookie‚ auf die beiden Server‚rabbitmq2‚ und‚rabbitmq3‚. In diesem Beispiel wird ein SCP-Befehl verwendet, um die Datei ‚.erlang.cookie‚ auf die Server ‚192.168.5.22‘ und ‚192.168.5.23‚ zu kopieren.

scp /var/lib/rabbitmq/.erlang.cookie root@192.168.5.22:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.5.23:/var/lib/rabbitmq/

Nachdem die Datei ‚.erlang.cookie‘ kopiert/übertragen wurde, verschiebe die Arbeitsserver-Sitzung auf‚rabbitmq2‚ und‚rabbitmq3‚.

erlang Cookie-Datei kopieren

Führe den folgenden Befehl sowohl auf‚rabbitmq2‚ als auch auf‚rabbitmq3‚ aus, um den RabbitMQ-Dienst neu zu starten und die neuen Änderungen anzuwenden. Beende dann die RabbitMQ-Anwendung.

sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app

Unten siehst du die Ausgabe des„rabbitmq2„-Servers.

rabbitmq2

Unten siehst du die Ausgabe des„rabbitmq3„-Servers.

rabbitmq3

Danach fügst du die Server„rabbitmq2“ und„rabbitmq3“ mit dem folgenden Befehl zum RabbitMQ-Cluster hinzu. Starte dann die RabbitMQ-Anwendung.

sudo rabbitmqctl join_cluster rabbit@rabbitmq1
sudo rabbitmqctl start_app

Unten siehst du die Ausgabe, wenn‚rabbitmq2‚ dem RabbitMQ-Cluster beitritt und die RabbitMQ-Anwendung startet.

rabbitmq2 join cluster

Unten siehst du die Ausgabe, wenn„rabbitmq3“ dem RabbitMQ-Cluster beitritt und die RabbitMQ-Anwendung startet.

rabbitmq3 join cluster

Gehe zurück zum Server„rabbitmq1“ und führe den folgenden Befehl aus, um den Status des RabbitMQ-Clusters zu überprüfen.

sudo rabbitmqctl cluster_status

Du siehst dann, dass der RabbitMQ-Cluster mit den drei Knoten‚rabbitmq1‚,‚rabbitmq2‚ und‚rabbitmq3‚ erstellt wurde. Außerdem siehst du die aktuelle Version von RabbitMQ auf jedem Knoten und den Wartungsstatus der Knoten im Cluster.

rabbitmq cluster status

RabbitMQ Administrator einrichten

Nachdem du den RabbitMQ-Cluster erstellt hast, musst du nun einen neuen Administrator-Benutzer für den RabbitMQ-Server über „rabbitmqctl“, die Hauptbefehlszeile für die Verwaltung des RabbitMQ-Servers, einrichten.

Führe den folgenden Befehl aus, um einen neuen RabbitMQ-Benutzer hinzuzufügen. In diesem Beispiel wird der Benutzer‚alice‚ zum RbbitMQ hinzugefügt. Außerdem musst du das Passwort durch das neue ersetzen.

sudo rabbitmqctl add_user alice password

Mit dem folgenden Befehl wird der neue Benutzer „alice“ zum Administrator des RabbitMQ-Clusters.

sudo rabbitmqctl set_user_tags alice administrator

Richte die Berechtigung für den Benutzer „alice“ für alle Entitäten innerhalb des RabbitMQ-Clusters ein.

sudo rabbitmqctl set_permissions -p / alice ".*" ".*" ".*"

Führe nun den folgenden Befehl aus, um den Standardbenutzer „guest“ aus deiner RabbitMQ-Installation zu löschen.

sudo rabbitmqctl delete_user guest

Überprüfe die Liste der Benutzer, die in RabbitMQ verfügbar sind. Du wirst sehen, dass der neue Benutzer „alice“ erstellt wurde und als Administrator für den RabbitMQ-Server verwendet werden kann.

sudo rabbitmqctl list_users

Admin-Benutzer einrichten

An diesem Punkt hast du die Installation und Konfiguration des RabbitMQ-Clusters abgeschlossen und den Administrator für RabbitMQ konfiguriert. Als Nächstes richtest du das klassische Queue Mirroring über RabbitMQ-Policies ein.

Klassisches Queue-Mirroring einrichten

RabbitMQ bietet zwei Möglichkeiten, die Spiegelung von Warteschlangen einzurichten: Du kannst die klassische Spiegelung von Warteschlangen über die RabbitMQ-Richtlinie nutzen oder die Quorum-Warteschlangen einrichten.

In diesem Beispiel lernst du, wie du die Spiegelung von Warteschlangen über die RabbitMQ-Richtlinien einrichtest.

Führe den folgenden Befehl aus, um eine neue Richtlinie„ha-all“ zu erstellen. Diese Richtlinie ermöglicht die Spiegelung aller Warteschlangen auf allen Knoten des RabbitMQ-Clusters.

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

Wenn du nun die Warteschlangen festlegen willst, die im Cluster gespiegelt werden sollen. In diesem Beispiel wird eine neue Richtlinie„ha-two-“ erstellt, die alle Warteschlangen mit dem Namen„zwei“ spiegelt.

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

Schließlich kannst du auch eine neue Richtlinie erstellen, mit der du festlegen kannst, dass die Warteschlangen auf bestimmte Knoten im RabbitMQ-Cluster gespiegelt werden. In diesem Beispiel erstellst du eine neue Richtlinie„ha-nodes„, die alle Warteschlangen mit dem Namen„nodes.“ auf bestimmte Knoten„rabbitmq2“ und„rabbitmq3“ spiegelt.

sudo rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["rabbit@rabbitmq2", "rabbit@rabbitmq3"]}'

Richtlinien erstellen

Überprüfe die Liste der Richtlinien in deinem RabbitMQ-Cluster mit dem folgenden Befehl. Du siehst dann, dass die Richtlinien„ha-all„,„ha-two“ und„ha-nodes“ auf dem RabbitMQ-Cluster verfügbar sind.

sudo rabbitmqctl list_policies

rabbitmq-Richtlinien

Zugriff auf den RabbitMQ-Cluster über das Management Plugin

Öffne deinen Webbrowser und rufe die IP-Adresse des Servers auf, gefolgt von dem Standard-RabbitMQ-Port 15672 (d.h. http://192.168.5.21). Du erhältst dann die RabbitMQ-Anmeldeseite.

Melde dich mit dem neuen Benutzer und Passwort an, das du erstellt hast, und klicke auf„Anmelden„.

rabbitmq Anmeldung

Du solltest nun das RabbitMQ-Administrations-Dashboard sehen, das vom Plugin„rabbitmq_management“ bereitgestellt wird.

rabbitmq Dashboard

Klicke als Nächstes auf die Registerkarte„Admin“ und dann auf„Policies„, um zu überprüfen, ob die von dir erstellten RabbitMQ-Richtlinien verfügbar sind.

Auf dem Screenshot unten siehst du drei verschiedene Richtlinien:„ha-all„,„ha-two“ und„ha-nodes„.

Richtlinien auflisten

Fazit

Herzlichen Glückwunsch! Du hast nun den RabbitMQ-Server installiert und den RabbitMQ-Cluster mit drei Ubuntu 22.04-Servern konfiguriert. Außerdem hast du die UFW-Firewall zur Sicherung des RabbitMQ-Einsatzes konfiguriert, den Administrator-Benutzer für RabbitMQ eingerichtet und ein klassisches Queue-Mirroring auf dem RabbitMQ-Cluster über RabbitMQ-Policies erstellt.

Nun kannst du RabbitMQ als Message Broker für deine Anwendung und Infrastruktur nutzen. Du kannst den RabbitMQ-Einsatz aber auch auf die nächste Stufe bringen, indem du z. B. Quorum-Warteschlangen einrichtest, RabbitMQ über TLS sicherst und vieles mehr.

Das könnte dich auch interessieren …