Zum Hauptinhalt springen

Konzepte — RabbitMQ

Architektur​

RabbitMQ auf Hikube ist ein verwalteter Messaging-Dienst auf Basis des Protokolls AMQP. Jeder in der Hikube-Konsole erstellte Cluster gehört zu einem Projekt und verbraucht die Quotas dieses Projekts (CPU, Arbeitsspeicher, Speicher).


Terminologie​

BegriffBeschreibung
RabbitMQ-ClusterVerwaltete RabbitMQ-Instanz, die in der Konsole erstellt und verwaltet wird (Menü DB & Messaging → RabbitMQ).
AMQPAdvanced Message Queuing Protocol, von RabbitMQ unterstütztes Standard-Messaging-Protokoll.
ExchangeEingangspunkt der Nachrichten. Leitet die Nachrichten über Bindings an die Queues weiter.
QueueWarteschlange, die Nachrichten speichert, bis ein Consumer sie verarbeitet.
BindingRouting-Regel zwischen einem Exchange und einer Queue (auf Basis eines Routing Keys).
Quorum QueueQueue-Typ, der das Protokoll Raft verwendet, um Nachrichten auf mehrere Knoten zu replizieren.
Virtual Host (VHost)Logischer Namensraum, der Exchanges, Queues und Berechtigungen innerhalb eines Clusters voneinander isoliert.
ConsumerAnwendung, die Nachrichten aus einer Queue liest und verarbeitet.
PresetVordefiniertes CPU-/Arbeitsspeicherprofil, das bei der Erstellung des Clusters gewählt wird.
ReplicasAnzahl der RabbitMQ-Knoten des Clusters. Bestimmt den Bereitstellungsmodus.

Bereitstellungsmodi​

Das Feld Number of replicas des Assistenten bietet drei Werte an:

WertBezeichnung in der KonsoleModus
11 (Standalone)Ein einzelner Knoten. Das Datenvolume wird auf Ebene des Plattformspeichers repliziert.
33 (Max High Availability)Cluster mit 3 Knoten. Die Replikation der Nachrichten übernimmt RabbitMQ (Quorum Queues).
55 (Ultra High Availability)Cluster mit 5 Knoten, toleriert den Verlust von zwei Knoten.
Modus bei der Erstellung festgelegt

Der Modus (Standalone oder Cluster) und die Anzahl der Replicas können nach der Erstellung nicht mehr geändert werden: Die Konsole zeigt „The mode cannot be changed after creation“ an. Um den Modus zu wechseln, erstellen Sie einen neuen Cluster.


Routing von Nachrichten​

RabbitMQ verwendet ein flexibles Routing-Modell auf Basis von Exchanges und Bindings:

Exchange-Typen​

