Pacemaker (gestionnaire de ressources) et Corosync (messagerie de cluster) forment une stack de haute disponibilité (HA) générique pour protéger des services variés (base de données, NFS, services web, etc.).
L'objectif : détecter la panne d'un nœud, redémarrer la ressource ailleurs et publier une IP virtuelle (VIP) pour une continuité transparente.
Plan de l'article
- Prérequis & architecture
- Installation (Debian/Ubuntu & RHEL)
- Configuration de Corosync (anneau, quorum)
- Configuration de Pacemaker (ressources, contraintes)
- Fencing/STONITH & watchdog
- Tests de bascule et vérifications
- Bonnes pratiques & supervision
- Conclusion
Intégration avec d'autres solutions
- Pour une orchestration Kubernetes HA, consultez Kubernetes en haute disponibilité
- Sécurisez vos secrets en cluster avec HashiCorp Vault HA
- Supervisez le cluster avec une stack de monitoring complète
- Explorez HAProxy en cluster
- Synchronisez l'heure avec NTP local
- Découvrez Consul pour la service discovery
Prérequis & architecture
- 2 à 3 nœuds (au moins 2 pour la redondance, 3 recommandé pour un quorum sain).
- Un réseau stable entre nœuds (latence faible).
- Une IP virtuelle (VIP) qui sera déplacée entre nœuds.
- Des données partagées si nécessaire (DRBD, NFS, SAN) selon le service protégé.
- Accès root/admin et pare-feu ajusté pour les ports Corosync/Pacemaker.
Installation
Debian/Ubuntu
sudo apt update
sudo apt install pacemaker corosync pcs fence-agents
RHEL/CentOS/Rocky
sudo yum install pacemaker corosync pcs fence-agents-all
sudo systemctl enable --now pcsd
echo "motdepasse" | sudo passwd --stdin hacluster # RHEL-like
Synchroniser l'heure (chrony/ntp) et configurer la résolution DNS/hosts pour tous les nœuds.
Configuration de Corosync
Fichier /etc/corosync/corosync.conf minimal (transport unicast UDP) :
totem {
version: 2
secauth: on
cluster_name: ha-cluster
transport: udpu
}
nodelist {
node { ring0_addr: node1; name: node1; nodeid: 1; }
node { ring0_addr: node2; name: node2; nodeid: 2; }
}
quorum { provider: corosync_votequorum; two_node: 1; }
logging { to_syslog: yes; }
Activer et démarrer :
sudo systemctl enable --now corosync pacemaker
Vérifier le cluster :
pcs status # ou crm_mon -1
Configuration de Pacemaker (VIP + service)
Créer une IP virtuelle (ex. 192.168.1.50/24 sur eth0) et une ressource service (ex. apache/httpd) :
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.50 cidr_netmask=24 nic=eth0 op monitor interval=20s
pcs resource create web systemd:httpd op monitor interval=30s timeout=20s
Définir l'ordre (la VIP doit suivre le service ou l'inverse selon le design) et l'emplacement :
pcs constraint order start web then vip
pcs constraint colocation add vip with web INFINITY
Variante : si vous préférez publier la VIP même quand le service est up, inversez l'ordre et ajustez la colocation.
Fencing / STONITH & watchdog
Le fencing (STONITH) évite les split-brain : le nœud défaillant est mis hors ligne de façon sûre.
Exemple générique (IPMI/iDRAC/ILO) :
pcs stonith create fence-node1 fence_ipmilan pcmk_host_list="node1" ipaddr="10.0.0.11" login="admin" passwd="secret" lanplus="1"
pcs stonith create fence-node2 fence_ipmilan pcmk_host_list="node2" ipaddr="10.0.0.12" login="admin" passwd="secret" lanplus="1"
pcs property set stonith-enabled=true
pcs property set no-quorum-policy=stop
Option watchdog (soft fencing) si disponible :
modprobe softdog
pcs property set stonith-watchdog-timeout=10s
Tests de bascule et vérifications
- Arrêt du service sur le nœud actif : Pacemaker redémarre ailleurs.
- Coupure réseau (simulée) : vérifier le comportement du quorum.
- Arrêt du nœud : la VIP et la ressource migrent automatiquement.
Commandes utiles :
pcs status
pcs resource move web node2 # migration manuelle (test)
pcs resource clear web # nettoyage des contraintes temporaires
Bonnes pratiques & supervision
- Toujours activer STONITH et tester les scénarios de panne.
- Versionner la configuration (
pcs config backup), documenter les procédures de DR. - Surveiller avec Prometheus (exporter pacemaker),
crm_mon -1, journauxjournalctl -u pacemaker. - Éviter les dépendances cachées (montages, DNS, pare-feu).
- Ajuster les timeouts et op monitor selon le service protégé.
Conclusion
Avec Pacemaker + Corosync, vous déployez une HA générique et éprouvée : détection de panne, bascule automatique, fencing et VIP pour une continuité transparente.
Cette stack s'adapte à de nombreux services (bases, NFS, web) et reste une valeur sûre en production.


