Gewöhnlicher Cluster: Ein gewöhnlicher Cluster, der aus mehreren Knoten besteht. Nachrichten werden zufällig an die Warteschlange eines der Knoten gesendet. Andere Knoten behalten nur Metadaten. Jeder Knoten hat nur dieselben Metadaten, nämlich Warteschlangenstruktur, Switch-Struktur, Vhost usw. Wenn Verbraucher Nachrichten konsumieren, ziehen sie Nachrichten von verschiedenen Knoten. Wenn der Knoten, der die Nachricht speichert, ausfällt, kann die Nachricht nicht konsumiert werden. Wenn die Nachricht persistent gespeichert ist, muss sie warten, bis der Knoten wiederhergestellt ist, bevor sie konsumiert werden kann. Wenn sie nicht persistent gespeichert ist, geht die Nachricht verloren. Spiegelcluster: Basierend auf dem normalen Modus werden die erforderlichen Warteschlangen in Spiegelwarteschlangen umgewandelt und existieren auf mehreren Knoten, um eine hohe Verfügbarkeit (HA) zu erreichen. Dieser Modus löst die oben genannten Probleme. Der Broker synchronisiert Nachrichtenentitäten aktiv zwischen Spiegelknoten, und es besteht keine Notwendigkeit, Daten vorübergehend abzurufen, wenn Verbraucher Daten abrufen. Die Nebenwirkungen dieses Modus liegen ebenfalls auf der Hand. Wenn zu viele Spiegelwarteschlangen vorhanden sind und eine große Anzahl von Nachrichten eingeht, wird nicht nur die Systemleistung verringert, sondern auch die Netzwerkbandbreite innerhalb des Clusters stark beansprucht. Im Allgemeinen wird der Spiegelungsmodus für Szenarien mit hohen Zuverlässigkeitsanforderungen empfohlen. 1. Erstellen Sie die Betriebsumgebung von RabbitMqMein Computer ist Windows 10 und ich habe zwei RabbitMQ-Knoten über Docker erstellt. 1. Fragen Sie das RabbitMQ-Bild über die Suche ab
2. Ziehen Sie das neueste offizielle Image von rabbitmq durch PullAm besten bringen Sie die Version mit dem Tag-Management hierher. Andernfalls kann die Webverwaltungsseite beim Abrufen der neuesten Version nicht die gesamte Version anzeigen und fordert zur Übersicht auf: Nur-Verwaltungsmodus
3. Erstellen Sie einen Container
--name: Containername -p: Endpunktzuordnung --hostname: RabbitMQ-Knotenname -e RABBITMQ_DEFAULT_VHOST: Virtueller Hostname -e RABBITMQ_DEFAULT_USER: Anmeldekonto -e RABBITMQ_DEFAULT_PASS: Anmeldekennwort a4eb038c2ecb ist die Bild-ID, ersetzen Sie sie entsprechend Ihrer eigenen Situation. 4. Starten Sie die VerwaltungsseiteIn unserem Image ist die Webverwaltungsseite standardmäßig nicht aktiviert, daher verwenden wir den Befehl „exec“, um den Container aufzurufen und zu starten. Die Umgebung dieses Images ist Ubuntu.
Besuchen Sie http://localhost:15672/ im Browser, um es zu öffnen. Machen Sie dasselbe für die anderen RabbitMQs. Der Unterschied besteht darin, dass die Ports auf 5673 und 15673 usw. geändert werden und --link verwendet wird, um beim Erstellen des Containers eine Verbindung zum ersten RabbitMQ-Knoten herzustellen (Sie können auch eine Bridge-Netzwerkverbindung erstellen), wie folgt
5. Erlang-Cookies setzenDas Erlang-Cookie konnte ursprünglich durch Festlegen des Parameters -e RABBITMQ_ERLANG_COOKIE beim Ausführen des Containers gesetzt werden, ist mittlerweile jedoch veraltet. Wir verwenden zunächst den Befehl „Docker-Logs“, um das laufende Protokoll des Containers anzuzeigen und den Parameter „Home-Dir“ wie folgt zu finden: PS D:\> Docker-Protokolle rabbitmq1 //.....Der Startbroker wird hier weggelassen...2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> Knoten: Kaninchen@myRabbit1 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> Home-Verzeichnis: /var/lib/rabbitmq 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> Konfigurationsdatei(en): /etc/rabbitmq/conf.d/10-default-guest-user.conf 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> : /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> Cookie-Hash: Aed9pjd9vYWw3hng7Gjmkg== 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> Protokoll(e): /var/log/rabbitmq/rabbit@myRabbit1_upgrade.log 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> : <stdout> 2021-11-17 02:19:55.859245+00:00 [info] <0.222.0> Datenbankverzeichnis: /var/lib/rabbitmq/mnesia/rabbit@myRabbit1 Die Datei .erlang.cookie befindet sich also in diesem Pfad und wir können diese Datei sehen, wenn wir den Container betreten
Anschließend setzen wir die Berechtigungen für das Erlang-Cookie und führen den folgenden Code im Container aus. Wenn die Berechtigungen nicht ausreichen, melden nachfolgende Vorgänge einen Fehler.
Anschließend kopieren wir mit dem Docker-Befehl cp die Datei .erlang.cookie in rabbitmq1 auf die physische Maschine und anschließend in den rabbitmq2-Container. Der Kopierbefehl zwischen der physischen Maschine und dem Container lautet wie folgt:
Der spezifische Code lautet wie folgt:
Nach dem Kopieren müssen Sie den rabbitmq2-Container neu starten, da sonst beim Ausführen des Befehls rabbitmqctl der folgende Fehler gemeldet wird:
2. NormalmodusRufen Sie nach dem Neustart den Container auf und fügen Sie den Knoten rabbitmq2 zu rabbitmq1 hinzu, um einen normalen Cluster zu erstellen. Führen Sie jeweils die folgenden Codes aus: rabbitmqctl stop_app rabbitmqctl zurücksetzen rabbitmqctl join_cluster --ram rabbit@myRabbit1 //myRabbitmq1 ist der Hostname von rabbitmq im rabbitmq1-Container. rabbitmqctl start_app Danach können wir zwei Knoten auf der Webverwaltungsseite sehen. Wenn Sie auf einem beliebigen Knoten eine Warteschlange erstellen, wird die gleiche Warteschlange auf dem anderen Knoten generiert. Und es kann festgestellt werden, dass sich der vhost von rabbitmq2 von my_vhost2 zu my_vhost1 geändert hat, was dasselbe wie rabbitmq ist. 3. SpiegelmodusDer Spiegelmodus besteht darin, den RabbitMQ1-Container basierend auf dem normalen Modus aufzurufen und den folgenden Befehl einzugeben:
Das spezifische Format ist rabbitmqctl set_policy [-p Vhost] Namensmusterdefinition [Priorität] -p Vhost: Optionaler Parameter, der für die Warteschlange unter dem angegebenen virtuellen Host festgelegt wird. Name: Richtlinienname. Muster: Warteschlangen-Übereinstimmungsmuster (regulärer Ausdruck). Definition: Bilddefinition, bestehend aus drei Teilen: ha-mode, ha-params, ha-sync-mode ha-mode: Gibt den Spiegelwarteschlangenmodus an. Gültige Werte sind alle/genau/Knoten all: zeigt die Spiegelung auf allen Knoten im Cluster an exact: zeigt die Spiegelung auf einer angegebenen Anzahl von Knoten an, die Anzahl der Knoten wird durch ha-params angegeben nodes: zeigt die Spiegelung auf angegebenen Knoten an, der Knotenname wird durch ha-params angegeben ha-params: als Parameter ist es eine Ergänzung zum ha-mode ha-sync-mode: der Synchronisierungsmodus von Nachrichten in der Warteschlange, die gültigen Werte sind automatisch und manuell Priorität: optionaler Parameter, Richtlinienpriorität rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' --apply-to-all Oder melden Sie sich auf der RabbitMQ-Verwaltungsseite an -> Admin -> Richtlinien -> Richtlinie hinzufügen/aktualisieren Name: Richtlinienname Muster: ^-Übereinstimmungszeichen, nur ein ^ bedeutet Übereinstimmung mit allen. ^message bezieht sich auf den Warteschlangennamen, der mit „message“ beginnt Definition: ha-mode=all ist der passende Typ, der in 3 Modi unterteilt ist: all (bedeutet alle Warteschlangen) Priorität: Zuerst nach Erklären Sie kurz den Unterschied zwischen Betreiberrichtlinie und Benutzerrichtlinie:
Operatorrichtlinie und Benutzerrichtlinie werden kombiniert und auf die Warteschlange angewendet. Um zu verhindern, dass die Operatorrichtlinie bestimmte Schlüsselattribute der Warteschlange überschreibt, wie z. B. den Referenzlernen: https://www.cnblogs.com/knowledgesea/p/6535766.html https://blog.csdn.net/belonghuang157405/article/details/83540148 Dies ist das Ende dieses Artikels zum Erstellen des normalen RabbitMq-Clusters und des gespiegelten Clusters mit Docker. Weitere Informationen zum Erstellen des RabbitMq-Clusters mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Mysql praktische Übungen einfaches Bibliotheksverwaltungssystem
>>: Beispielcode zur Implementierung eines gestapelten Karusselleffekts mit HTML+CSS+JS
Prozessstrukturdiagramm Nginx ist eine Multiproze...
Wenn ich irgendwelche unklaren Fragen habe, gehe ...
In diesem Artikelbeispiel wird der spezifische JS...
1. Jede Funktion ist ein Objekt und belegt Speich...
Vorwort ActiveMQ ist der beliebteste und leistung...
1. Systemumgebung Die Systemversion nach dem Yum-...
Wenn Sie einer Option das Attribut selected = &quo...
1. Docker installieren yum installiere Docker #St...
Als ich kürzlich eine Schnittstelle zeichnete, st...
Wenn Ihr Computer ein Mac ist, ist die Verwendung...
Inhaltsverzeichnis 1. Aggregierte Abfrage 1. COUN...
Inhaltsverzeichnis Was ist wartbarer Code? Code-K...
Die gebräuchlichste Methode besteht darin, einen ...
Derzeit unterstützen die meisten CPUs Gleitkommae...
1. Laden Sie die Linux-Version von der offizielle...