Dans un monde où la haute disponibilité est un prérequis pour tout service critique, la mise en place d’un système de bascule automatique entre deux serveurs (failover) est essentielle. Dans ce tutoriel, nous allons voir comment configurer un système de serveur de secours automatique en utilisant Keepalived et HAProxy sur deux VPS sous Linux (Debian 11 ou 12, Ubuntu, etc.).
🔍 Objectif
- Disposer de deux serveurs (VPS A et VPS B).
- Un seul point d’entrée avec une IP flottante (virtuelle) partagée entre les deux.
- Lorsque le serveur principal tombe, le trafic bascule automatiquement sur le serveur de secours.
- La répartition de charge ou le proxy HTTP(S) est géré via HAProxy.
🛠️ Prérequis
- 2 VPS accessibles avec des IP publiques (par exemple :
192.0.2.10
et192.0.2.11
) - Un sous-réseau IP failover / IP flottante (par exemple :
192.0.2.100
) - Un accès root ou
sudo
aux deux VPS - Les ports 80, 443 (et 22 pour SSH) ouverts dans les deux pare-feu
1. 📦 Installation de Keepalived et HAProxy
Sur les deux VPS, installez les paquets requis :
sudo apt update
sudo apt install keepalived haproxy -y
2. ⚙️ Configuration de HAProxy
Sur les deux VPS, éditez le fichier /etc/haproxy/haproxy.cfg
.
Exemple simple de configuration (proxy HTTP vers un service local) :
global
log /dev/log local0
maxconn 2048
daemon
defaults
log global
mode http
option httplog
timeout connect 5s
timeout client 30s
timeout server 30s
frontend http_in
bind *:80
default_backend servers
backend servers
server app1 127.0.0.1:8080 check
Remplacez 127.0.0.1:8080
par le port sur lequel tourne votre application.
🔁 Le même HAProxy est configuré sur les deux serveurs. Seul le serveur actif avec l’IP flottante recevra du trafic.
3. 🔁 Configuration de Keepalived
L’objectif ici est de faire basculer automatiquement l’IP flottante d’un serveur à l’autre.
Configuration sur le serveur principal (VPS A)
Fichier /etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass d4failover
}
virtual_ipaddress {
192.0.2.100
}
}
Configuration sur le serveur secondaire (VPS B)
Fichier /etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass d4failover
}
virtual_ipaddress {
192.0.2.100
}
}
💡 L’interface réseau
eth0
doit être adaptée à votre configuration (ip a
pour connaître l’interface active).
4. 🔄 Redémarrage et vérification
Sur les deux serveurs :
sudo systemctl restart haproxy
sudo systemctl enable keepalived
sudo systemctl start keepalived
Vérifiez que l’IP flottante est bien présente sur le VPS A (MASTER) :
ip a | grep 192.0.2.100
Arrêtez ensuite Keepalived sur le VPS A :
sudo systemctl stop keepalived
Et vérifiez qu’elle est bien transférée automatiquement sur le VPS B (BACKUP devenu MASTER).
5. 🔐 Configuration réseau de l’IP failover (exemple OVH)
Sur OVH, l’IP failover doit être ajoutée manuellement en tant qu’IP secondaire sur le serveur.
Ajoutez cette ligne dans /etc/network/interfaces.d/failover.cfg
(Debian/Ubuntu) :
auto eth0:0
iface eth0:0 inet static
address 192.0.2.100
netmask 255.255.255.255
broadcast 192.0.2.100
post-up /sbin/ip route add 192.0.2.100 dev eth0
Mais Keepalived se charge généralement de cette tâche automatiquement, vous n’avez à configurer cela que si l’IP ne remonte pas.
6. 🧪 Test de failover
- Ouvrez un navigateur ou faites un
curl http://192.0.2.100
. - Coupez le service HAProxy ou éteignez le VPS A.
- Observez la prise de relais par le VPS B (2 à 3 secondes de bascule).
- Rétablissez VPS A pour qu’il reprenne le rôle de MASTER.
7. 📈 Aller plus loin
- Ajouter une surveillance avec
keepalived_script
pour ne prendre le rôle MASTER que si HAProxy fonctionne. - Ajouter un load balancing actif/actif avec HAProxy en mode double backend (plus complexe).
- Superviser les états de Keepalived avec Netdata ou Prometheus.
- Sécuriser la gestion avec des règles
iptables
(filtrage des IPs de gestion VRRP).
🎯 Conclusion
En combinant Keepalived pour la gestion d’IP flottante et HAProxy pour le proxy/load balancing, vous pouvez atteindre une haute disponibilité simple, robuste et efficace entre deux VPS. Cette configuration assure la continuité de service en cas de panne de l’un des serveurs, un atout indispensable pour toute infrastructure professionnelle.