Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Auflösen der Synchronisierung von RabbitMQ angehaltener Warteschlangensynchronisierung
In einem Amazon MQ für RabbitMQ Cluster-Bereitstellung, werden Nachrichten, die in jeder Warteschlange veröffentlicht werden, über drei Broker-Knoten repliziert. Diese Replikation, bezeichnet als Spiegelung, bietet Hochverfügbarkeit (HA) für RabbitMQ-Broker. Warteschlangen in einer Clusterbereitstellung bestehen aus einemHauptReplikat auf einem Knoten und einem oder mehrerenMirror. Jeder Vorgang, der auf eine gespiegelte Warteschlange angewendet wird, einschließlich der Warteschlange, wird zuerst auf die Hauptwarteschlange angewendet und dann über ihre Spiegelungen repliziert.
Betrachten Sie beispielsweise eine gespiegelte Warteschlange, die über drei Knoten repliziert wird: den Hauptknoten (main
) und zwei Spiegeln (mirror-1
undmirror-2
) enthalten. Wenn alle Nachrichten in dieser gespiegelten Warteschlange erfolgreich an alle Spiegelungen weitergegeben werden, wird die Warteschlange synchronisiert. Wenn ein Knoten (mirror-1
) für ein Zeitintervall nicht verfügbar ist, ist die Warteschlange noch funktionsfähig und kann weiterhin Nachrichten in die Warteschlange einlegen. Damit die Warteschlange synchronisiert werden kann, werden Nachrichten, die inmain
WHILEmirror-1
nicht verfügbar ist, muss repliziert werdenmirror-1
.
Weitere Informationen zum Spiegelung finden Sie unter Klassische gespiegelte Warteschlangen
Wartung und Warteschlangensynchronisierung
Während Wartungsfenstern führt Amazon MQ alle Wartungsarbeiten jeweils einen Knoten aus, um sicherzustellen, dass der Broker betriebsbereit bleibt. Daher müssen Warteschlangen möglicherweise synchronisiert werden, wenn jeder Knoten den Vorgang fortsetzt. Während der Synchronisierung werden Nachrichten, die auf Spiegelungen repliziert werden müssen, vom entsprechenden Amazon Elastic Block Store (Amazon EBS) -Volume in den Speicher geladen, um in Batches verarbeitet zu werden. Durch die Verarbeitung von Nachrichten in Batches können Warteschlangen schneller synchronisiert werden.
Wenn Warteschlangen kurz gehalten werden und Nachrichten klein sind, werden die Warteschlangen erfolgreich synchronisiert und wie erwartet fortgesetzt. Wenn sich die Datenmenge in einem Batch jedoch dem Speicherlimit des Knotens nähert, löst der Knoten einen Alarm mit hohem Speicher aus, der die Warteschlangen-Synchronisierung pausiert. Sie können die Speichernutzung überprüfen, indem Sie die Node-Metriken RabbitMemUsed
und die RabbitMqMemLimit
Broker-Node-Metriken unter vergleichen CloudWatch. Die Synchronisierung kann erst abgeschlossen werden, wenn Nachrichten verbraucht oder gelöscht oder die Anzahl der Nachrichten im Stapel reduziert wird.
Anmerkung
Die Reduzierung der Stapelgröße der Warteschlangensynchronisierung kann zu einer höheren Anzahl von Replikationstransaktionen führen.
Um eine angehaltene Warteschlangensynchronisierung aufzulösen, führen Sie die Schritte in diesem Lernprogramm aus, in dem veranschaulicht wird, wie eine ha-sync-batch-size
-Richtlinie angewendet wird, und starten Sie die Warteschlangen-Synchronisierung neu.
Themen
Voraussetzungen
Für dieses Tutorial benötigen Sie einen Amazon MQ for RabbitMQ Broker Benutzer mit Administratorberechtigungen. Sie können den Administratorbenutzer verwenden, der beim ersten Erstellen des Brokers erstellt wurde, oder einen anderen Benutzer, den Sie später erstellt haben. Die folgende Tabelle enthält die erforderlichen Administratorbenutzer-Tag und Berechtigungen als reguläre Ausdrücke (regexp) Muster.
Tags | Lesen Sie regexp | Konfigurieren von regexp | REGEXP-Schreiben |
---|---|---|---|
administrator |
.* |
.* |
.* |
Weitere Informationen zum Erstellen von RabbitMQ-Benutzern und zum Verwalten von Benutzer-Tags und -Berechtigungen finden Sie unterAmazon MQ für RabbitMQ-Broker-Benutzer.
Schritt 1: Wenden Sie eine ha-sync-batch-size
Richtlinie an
Die folgenden Verfahren veranschaulichen das Hinzufügen einer Richtlinie, die für alle Warteschlangen gilt, die auf dem Broker erstellt wurden. Sie können die RabbitMQ-Webkonsole oder die RabbitMQ-Management-API verwenden. Weitere Informationen finden Sie unter Management-Plugin
So wenden Sie eine ha-sync-batch-size
-Richtlinie mit der RabbitMQ-Webkonsole an
-
Melden Sie sich bei der Amazon MQ-Konsole
an. -
Wählen Sie im linken Navigationsbereich die Option Broker aus.
-
Wählen Sie in der Broker-Liste den Namen des Brokers aus, auf den Sie die neue Richtlinie anwenden möchten.
-
Auf der Seite des Brokers im-Verbindungen, wählen Sie im Bereich die OptionRabbitMQ WebkonsoleURL. Die RabbitMQ-Webkonsole wird in einer neuen Browserregisterkarte oder -fenster geöffnet.
-
Melden Sie sich mit Ihren Broker-Administratoranmeldeinformationen bei der RabbitMQ-Webkonsole an.
-
Wählen Sie in der RabbitMQ-Webkonsole oben auf der Seite die OptionAdmin.
-
Klicken Sie auf derAdminWählen Sie im rechten Navigationsbereich die OptionRichtlinien.
-
Klicken Sie auf derRichtlinienkönnen Sie eine Liste der aktuellen Broker-Benutzerrichtlinien sehen. UnterBenutzerrichtlinienErweitern Sie mitSo fügen/aktualisieren Sie eine Richtlinie.
Anmerkung
Standardmäßig werden Amazon MQ für RabbitMQ-Cluster mit einer anfänglichen Broker-Richtlinie namens
ha-all-AWS-OWNED-DO-NOT-DELETE
. Amazon MQ verwaltet diese Richtlinie, um sicherzustellen, dass jede Warteschlange im Broker auf alle drei Knoten repliziert wird und dass Warteschlangen automatisch synchronisiert werden. -
Um eine neue Broker-Richtlinie zu erstellen, gehen Sie unter Eine Richtlinie hinzufügen/aktualisieren wie folgt vor:
-
Geben Sie unter Name einen Namen für Ihre Richtlinie ein, z. B.
batch-size-policy
. -
Für Pattern geben Sie das regexp-Muster ein
.*
, damit die Richtlinie mit allen Warteschlangen auf dem Broker übereinstimmt. -
FürÜbernehmen von, wählen Sie Tauschen von Warteschlangen aus der Dropdown-Liste.
-
FürPriorität, geben Sie eine Ganzzahl ein, die größer ist als alle anderen Richtlinien, die auf den vhost angewendet werden. Sie können jederzeit genau einen Satz von Richtliniendefinitionen auf RabbitMQ-Warteschlangen und -Austauschvorgänge anwenden. RabbitMQ wählt die Matching-Policy mit dem höchsten Prioritätswert . Weitere Informationen zu Richtlinienprioritäten und zum Kombinieren von Richtlinien finden Sie unter Richtlinien
in der Dokumentation zu RabbitMQ Server. -
FürDefinition, fügen Sie die folgenden Schlüssel/Wert-Paare hinzu:
-
ha-sync-batch-size
=100
. Wählen Sie Zahl aus der Drop-down-Liste aus.Anmerkung
Möglicherweise müssen Sie den Wert von
ha-sync-batch-size
basierend auf der Anzahl und Größe der nicht synchronisierten Nachrichten in Ihren Warteschlangen anpassen. -
ha-mode
=all
. Klicken Sie aufZeichenfolgeaus der Dropdown-Liste.Wichtig
Die
ha-mode
-Definition ist für alle HA-bezogenen Richtlinien erforderlich. Das Auslassen führt zu einem Validierungsfehler. -
ha-sync-mode
=automatic
. Klicken Sie aufZeichenfolgeaus der Dropdown-Liste.Anmerkung
Die
ha-sync-mode
-Definition ist für alle benutzerdefinierten Richtlinien erforderlich. Wenn sie nicht angegeben wird, hängt Amazon MQ die Definition automatisch an.
-
-
Wählen Sie Richtlinie aktualisieren.
-
-
Vergewissern Sie sich, dass die neue Richtlinie in der Liste derBenutzerrichtlinien erscheint.
So verwenden Sie eineha-sync-batch-size
-Richtlinie mit der RabbitMQ-Verwaltungs-API
-
Melden Sie sich bei der Amazon MQ-Konsole
an. -
Wählen Sie im linken Navigationsbereich die Option Broker aus.
-
Wählen Sie in der Broker-Liste den Namen des Brokers aus, auf den Sie die neue Richtlinie anwenden möchten.
-
Auf der Seite des Brokers im -Verbindungen-Abschnitt, notieren Sie sich dieRabbitMQ WebkonsoleURL. Dies ist der Broker-Endpunkt, den Sie in einer HTTP-Anforderung verwenden.
-
Öffnen Sie ein neues Terminal- oder Befehlszeilenfenster Ihrer Wahl.
-
Um eine neue Broker-Richtlinie zu erstellen, geben Sie Folgendes ein
curl
-Befehl. Dieser Befehl nimmt an, dass eine Warteschlange auf der/
vhost, der als%2F
encodiert ist.Anmerkung
Ersetzen Sie
username
undpassword
durch die Anmeldeinformationen Ihres Broker-Administrators. Möglicherweise müssen Sie den Wert vonha-sync-batch-size
(100
) anhand der Anzahl und Größe der nicht synchronisierten Nachrichten in Ihren Warteschlangen anpassen und kalibrieren. Ersetzen Sie den Broker-Endpunkt durch die URL, die Sie zuvor notiert haben.curl -i -u
username
:password
-H "content-type:application/json" -XPUT \ -d '{"pattern":".*", "priority":1, "definition":{"ha-sync-batch-size":100
, "ha-mode":"all", "ha-sync-mode":"automatic"}}' \ https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com
/api/policies/%2F/batch-size-policy
-
Um zu bestätigen, dass die neue Richtlinie den Benutzerrichtlinien Ihres Brokers hinzugefügt wird, geben Sie folgen
curl
-Befehl, um alle Broker-Richtlinien aufzulisten.curl -i -u
username
:password
https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com
/api/policies
Schritt 2: Starten Sie die Warteschlangen-Synchronisierung
Nach dem Anwenden einer neuenha-sync-batch-size
-Richtlinie an Ihren Broker, starten Sie die Warteschlangen-Synchronisierung neu.
So starten Sie die Warteschlangensynchronisierung mithilfe der RabbitMQ-Webkonsole neu
Anmerkung
Informationen zum Öffnen der RabbitMQ-Webkonsole finden Sie in den vorherigen Anweisungen in Schritt 1 dieses Lernprogramms.
-
Wählen Sie in der RabbitMQ-Webkonsole oben auf der Seite die OptionQueues (Warteschlangen).
-
Klicken Sie auf die Seite Queues (Warteschlangen), und suchen Sie Ihre angehaltene Warteschlange unterAlle Warteschlangen. In der-Funktionen-Spalte, sollte die Warteschlange den Namen der neuen Richtlinie auflisten, die Sie erstellt haben (z. B.
batch-size-policy
). -
Um den Synchronisierungsprozess mit einer reduzierten Stapelgröße neu zu starten, wählen SieSynchronisation neu starten.
Anmerkung
Wenn die Synchronisation angehalten wird und nicht erfolgreich abgeschlossen wird, versuchen Sie, den ha-sync-batch-size
-Wert zu reduzieren und starten Sie die Warteschlangen-Synchronisierung erneut.
Nächste Schritte
-
Sobald Ihre Warteschlange erfolgreich synchronisiert wurde, können Sie anhand der Amazon-Metrik überwachen, wie viel Speicher Ihre RabbitMQ-Knoten verwenden. CloudWatch
RabbitMQMemUsed
Sie können auch dieRabbitMQMemLimit
-Metrik, um das Speicherlimit eines Knotens zu überwachen. Weitere Informationen erhalten Sie unter Zugreifen auf CloudWatch Metriken für Amazon MQ und Verfügbare CloudWatch Metriken für Amazon MQ für RabbitMQ-Broker. -
Um eine angehaltene Warteschlangensynchronisierung zu verhindern, empfehlen wir, Warteschlangen kurz zu halten und Nachrichten zu verarbeiten. Für Workloads mit größeren Nachrichtengrößen empfehlen wir außerdem, Ihren Broker-Instance-Typ auf eine größere Instance-Größe mit mehr Speicher zu aktualisieren. Weitere Informationen zu Broker-Instance-Typen und zur Bearbeitung von Broker-Einstellungen finden Sie unter. Bearbeiten von Broker-Einstellungen
-
Wenn Sie einen neuen Amazon MQ für RabbitMQ Broker erstellen, wendet Amazon MQ eine Reihe von Standardrichtlinien und virtuellen Host-Limits an, um die Broker-Performance zu optimieren. Wenn Ihr Broker nicht über die empfohlenen Standardrichtlinien und -beschränkungen verfügt, empfehlen wir, diese selbst zu erstellen. Weitere Informationen zum Erstellen von Standardrichtlinien und Vhost-Grenzwerten finden Sie unterStandardwerte für Amazon MQ für RabbitMQ Broker.
Zugehörige Ressourcen
-
UpdateBrokerInput— Verwenden Sie diese Broker-Eigenschaft, um einen Broker-Instance-Typ mithilfe der Amazon MQ MQ-API zu aktualisieren.
-
Parameter und Richtlinien
(RabbitMQ Server Documentation) — Erfahren Sie mehr über RabbitMQ-Parameter und -Richtlinien auf der RabbitMQ-Website. -
RabbitMQ-Management HTTP-API
— Erfahren Sie mehr über die RabbitMQ-Management-API.