⚙️ Installation et Configuration de RabbitMQ
Bienvenue dans votre première installation de RabbitMQ ! Cette leçon vous guide pas-à-pas pour mettre en place un environnement RabbitMQ fonctionnel, que ce soit pour le développement ou la production.
🎯 Ce que vous allez apprendre
- Installation rapide avec Docker (5 minutes)
- Configuration de base pour démarrer
- Sécurisation de votre installation
- Monitoring et supervision
- Bonnes pratiques de production
🐳 Installation avec Docker (Recommandée pour débuter)
Pourquoi Docker ?
- ✅ Simple et rapide : une seule commande
- ✅ Pas de conflits avec votre système
- ✅ Environnement propre et reproductible
- ✅ Interface web incluse
Étape 1 : Créer le fichier Docker Compose
Créez un fichier docker-compose.yml :
version: '3.8'
services:
rabbitmq:
image: rabbitmq:3.12-management
container_name: rabbitmq-formation
ports:
- "5672:5672" # Port AMQP
- "15672:15672" # Interface web
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: password123
volumes:
- rabbitmq_data:/var/lib/rabbitmq
volumes:
rabbitmq_data:
Étape 2 : Démarrer RabbitMQ
# Lancer le conteneur
docker-compose up -d
# Vérifier que tout fonctionne
docker-compose logs -f rabbitmq
Étape 3 : Accéder à l'interface web
Ouvrez votre navigateur : http://localhost:15672
- Utilisateur :
admin - Mot de passe :
password123
🎉 Félicitations ! RabbitMQ est maintenant installé et prêt à utiliser.
💡 Comprendre l'interface de gestion
Une fois connecté, vous verrez plusieurs onglets :
| Onglet | Description | Usage | |--------|-------------|--------| | Overview | Vue d'ensemble du système | Monitoring général | | Connections | Connexions actives | Debug des clients | | Channels | Canaux de communication | Performance | | Exchanges | Points de routage | Configuration | | Queues | Files de messages | Surveillance |
💡 Astuce : Commencez par explorer l'onglet "Overview" pour vous familiariser avec les métriques de base.
🖥️ Installation Native (Production)
Ubuntu/Debian
# 1. Installer Erlang (requis pour RabbitMQ)
wget -O- https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
sudo dpkg -i erlang-solutions_2.0_all.deb
sudo apt-get update && sudo apt-get install esl-erlang
# 2. Installer RabbitMQ
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash
sudo apt-get install rabbitmq-server
# 3. Démarrer le service
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
# 4. Activer l'interface web
sudo rabbitmq-plugins enable rabbitmq_management
macOS avec Homebrew
# Installation
brew install rabbitmq
# Démarrage automatique
brew services start rabbitmq
# Interface web
rabbitmq-plugins enable rabbitmq_management
🔧 Configuration de Base
Créer un utilisateur administrateur
# Créer l'utilisateur
sudo rabbitmqctl add_user monprojet motdepasse123
# Donner les droits administrateur
sudo rabbitmqctl set_user_tags monprojet administrator
# Donner toutes les permissions
sudo rabbitmqctl set_permissions -p / monprojet ".*" ".*" ".*"
# Supprimer l'utilisateur guest (sécurité)
sudo rabbitmqctl delete_user guest
Fichier de configuration simple
Créez /etc/rabbitmq/rabbitmq.conf :
# Mémoire : utilise 60% de la RAM disponible
vm_memory_high_watermark.relative = 0.6
# Espace disque : minimum 2GB libre
disk_free_limit.absolute = 2GB
# Désactiver l'accès distant pour guest
loopback_users.guest = false
# Logs plus verbeux
log.console = true
log.console.level = info
🏢 Organiser avec les Virtual Hosts
Les Virtual Hosts (vhosts) permettent de séparer vos projets sur le même serveur RabbitMQ.
Créer des environnements
# Créer les vhosts
sudo rabbitmqctl add_vhost developpement
sudo rabbitmqctl add_vhost production
# Créer des utilisateurs dédiés
sudo rabbitmqctl add_user dev_user dev_pass
sudo rabbitmqctl add_user prod_user prod_pass_secure
# Assigner les permissions
sudo rabbitmqctl set_permissions -p developpement dev_user ".*" ".*" ".*"
sudo rabbitmqctl set_permissions -p production prod_user ".*" ".*" ".*"
Configuration client (Node.js)
const amqp = require('amqplib');
const config = {
development: {
protocol: 'amqp',
hostname: 'localhost',
port: 5672,
username: 'dev_user',
password: 'dev_pass',
vhost: 'developpement'
},
production: {
protocol: 'amqp',
hostname: 'prod-rabbitmq.monsite.com',
port: 5672,
username: 'prod_user',
password: process.env.RABBITMQ_PASSWORD,
vhost: 'production'
}
};
// Utilisation
const env = process.env.NODE_ENV || 'development';
const connection = await amqp.connect(config[env]);
🛡️ Sécurité de Base
Principe des permissions
RabbitMQ utilise 3 niveaux de permissions :
- Configure : Créer/modifier exchanges et queues
- Write : Publier des messages
- Read : Consommer des messages
Exemples de permissions restrictives
# Utilisateur qui peut seulement lire les logs
sudo rabbitmqctl set_permissions -p production lecteur_logs "" "" "^logs-.*"
# Microservice qui ne peut utiliser que ses propres ressources
sudo rabbitmqctl set_permissions -p production api_users "^users-.*" "^users-.*" "^users-.*"
# Service de monitoring (lecture seule)
sudo rabbitmqctl set_permissions -p production monitoring "" "" ".*"
📊 Monitoring Simple
Plugins essentiels
# Interface web (déjà activé avec Docker)
sudo rabbitmq-plugins enable rabbitmq_management
# Monitoring en temps réel
sudo rabbitmq-plugins enable rabbitmq_top
# Métriques Prometheus (optionnel)
sudo rabbitmq-plugins enable rabbitmq_prometheus
Surveiller les métriques importantes
Depuis l'interface web, surveillez :
- Memory usage : doit rester sous 80%
- Connections : nombre de clients connectés
- Messages : taux de production vs consommation
- Queues : éviter l'accumulation de messages
🚨 Alert : Si une queue accumule des messages, c'est souvent que les consumers ne suivent pas la charge.
✅ Checklist d'installation réussie
Vérifications de base
- [ ] RabbitMQ démarre correctement
- [ ] Interface web accessible (http://localhost:15672)
- [ ] Utilisateur admin créé et fonctionnel
- [ ] Utilisateur
guestdésactivé ou supprimé - [ ] Configuration mémoire/disque adaptée
Tests de fonctionnement
- [ ] Création d'une queue via l'interface
- [ ] Envoi d'un message test
- [ ] Réception du message
- [ ] Suppression de la queue test
Pour la production
- [ ] SSL/TLS configuré
- [ ] Firewall configuré (ports 5672, 15672)
- [ ] Monitoring activé
- [ ] Sauvegardes planifiées
- [ ] Documentation des accès
🚀 Script d'installation rapide
Voici un script qui automatise l'installation complète :
#!/bin/bash
# install-rabbitmq.sh
echo "🚀 Installation RabbitMQ pour Formation"
# Variables
USER_NAME="formation"
USER_PASS=$(openssl rand -base64 12)
# Installation (Ubuntu/Debian)
echo "📦 Installation des packages..."
sudo apt update
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash
sudo apt install -y rabbitmq-server
# Configuration
echo "⚙️ Configuration de base..."
sudo rabbitmq-plugins enable rabbitmq_management
# Utilisateur
echo "👤 Création de l'utilisateur..."
sudo rabbitmqctl add_user $USER_NAME $USER_PASS
sudo rabbitmqctl set_user_tags $USER_NAME administrator
sudo rabbitmqctl set_permissions -p / $USER_NAME ".*" ".*" ".*"
sudo rabbitmqctl delete_user guest
echo "✅ Installation terminée !"
echo ""
echo "🌐 Interface web : http://localhost:15672"
echo "👤 Utilisateur : $USER_NAME"
echo "🔑 Mot de passe : $USER_PASS"
echo ""
echo "💡 Sauvegardez ces informations !"
🎯 Prochaines étapes
Maintenant que RabbitMQ est installé, vous êtes prêt pour :
- Comprendre les concepts (Exchange, Queue, Binding)
- Créer vos premiers messages
- Explorer les patterns (Work Queues, Pub/Sub)
- Intégrer dans vos applications
💡 Conseil : Gardez l'interface web ouverte dans un onglet, elle sera votre meilleur outil de debug pendant l'apprentissage !
Félicitations ! 🎉 Vous avez maintenant un environnement RabbitMQ fonctionnel. Dans la prochaine leçon, nous explorerons les concepts fondamentaux : Exchange, Queue et Binding.