TypRouting
directExakter Routing Key
topicMusterabgleich mit Wildcards (*, #)
fanoutBroadcast an alle gebundenen Queues
headersRouting auf Basis der Header der Nachricht

Exchanges, Queues und Bindings werden von Ihren Anwendungen mit einem AMQP-Client erstellt, der mit dem gewünschten VHost verbunden ist. Die Konsole verwaltet den Cluster, die VHosts und die Benutzer, nicht die AMQP-Objekte selbst.


Quorum Queues und Hochverfügbarkeit​

Quorum Queues verwenden das Protokoll Raft, um Nachrichten zu replizieren:

  1. Für jede Queue wird ein Knoten zum Leader gewählt
  2. Nachrichten werden vor der Bestätigung auf die Follower repliziert
  3. Fällt der Leader aus, wird automatisch ein Follower befördert
Tipp

Wählen Sie 3 (Max High Availability) oder 5 (Ultra High Availability) Replicas, um das Raft-Quorum zu gewährleisten, und deklarieren Sie Ihre kritischen Queues als Quorum Queues (Argument x-queue-type: quorum auf Client-Seite).


Virtual Hosts​

VHosts isolieren Ressourcen innerhalb eines Clusters:

  • Jeder VHost hat eigene Exchanges, Queues und Berechtigungen
  • Ein Benutzer kann auf jedem VHost ein anderes Recht haben
  • Nützlich, um Umgebungen (Produktion, Staging) oder Anwendungen auf demselben Cluster zu trennen

Der Erstellungsassistent verlangt mindestens einen VHost. Weitere VHosts können anschließend auf der Seite des Clusters hinzugefügt werden (Schaltfläche Add a VHost).


Benutzer und Rechte​

Jeder RabbitMQ-Benutzer erhält ein von der Plattform generiertes Passwort, das bei der Erstellung (oder nach einer Rotation) nur einmal angezeigt wird. Seine Rechte werden pro VHost festgelegt:

Recht in der KonsoleWirkung
AdministratorLesen, Schreiben und Konfigurieren auf dem VHost
Read-onlyNur Lesen auf dem VHost
No accessDer Benutzer hat keinen Zugriff auf den VHost

Ein Benutzer kann pro VHost nur ein Recht haben. Die Rechte lassen sich jederzeit über die Aktion Manage Access ändern.


Ressourcen-Presets​

Das Preset legt die CPU- und Arbeitsspeicherressourcen jedes Knotens fest. Die Presets entsprechen den Größen der virtuellen Maschinen der Serien u1, s1 und m1: Ein Preset hat dieselben Ressourcen wie die gleichnamige VM. Maßgeblich ist die im Assistenten angezeigte Liste:

PresetCPUArbeitsspeicher
u1.medium14Gi
u1.large28Gi
u1.xlarge416Gi
u1.2xlarge832Gi
u1.4xlarge1664Gi
u1.8xlarge32128Gi
s1.small12Gi
s1.medium24Gi
s1.large48Gi
s1.xlarge816Gi
s1.2xlarge1632Gi
s1.4xlarge3264Gi
m1.large216Gi
m1.xlarge432Gi
m1.2xlarge864Gi
m1.4xlarge16128Gi
m1.8xlarge32256Gi

Das Preset kann nach der Erstellung nicht mehr geändert werden.

Der Assistent wählt kein Preset vor: Wählen Sie eines aus, um fortzufahren. Jede Option zeigt ihre Ressourcen an, zum Beispiel „u1.medium — 1 CPU / 4Gi“. Kann die Liste nicht geladen werden, zeigt der Assistent „The preset list could not be loaded. Try again later or contact support.“ an.

Ein Cluster, der mit einem früheren Preset (nano, micro, small, medium, large, xlarge oder 2xlarge) erstellt wurde, behält es und läuft wie bisher: Das Formular Edit zeigt es unverändert an und speichert es ohne Änderung. Da das Preset nach der Erstellung nicht geändert werden kann, wenden Sie sich für diese Änderung an den Support. Wurden die Ressourcen eines Clusters abweichend von seinem Preset festgelegt, weist das Formular mit dem Vermerk „(override)“ darauf hin.


Limits​

ParameterWert
Name des Clusters3 bis 16 Zeichen: Kleinbuchstaben, Ziffern und Bindestriche; beginnt mit einem Buchstaben, endet mit einem Buchstaben oder einer Ziffer
Angebotene Versionen4.2, 4.1, 4.0, 3.13; nach der Erstellung nur Versions-Upgrade
Replicas1, 3 oder 5 (bei der Erstellung festgelegt)
Name des VHostsKleinbuchstaben, Ziffern und Bindestriche; beginnt mit einem Buchstaben, endet mit einem Buchstaben oder einer Ziffer
Benutzername3 bis 16 Zeichen: Kleinbuchstaben, Ziffern und Bindestriche; beginnt mit einem Buchstaben, endet mit einem Buchstaben oder einer Ziffer. Einige Namen, etwa admin oder root, sind reserviert
Disk-Größe1 bis 4096 GB pro Knoten, im Rahmen der Speicher-Quota des Projekts; nur Vergrößerung möglich
Externer ZugriffBei der Erstellung oder später aktivierbar
AMQP-Port5672, ohne TLS

Weiterführende Informationen​