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)
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
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
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 :
sudo rabbitmqctl list_queues name slave_pids synchronised_slave_pids
Conclusion
Avec ce cluster RabbitMQ hautement disponible, vos applications bénéficient d’une résilience et d’une continuité de service, assurées par les mirrored queues et un équilibrage de charge adapté.