Keepalived

De Wiki doc


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 :

  1. vrrp_instance VI_1 { : création d'une instance VRRP (le nom est libre)
  2. interface eth0 : interface de travail sur laquelle sera appliquée l'adresse IP virtuelle. Les messages de contrôles transitent également par celle-ci
  3. virtual_router_id 51 : identifiant du groupe (de 1 à 255). La comparaison des priorités s'effectue entre machines d'un même groupe
  4. priority 255 : définition de la priorité de la machine. Pour rappel, un nombre élevé est prioritaire
  5. advert_int 1 : intervalle d'envoi des messages de contrôles
  6. virtual_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

Sources