Contactez-nous
  1. Accueil
  2. /
  3. Blog
  4. /
  5. Keepalived et VRRP : haute disponibilité réseau sur Linux

Réseau
Haute Disponibilité
Infrastructure

Keepalived et VRRP : haute disponibilité réseau sur Linux

21 février 2026

7 min de lecture

Sommaire
Plan de l'article
Comment fonctionne VRRP (RFC 5798)
Installer et configurer Keepalived
Health checks avancés
Keepalived vs Pacemaker/Corosync
Dépannage et monitoring
Perspectives complémentaires
Sources
Conclusion

En infrastructure, une adresse IP unique sur un serveur est un point de défaillance critique. Dès que ce serveur s'arrête, vos applications deviennent inaccessibles. Keepalived et le protocole VRRP (Virtual Router Redundancy Protocol, RFC 5798) résolvent ce problème en partageant une IP virtuelle entre plusieurs serveurs Linux.

Contrairement aux solutions "brutes" (DNS round-robin, load balancers externes), VRRP bascule automatiquement en millisecondes, sans intervention extérieure, ni DNS, ni configuration cloud.

Plan de l'article

  1. Comment fonctionne VRRP, protocole, rôles master/backup, priorités
  2. Installation et configuration Keepalived, déploiement complet sur Debian/RHEL
  3. Health checks avancés, TCP, HTTP, scripts custom
  4. Keepalived vs Pacemaker/Corosync, quand choisir quoi
  5. Dépannage et monitoring, diagnostiquer les problèmes HA
  6. Perspectives complémentaires, articles connexes
  7. Sources et conclusion

Comment fonctionne VRRP (RFC 5798)

Architecture master/backup et IP virtuelle

VRRP crée une IP partagée (Virtual IP ou VIP) entre deux ou plusieurs serveurs. L'un est master (actif), l'autre backup (en attente). Les clients ne connaissent que la VIP ; ils sont donc transparents au basculement.

┌──────────────────┐
│  Client A        │
│  Client B        │  → VIP 192.168.1.100 (MAC virtuelle)
│  Client C        │
└──────────────────┘
         ↑
         ├─ Trafic vers Master (192.168.1.10) [ACTIF]
         │
         └─ Basculement vers Backup (192.168.1.11) [ATTENTE]
Priorités et élection
  • Plage de priorité : 0 à 255
  • Valeur par défaut : 100
  • Logique : priorité plus élevée gagne → devient master
  • Preemption : si elle est activée, un serveur avec priorité supérieure retrouve le rôle master même après basculement
Multicast et advertisements

Keepalived envoie des advertisements VRRP :

  • Destination : multicast 224.0.0.18, port 112
  • Intervalle par défaut : 1 seconde
  • Détection de défaillance : après 3 advertisements manqués (3 secondes par défaut), le backup prend le relais
  • TTL : 255 (réseau local uniquement)

Si le master s'arrête, les advertisements cessent, le backup détecte le silence et devient master. Instantanément, la VIP migre vers le nouveau master via gratuitous ARP.


Installer et configurer Keepalived

Installation

Debian/Ubuntu :

sudo apt update
sudo apt install keepalived
sudo systemctl enable keepalived

RHEL/CentOS/Rocky :

sudo dnf install keepalived
sudo systemctl enable keepalived
Configuration complète

Fichier : /etc/keepalived/keepalived.conf

Sur le serveur MASTER (192.168.1.10) :

global_defs {
  router_id MASTER_ROUTER
  script_user root
  enable_script_security
}

vrrp_script check_app {
  script "/usr/local/bin/check_app.sh"
  interval 2
  weight -20
  fall 3
  rise 2
}

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 150
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass P@ssw0rd123
  }
  virtual_ipaddress {
    192.168.1.100/24
  }
  track_script {
    check_app
  }
  notify_master "/usr/local/bin/notify_master.sh"
  notify_backup "/usr/local/bin/notify_backup.sh"
  notify_fault "/usr/local/bin/notify_fault.sh"
  preempt_delay 300
}

