Keepalived
Keepalived est une implémentation libre du protocole VRRP (licence GPLv2) sous Linux.
Il permet la mise en œuvre d'une redondance de passerelles offrant ainsi, et de manière automatisée, une meilleur résilience de l'accès aux réseaux externes à un ensemble de machines se trouvant dans un LAN. Il est en outre utilisé au sein d'une grappe de serveurs afin d'assurer l'accès à leurs services en cas de panne d'un des nœuds la composant. Il convient également tout à fait à la déserte fiable d'un réseau WAN à un parc de machines clientes.
Fonctionnement
Keepalived est un service simple à installer et à configurer. Il nécessite un minimum de deux machines pour fonctionner et peut en supporter 255 avec une priorité allant de 1 à 255. Une relation maître/esclave est entretenue entre les membres du groupe où l'unique maître est désigné par la priorité la plus haute. En cas de défaillance, l'esclave avec la priorité la plus haute prend momentanément sa place jusqu'à son retour ou sa propre défaillance, le prochain esclave prend alors le relais en suivant la même règle. Mettant en œuvre VRRP, une adresse IP virtuelle est attribuée au groupe et est allouée au maître actif du moment. L'adresse multicast 224.0.0.18 (traduite en vrrp.mcast.net) est utilisée pour envoyer des messages de contrôles du maître aux esclaves (ces derniers ne font qu'écouter) par intervalle configurable (en secondes). C'est à la cessation de l'émission que le maître est considéré comme défaillant. Le service est donc rapidement rétabli en cas de problème.
Installation et configuration
L'outil est disponible dans les dépôt Debian Stable
apt install --no-install-recommends keepalived
Le fichier de configuration n'existe pas par défaut. Il faut le créer
vim /etc/keepalived/keepalived.conf
Configuration de la première machine
vrrp_instance VI_1 {
interface eth0
virtual_router_id 51
priority 255
advert_int 1
virtual_ipaddress {
192.168.0.254/24
}
}
Configuration de la deuxième machine
vrrp_instance VI_1 {
interface eth0
virtual_router_id 51
priority 254
advert_int 1
virtual_ipaddress {
192.168.0.254/24
}
}
Dans le groupe défini, la première machine sera maître tandis que la seconde sera esclave. Voici une explication des lignes utilisées :
vrrp_instance VI_1 {
: création d'une instance VRRP (le nom est libre)interface eth0
: interface de travail sur laquelle sera appliquée l'adresse IP virtuelle. Les messages de contrôles transitent également par celle-civirtual_router_id 51
: identifiant du groupe (de 1 à 255). La comparaison des priorités s'effectue entre machines d'un même groupepriority 255
: définition de la priorité de la machine. Pour rappel, un nombre élevé est prioritaireadvert_int 1
: intervalle d'envoi des messages de contrôlesvirtual_ipaddress {
: adresse IP virtuelle du groupe
Redémarrer le service
systemctl restart keepalived.service
Vérifications
Il est possible de vérifier le bon fonctionnement du service en visualisant l'attribution de l'adresse IP virtuelle sur la machine ayant la priorité la plus élevée
ip -br a
Un débranchement de son câble réseau entraînera un déplacement de cette adresse sur la machine la plus prioritaire. La rapidité de cette convergence varie selon la fréquence des messages de contrôles définie dans la configuration. Ces messages sont visualisable avec tcpdump
tcpdump -n proto 112