Aller au contenu principal

Concepts — RabbitMQ

Architecture​

RabbitMQ sur Hikube est un service de messagerie managé basé sur le protocole AMQP. Chaque cluster créé depuis la console Hikube appartient à un projet et consomme les quotas de ce projet (CPU, mémoire, stockage).


Terminologie​

TermeDescription
Cluster RabbitMQInstance RabbitMQ managée, créée et gérée depuis la console (menu DB & Messaging → RabbitMQ).
AMQPAdvanced Message Queuing Protocol, protocole standard de messagerie supporté par RabbitMQ.
ExchangePoint d'entrée des messages. Route les messages vers les queues via des bindings.
QueueFile d'attente qui stocke les messages en attendant qu'un consumer les traite.
BindingRègle de routage entre un exchange et une queue (basée sur une routing key).
Quorum QueueType de queue utilisant le protocole Raft pour répliquer les messages sur plusieurs nœuds.
Virtual Host (vhost)Espace de noms logique qui isole les exchanges, queues et permissions au sein d'un même cluster.
ConsumerApplication qui lit et traite les messages d'une queue.
Préconfiguration (Preset)Profil de ressources CPU/mémoire prédéfini, choisi à la création du cluster.
RéplicasNombre de nœuds RabbitMQ du cluster. Détermine le mode de déploiement.

Modes de déploiement​

Le champ Nombre de réplicas de l'assistant propose trois valeurs :

ValeurLibellé dans la consoleMode
11 (Standalone)Un seul nœud. Le volume de données est répliqué au niveau du stockage de la plateforme.
33 (Haute disponibilité max)Cluster de 3 nœuds. La réplication des messages est assurée par RabbitMQ (quorum queues).
55 (Très haute disponibilité)Cluster de 5 nœuds, tolérant la perte de deux nœuds.
Mode fixé à la création

Le mode (standalone ou cluster) et le nombre de réplicas ne peuvent pas être modifiés après la création : la console affiche « Le mode ne peut pas être modifié après création ». Pour changer de mode, créez un nouveau cluster.


Routage des messages​

RabbitMQ utilise un modèle de routage flexible basé sur les exchanges et les bindings :

Types d'exchanges​

TypeRoutage
directRouting key exacte
topicPattern matching avec wildcards (*, #)
fanoutBroadcast à toutes les queues liées
headersRoutage basé sur les headers du message

Les exchanges, queues et bindings sont créés par vos applications, avec un client AMQP connecté au vhost voulu. La console gère le cluster, les vhosts et les utilisateurs, pas les objets AMQP eux-mêmes.


Quorum queues et haute disponibilité​

Les quorum queues utilisent le protocole Raft pour répliquer les messages :

  1. Un nœud est élu leader pour chaque queue
  2. Les messages sont répliqués sur les followers avant confirmation
  3. En cas de panne du leader, un follower est automatiquement promu
astuce

Choisissez 3 (Haute disponibilité max) ou 5 (Très haute disponibilité) réplicas pour garantir le quorum Raft, et déclarez vos queues critiques comme quorum queues (argument x-queue-type: quorum côté client).


Virtual hosts​

Les vhosts isolent les ressources au sein d'un même cluster :

  • Chaque vhost a ses propres exchanges, queues et permissions
  • Un utilisateur peut avoir un droit différent sur chaque vhost
  • Utile pour séparer les environnements (production, staging) ou les applications sur un même cluster

L'assistant de création demande au moins un vhost. D'autres vhosts peuvent être ajoutés ensuite depuis la page du cluster (bouton Ajouter un VHost).


Utilisateurs et droits​

Chaque utilisateur RabbitMQ reçoit un mot de passe généré par la plateforme, affiché une seule fois à la création (ou après une rotation). Ses droits sont définis par vhost :

Droit dans la consoleEffet
AdministrateurLecture, écriture et configuration sur le vhost
Lecture seuleLecture seule sur le vhost
Aucun accèsL'utilisateur n'a pas accès au vhost

Un utilisateur ne peut avoir qu'un seul droit par vhost. Les droits se modifient à tout moment avec l'action Gérer les accès.


Préconfigurations de ressources​

La Préconfiguration (Preset) fixe les ressources CPU et mémoire de chaque nœud. Les presets reprennent les tailles des machines virtuelles, séries u1, s1 et m1 : un preset a les mêmes ressources que la VM du même nom. La liste affichée par l'assistant fait foi :

PresetCPUMémoire
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

La préconfiguration ne peut pas être modifiée après création.

L'assistant ne présélectionne aucun preset : choisissez-en un pour continuer. Chaque option indique ses ressources, par exemple « u1.medium — 1 CPU / 4Gi ». Si la liste ne peut pas être chargée, l'assistant affiche « La liste des presets n'a pas pu être chargée. Réessayez plus tard ou contactez le support. »

Un cluster créé avec un ancien preset (nano, micro, small, medium, large, xlarge ou 2xlarge) le conserve et fonctionne comme avant : le formulaire Modifier l'affiche tel quel et l'enregistre sans changement. Le preset ne pouvant pas être modifié après la création, contactez le support pour ce changement. Si les ressources d'un cluster ont été fixées hors de son preset, le formulaire l'indique par la mention « (forcé) ».


Limites​

ParamètreValeur
Nom du cluster3 à 16 caractères : minuscules, chiffres et tirets ; commence par une lettre, se termine par une lettre ou un chiffre
Versions proposées4.2, 4.1, 4.0, 3.13 ; montée de version uniquement après création
Réplicas1, 3 ou 5 (fixé à la création)
Nom du vhostMinuscules, chiffres et tirets ; commence par une lettre, se termine par une lettre ou un chiffre
Nom d'utilisateur3 à 16 caractères : minuscules, chiffres et tirets ; commence par une lettre, se termine par une lettre ou un chiffre. Certains noms, comme admin ou root, sont réservés
Taille du disque1 à 4096 Go par nœud, dans la limite du quota de stockage du projet ; augmentation seulement
Accès externeActivable à la création ou ensuite
Port AMQP5672, sans TLS

Pour aller plus loin​