From 55d42d4a155d67694a9558ad628f88c4400b8dfb Mon Sep 17 00:00:00 2001 From: shirenn Date: Tue, 20 Jul 2021 20:51:29 +0200 Subject: [PATCH] [tools] Ajout de keepalived.md --- tools/keepalived.md | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 tools/keepalived.md diff --git a/tools/keepalived.md b/tools/keepalived.md new file mode 100644 index 0000000..ba1c818 --- /dev/null +++ b/tools/keepalived.md @@ -0,0 +1,90 @@ +# Keepalived + +Keepalived est une implémentation du protocole VRRP. Il permet de partager des +ips entre plusieurs machines. Si celle qui qui porte l'adresse à un moment +tombe, c'est une des autres qui prend le relai. + +## Principe + +Le protocole VRRP permet de s'assurer qu'un ensemble d'adresses ip soit toujours +tenues par un pair sur le reseaux. Par exemple, au crans, pour rajouter de la +résilience sur la panne d'un routeur, les ips du routeurs sont partagées entre +plusieurs machines. Celle qui porte les ressources en fonctionnement normal est +appelée le `MASTER` et les autres sont appelées les `BACKUP` et on leur assigne +des priorités décroissantes. Sur le lien local que partage les différentes +machines, elles négocient qui devrait porter les ressources actuellement. En +ipv4, la négociation se fait en multicast en utilisant l'ip `224.0.0.18` et en +ipv6 cela ce fait via le groupe `ff02::12` (il faut bien faire attention à ce +que le parefeu ou qu'un commutateur ne le filtre pas). Si le porteur de l'ip +actuel arrète de transmettre des alertes VRRP alors le candidat avec la plus +haute priorité s'affectera les ressources. + +## Installation + +On se contente de tirer le logiciel des repositorys debian `sudo apt install keepalived`. +Il y est packagé (correctement) depuis Jessie. + +## Configuration + +Il est fortement recommandé de sortir le `man 5 keepalived.conf` qui détaille +assez bien les différents cas d'utilisation du logiciel. + +Le logiciel nous permet de définir quelques options générale dans la section +global_defs. En particulier on peut y préciser le nom de la machine et la +configuration de l'envoi de mail : + +``` +global_defs { + notification_email { root@crans.org } + notification_email_from keepalived@crans.org + smtp_server smtp.adm.crans.org + router_id routeur-sam +} +``` + +On peut ensuite rentré dans la configuration des instances. Une instance +correspond à un bloc de ressource que l'on souhaite partagé entre deux machines. +Comme les protocoles sous-jacent sont distincts en ipv4 et en ipv6, la +configuration pour des ressources ipv4 et ipv6 se fait dans des blocs +différents. Dans une instance, on doit préciser la priorité de la machine dans +l'instance, l'interface surlaquelle se font les alertes vrrp, l'identifiant de +l'instance et un bloc définissant les ressources qui sont partagées. Il est +aussi possible de définir un script qui sera appelé au changement d'état. On +donne ici l'exemple d'une instance en ipv4. + +``` +vrrp_instance VI_ALL { + # Définit l'état de priorité de la machine dans l'instance + state MASTER + priority 150 + # Active l'envoie des mails lors des changement d'état + smtp_alert + + # Lien sur lequel se font les alertes VRRPS + interface ens18 + # Identifiant de l'instance sur le lien + virtual_router_id 60 + # Fréquence des envois d'alertes VRRPs + advert_int 2 + + # Script appelé lors des changement d'état + notify /var/local/services/keepalived/keepalived.py + + # Bloc définissant les ressources partagées + virtual_ipaddress { + 185.230.79.62/26 brd 185.230.79.63 dev ens22 scope global + } +} +``` + +### Script de changement d'état + +Comme préciser dans la section précédente, il est possible d'appeler un script +lors des changements d'état de l'instance. Keepalived appelera alors le script +avec les paramètres suivant : `script [TYPE] [NAME] [STATE] [PRIORITY]` où +`[TYPE]` vaut `INSTANCE` dans notre cas, `[NAME]` donne le nom de l'instance +concernée, `[STATE]` donne l'état vers lequel on transitionne et `[PRIORITY]` la +priorité dans l'instance. + +En utilisant un script, il est possible (comme on le fait actuellement au crans) +de laisser à keepalived le soin de démarrer certains services.