Sur le serveur BACKUP (192.168.1.11) :

global_defs {
  router_id BACKUP_ROUTER
  script_user root
  enable_script_security
}

vrrp_script check_app {
  script "/usr/local/bin/check_app.sh"
  interval 2
  weight -20
  fall 3
  rise 2
}

vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass P@ssw0rd123
  }
  virtual_ipaddress {
    192.168.1.100/24
  }
  track_script {
    check_app
  }
  notify_master "/usr/local/bin/notify_master.sh"
  notify_backup "/usr/local/bin/notify_backup.sh"
  notify_fault "/usr/local/bin/notify_fault.sh"
}
Clés de configuration
ParamètreRôle
virtual_router_idIdentifiant unique du groupe VRRP (0-255)
priorityPriorité d'élection (0-255, plus haut gagne)
advert_intIntervalle entre advertisements (secondes)
auth_passMot de passe simple d'authentification
preempt_delayAttendre X secondes avant reprendre master (évite flapping)
track_scriptExécuter un script et ajuster priorité si échec
Appliquer la configuration
sudo systemctl restart keepalived
sudo systemctl status keepalived

Health checks avancés

Un serveur peut répondre au ping mais son application être morte. Keepalived surveille tout ça via des scripts.

Check TCP simple
vrrp_script check_http {
  script "/bin/sh -c 'curl -sf http://127.0.0.1:8080/health || exit 1'"
  interval 2
  weight -30
  fall 3
  rise 2
}
  • weight -30 : si le check échoue, réduire la priorité de 30 points
  • fall 3 : déclarer l'app down après 3 échecs consécutifs
  • rise 2 : la déclarer à nouveau up après 2 succès
Check HTTPS avec certificat
vrrp_script check_https {
  script "/bin/sh -c 'timeout 3 openssl s_client -connect 127.0.0.1:443 -servername api.example.com </dev/null 2>&1 | grep -q CONNECTED && exit 0 || exit 1'"
  interval 3
  weight -50
}
Check custom (script shell)

Fichier /usr/local/bin/check_app.sh :

#!/bin/bash
# Vérifier plusieurs conditions
APP_PORT=8080
LOG_FILE="/var/log/app.log"
THRESHOLD_SECONDS=300

# Check 1: Port écoute
netstat -tuln | grep -q ":$APP_PORT " || exit 1

# Check 2: Fichier log pas stale (mis à jour dans les 5 dernières min)
if [ -f "$LOG_FILE" ]; then
  MTIME=$(date +%s -r "$LOG_FILE")
  NOW=$(date +%s)
  DIFF=$((NOW - MTIME))
  [ $DIFF -lt $THRESHOLD_SECONDS ] || exit 1
fi

# Check 3: Processus principal existe
pgrep -f "python /opt/app/main.py" > /dev/null || exit 1

exit 0

Permissions :

sudo chmod +x /usr/local/bin/check_app.sh

Keepalived vs Pacemaker/Corosync

Les deux assurent la HA, mais pas au même niveau.

CritèreKeepalivedPacemaker/Corosync
ComplexitéSimple, IP failoverCluster complet, ressources multiples
Use caseVIP sur 2 serveursCluster 3+ nœuds, ressources complexes
RessourcesIP virtuelleIP, services, volumes, base de données
CommunicationMulticast VRRPCorosync (cœur cluster)
Configuration1 fichier par serveurCrm shell, XML, Pacemaker config
Split brainUnicast heartbeat empêcheQuorum + voting
Overhead~2 % CPU~5-10 % CPU

👉 Keepalived = "J'ai deux serveurs web, je veux une VIP qui bascule"

👉 Pacemaker = "J'ai un cluster de 5 nœuds, je dois orchestrer services, base de données, volumes NFS"


Dépannage et monitoring

Vérifier l'état VRRP
# Sur le master
sudo journalctl -u keepalived -f

# Voir la priorité en temps réel
sudo cat /proc/net/vrrp_sysctl/vrrp_priority
Tcpdump pour voir les advertisements
sudo tcpdump -i eth0 -nn proto 112
# Sortie :
# IP 192.168.1.10 > 224.0.0.18: VRRP advertisement [Priority: 150]
Test de basculement (couper le master)
# Terminal 1 : Monitor les logs du backup
ssh backup-server "sudo journalctl -u keepalived -f"

# Terminal 2 : Couper le master
ssh master-server "sudo systemctl stop keepalived"

# Vérifier :
# - Log backup : VRRP transition BACKUP -> MASTER
# - Vérifier VIP depuis client : ping 192.168.1.100
# - Contrôler MAC : arp 192.168.1.100 (MAC du backup maintenant)
Monitoring SNMP

Keepalived expose des OIDs SNMP. Configurer dans keepalived.conf :

global_defs {
  enable_snmp
  snmp_socket udp:127.0.0.1:161
}

Puis interroger :

snmpget -v2c -c public localhost 1.3.6.1.4.1.9.9.500.1.1.0  # VRRP state

Perspectives complémentaires

Pour aller plus loin sur la HA, à lire aussi :

  • HAProxy pour clustering HTTP avancé, load balancing stateful
  • Pacemaker et Corosync : orchestration cluster complète, au-delà du failover IP
  • Nginx comme reverse proxy haute disponibilité, HA L7

Sources

  • Keepalived Official Manual
  • RFC 5798, VRRP v3 (remplace RFC 3768 v2)
  • Linux Foundation, Clustering & HA
  • Red Hat Documentation : RHEL Configuring Failover Clustering

Conclusion

Keepalived et VRRP donnent une solution légère pour la haute disponibilité réseau. Contrairement aux approches DNS ou cloud-natives, le basculement reste instantané et autonome, sans dépendance externe.

Bien configuré (priorités correctes, health checks fiables, preempt_delay ajusté), ce duo devient invisible mais indispensable, vos clients ne verront jamais l'interruption.

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

OpenZiti : zero-trust networking applicatif open source
Sécurité
Réseau
Infrastructure

OpenZiti : zero-trust networking applicatif open source

Architecture OpenZiti, identity-based networking, dark services, fabric mTLS. Déployer un réseau zero-trust applicatif sans VPN traditionnel, retours ops.

11 juin 2026

Lire plus

PowerDNS et dnsdist : DNS authoritative haute performance
Réseau
Infrastructure
Performance

PowerDNS et dnsdist : DNS authoritative haute performance

Architecture PowerDNS Authoritative et Recursor, dnsdist load-balancer DNS, déploiement, hardening, comparaison avec BIND9. Stack DNS moderne pour ISP et hébergeur.

5 juin 2026

Lire plus

VyOS : routeur Linux pour datacenter en production
Réseau
Infrastructure
Linux

VyOS : routeur Linux pour datacenter en production

Architecture VyOS, BGP, OSPF, MPLS, IPsec, configuration commit/rollback. Déployer un routeur logiciel open source au coeur d'une infra DC, retours ops.

28 mai 2026

Lire plus


SHPV, votre partenaire de confiance en infrastructure et infogérance informatique en France.

SHPV
Contactez-nousNous contacter
Expertise
InfrastructureDatacenterInfogéranceCloudHébergementTransit IP
Légales
Conditions Générales de VenteCPS - Contrat de ServicesCPS - Hébergement CloudCPS - Microsoft 365Accord sous-traitance RGPDTarifs interventions

SHPV © 2026 - Tous droits réservés

Mentions légalesPolitiques de confidentialité
SHPV FRANCE - SAS au capital de 16 000 € - 52 Rue Romain Rolland, 71230 Saint-Vallier - SIRET n°80886287400035 - R.C.S. Chalon-sur-Saône. Par téléphone 09 72 310 818 - Email: support@shpv.fr