From 42ed0dce42cd20873a0cd017e6b1eaf4774cb7e0 Mon Sep 17 00:00:00 2001 From: jdubois Date: Wed, 27 Jul 2022 11:57:14 +0200 Subject: [PATCH] =?UTF-8?q?Compl=C3=A9tion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoKeepalived.md | 71 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/HowtoKeepalived.md b/HowtoKeepalived.md index 16c01a14..626fe1fa 100644 --- a/HowtoKeepalived.md +++ b/HowtoKeepalived.md @@ -3,13 +3,80 @@ categories: network title: Howto Keepalived ... -* Documentation : +* Documentation : * Rôle Ansible : +Keepalived est un service d'équilibrage de charge et de haute disponibilité. Il implémente le protocole [VRRP](/HowtoVRRP) permettant à plusieurs équipements sur un même segment réseau de partager une même adresse IP en gérant des états *master*/*backup*. + ## Installation ~~~ # apt install keepalived ~~~ -Configuration via `/etc/keepalived/keepalived` \ No newline at end of file +## Configuration + +La configuration se fait dans `/etc/keepalived/keepalived.conf` : + +~~~ +vrrp_script chk_sshd { + script "/usr/bin/pkill -0 sshd" + interval 5 + weight -4 + fall 2 + rise 1 +} + +vrrp_instance vrrp { + interface ens3 + virtual_router_id 67 + state MASTER + priority 100 + + virtual_ipaddress { + 192.0.2.5 + } + + authentication { + auth_type PASS + auth_pass XXXXXX + } + + track_script { + chk_sshd + } + notify /etc/keepalived/notify.sh +} +~~~ + +Le bloc `vrrp_script` indique des checks permettant de vérifier que le serveur est opérationnel, on peut en avoir plusieurs : + +* `script` indique un script ou une commande à exécuter comme vérification. Ici, `pkill -0 sshd` va vérifier que sshd tourne, sans envoyer aucun signal au processus +* `interval` est l'intervalle en seconde à laquelle faire le check +* `weight` est la valeur de priorité à modifier. Ici, si le check échoue, 4 points de priorité sont levés +* `fall` est le nombre de fois que le check doit être en échec avant que le paramètre `weight` soit appliqué +* `rise` est le nombre de fois que le check doit être en succès avant d'inverser le paramètre `weight` + +Le bloc `vrrp_instance` définit les paramètres VRRP : + +* `interface` définit l'interface sur laquelle l'IP VRRP sera ajoutée +* `virtual_router_id` est l'identifiant VRID, qui doit être unique sur un même segment réseau +* `state` définit l'état dans lequel le process doit être au démarrage +* `priority` est la priorité utilisé pour élir le master : le plus haut sera master ; c'est cette valeur qui est modifié par le paramètre `weight` +* `virtual_ipaddress` est l'IP VRRP à configurer sur l'interface spécifiée par `interface` +* `authentication` permet d'avoir une authentification entre les nœuds VRRP ayant le même VRID +* `track_script` indique les scripts sur lesquels se baser pour vérifier que le serveur est opérationnel ou non +* `notify` indique un chemin vert un script qui permettra d'indiquer l'état VRRP du nœud, utile par exemple pour un check NRPE + +## NRPE + +Un script `notify` peut être utilisé, par exemple dans `/etc/keepalived/notify.sh` : + +~~~ +#!/bin/bash +echo $1 $2 is in $3 state > /var/run/keepalive.state +~~~ + +Le fichier contiendra par exemple le texte : « INSTANCE vrrp is in MASTER state » + +Ensuite, ce [check NRPE check_keepalived](https://gitea.evolix.org/evolix/ansible-roles/raw/branch/stable/keepalived/files/check_keepalived) peut être utilisé. Il lira le contenu du fichier `/var/run/keepalive.state` et sera en succès ou en échec selon l'état `master` ou `backup` attendu (et configuré dans le check). \ No newline at end of file