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.
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.
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.
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
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.
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.
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
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.
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‚.
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.
Unten siehst du die Ausgabe des„rabbitmq3„-Servers.
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.
Unten siehst du die Ausgabe, wenn„rabbitmq3“ dem RabbitMQ-Cluster beitritt und die RabbitMQ-Anwendung startet.
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 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
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"]}'
Ü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
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„.
Du solltest nun das RabbitMQ-Administrations-Dashboard sehen, das vom Plugin„rabbitmq_management“ bereitgestellt wird.
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„.
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.