Messaging
Infrastructure
Haute Disponibilité

Mettre en place un cluster RabbitMQ haute disponibilité avec mirrored queues

16 juillet 2025

3 min de lecture

RabbitMQ est un broker de messages robuste, mais pour assurer une haute disponibilité, il est recommandé de déployer un cluster et d’utiliser des mirrored queues. Ce guide détaille l’installation, la configuration du cluster et la création de policies pour le mirroring et le load balancing.

Prérequis

  • Trois nœuds RabbitMQ (Debian/Ubuntu ou RHEL/CentOS)
  • Erlang compatible installé
  • Ports ouverts : 5672, 4369, 25672, 15672 (management)

Alternatives et monitoring

1. Installation des prérequis

sudo apt update
sudo apt install -y erlang rabbitmq-server

2. Créer le cluster

Sur le premier nœud (node1) :

sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl start_app

Sur les nœuds suivants (node2, node3) :

sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app

Vérifiez le cluster :

sudo rabbitmqctl cluster_status

3. Configurer les mirrored queues (DEPRECATED)

⚠️ AVERTISSEMENT CRITIQUE : Les mirrored queues (ha-mode:all) sont DÉPRÉCIÉES depuis RabbitMQ 3.8 (2019) et seront SUPPRIMÉES dans RabbitMQ 4.0. Cette section est fournie uniquement pour les installations existantes. Préférez les quorum queues (voir section 3b ci-dessous) pour tout nouveau déploiement.

Définissez une policy pour mirror toutes les queues :

sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
  • "ha-mode":"all" : réplique sur tous les nœuds
  • "ha-sync-mode":"automatic" : synchronisation automatique

3b. RECOMMANDÉ : Utiliser les Quorum Queues (Raft-based)

Les quorum queues sont le remplaçant moderne des mirrored queues. Elles offrent une meilleure performance et une vraie consensus-based replication avec le protocole Raft.

Activer les quorum queues globalement
sudo rabbitmqctl set_policy quorum "^quorum\." '{"queue-mode":"quorum"}' --apply-to queues
Déclarer une quorum queue (avec Python/Pika)
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

# Déclaration d'une queue quorum
channel.queue_declare(
    queue='my-queue',
    arguments={'x-queue-type': 'quorum'}
)

connection.close()
Déclarer une quorum queue (avec RabbitMQ CLI)
sudo rabbitmqctl declare_queue --queue my-queue --queue-type quorum

Avantages des quorum queues vs mirrored queues :

  • ✅ Basées sur le consensus Raft (plus robuste)
  • ✅ Meilleures performances sous charge
  • ✅ Synchronisation plus efficace
  • ✅ Support officiel et maintenance active
  • ❌ Mirrored queues : mode legacy, performance dégradée, sera supprimé RabbitMQ 4.0

4. Mettre en place le load balancing

Utilisez un load balancer (HAProxy, Nginx) pour répartir les connexions sur les ports AMQP et HTTP management :

Exemple HAProxy
frontend rabbitmq-amqp
    bind *:5672
    default_backend rabbitmq-nodes

backend rabbitmq-nodes
    mode tcp
    balance roundrobin
    server node1 10.0.0.1:5672 check
    server node2 10.0.0.2:5672 check
    server node3 10.0.0.3:5672 check

5. Surveillance et tests

  • Management UI : http://node1:15672
  • Vérifiez la synchronisation des mirrored queues (legacy) :
sudo rabbitmqctl list_queues name slave_pids synchronised_slave_pids
  • Vérifiez l'état des quorum queues (moderne) :
sudo rabbitmqctl list_queues name leader_replica_index replicas

Conclusion

Avec ce cluster RabbitMQ hautement disponible, vos applications bénéficient d'une résilience et d'une continuité de service.

Pour les nouveaux projets, privilégiez les quorum queues qui offrent une meilleure performance et une maintenance à long terme. Les mirrored queues restent disponibles pour les installations existantes mais seront supprimées dans RabbitMQ 4.0.

Associé à un équilibrage de charge adapté (HAProxy, Nginx), votre système de messaging sera robuste et scalable.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires