Keepalived est un logiciel de routage écrit en C. Le principal objectif de ce projet est de fournir des installations simples et robustes pour l'équilibrage de charge et la haute disponibilité des infrastructures basées sur le système Linux. Le cadre de l'équilibrage de charge s'appuie sur le module du noyau du serveur virtuel Linux (IPVS), bien connu et largement utilisé, qui assure l'équilibrage de charge de la couche 4.
Keepalived met en œuvre un ensemble de contrôleurs pour maintenir et gérer dynamiquement et de manière adaptative le pool de serveurs à équilibrage de charge en fonction de leur état de santé. D'autre part, la haute disponibilité est assurée par le protocole VRRP.
Le VRRP est une brique fondamentale pour le basculement des routeurs. Afin d'offrir une détection de panne de réseau plus rapide, Keepalived implémente le protocole BFD. La transition d'état VRRP peut prendre en compte l'indice BFD pour conduire une transition d'état rapide.
Keepalived est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation ; soit la version 2 de la licence, soit (à votre choix) toute version ultérieure.
Keepalived est utilisé pour le basculement IP entre deux serveurs. Il permet d'équilibrer la charge et la haute disponibilité des infrastructures basées sur Linux. Il fonctionne avec le protocole VRRP (Virtual Router Redundancy Protocol).
1 VIP :
2 servers linux :
Commençons la pratique en se basant sur une architecture réseau simple.
L'infrastructure de test est constituée de deux noeuds Server 1 et Server 2 d'adresses IP 192.168.1.101 et 192.168.1.102.
Les deux nœuds hébergent chacun un serveur web Apache.
Après avoir vidé les éventuels enregistrements ipvs déjà présents, on ajoute un service réseau sur le port 80 correspondant donc au HTTP, associé à un algorithme d'équilibrage.
Tout d'abord, utilisez la commande suivante pour installer les paquets nécessaires à la configuration de Keepalived sur le serveur.
$ sudo apt-get update $ sudo apt-get install linux-headers-$(uname -r)
Les paquets conservés sont disponibles dans les dépôts par défaut. Il suffit donc d'utiliser une commande pour l'installer sur les deux serveurs.
$ sudo apt-get install keepalived
Maintenant, créez ou modifiez le fichier de configuration Keepalived “/etc/keepalived/keepalived.conf” et ajoutez les paramètres suivants.
Mettez à jour toutes les valeurs surlignées en rouge avec votre configuration réseau et système.
$ sudo nano /etc/keepalived/keepalived.conf
Paramètre :
Configuration sur le premier noeud.
! Configuration File for keepalived global_defs { notification_email { sysadmin@oowy.lan support@oowy.lan } notification_email_from server1@oowy.lan smtp_server localhost smtp_connect_timeout 30 } vrrp_instance VI_1 { state MASTER interface enp0s3 virtual_router_id 101 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.101 } }
Configuration sur le second noeud.
! Configuration File for keepalived global_defs { notification_email { sysadmin@oowy.lan support@oowy.lan } notification_email_from server1@oowy.lan smtp_server localhost smtp_connect_timeout 30 } vrrp_instance VI_1 { state MASTER interface enp0s3 virtual_router_id 101 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.102 } }
Démarrez le service keepalived en utilisant la commande suivante et configurez également le démarrage automatique au démarrage du système.
sudo systemctl start keepalived
Par défaut, l'adresse IP virtuelle sera attribuée au serveur maître. En cas de panne du serveur maître, elle sera automatiquement attribuée au serveur esclave. Utilisez la commande suivante pour afficher l'adresse IP virtuelle assignée sur l'interface.
Sortie standard
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:64:70:2a brd ff:ff:ff:ff:ff:ff inet 192.168.1.101/24 brd 192.168.1.255 scope global dynamic enp0s3 valid_lft 2291sec preferred_lft 2291sec inet 192.168.1.100/32 scope global enp0s3 valid_lft forever preferred_lft forever