Vous êtes ici : Linux VRRP IP failover HA


Modification du logiciel original ajoutant diverses fonctionnalités:

- Gestion et la supervision d'état intégrale (Slave/Master) d'un serveur ayant plusieurs interfaces réseaux.
- Gestion de scripts lors des bascules.
- Gestion de l'état des interfaces réseaux (link up/down).
- Client permettant de visualiser et de modifier l'état d'une machine.

Dans le domaine de la redondance de pare-feu (par ex) la version VRRPD originale est imparfaite, lorsqu'une machine subit une défaillance sur une interface le démon VRRPD bascule la machine BACKUP en state MASTER mais laisse en état les autres interfaces ce qui provoque des flux asymétriques. De plus Vrrpd n'ayant aucun système de contrôle de l'état physique d'une interface il peut rester maître alors que le câble réseau est, par exemple, débranché.

Il y a un deuxième problème dans la version originale, le changement d`état ne provoque aucune action sur la machine, il n'est pas possible d'exécuter un script ou un binaire lors d'une bascule.

Téléchargement VRRPD avec les modifications: Download ICI

Plus d'infos ICI

#########################################

Ma problématique: Redondance applicative ou de firewalls netfilter grâce au protocole VRRP

Le protocole VRRP - Virtual Router Redundancy Protocol - (protocole de redondance des routeurs virtuels) définit un protocole d'élection qui affecte dynamiquement la responsabilité du routage à l'un des routeurs VRRP du réseau local (routeur maître). Le processus d'élection permet un basculement dynamique de la responsabilité de routage en cas d'indisponibilité du routeur maître.

J'ai testé deux logiciels qui utilisent ce principe.

UCARP: (Une implémentation de CARP indépendante d'OpenBSD) Le changement d'état est scriptable, mais UCARP ne fonctionne pas avec une Mac virtuelle, ce qui pose problème avec les équipements faisant du cache ARP ou ayant une protection contre l'ARP spoofing.
En cas de bascule, le temps de rétablissement doit aussi tenir compte de la purge ARP des hôtes du réseau, mise à jour dont le temps est variable et difficilement maîtrisable.
Sur un réseau simple cela fonctionne bien, tous les postes reçoivent le gratuitous ARP et mettent à jour leur cache, mais sur un réseau complexe avec plusieurs routeurs et switchs cela ne fonctionne pas correctement, une partie du parc conservant l’ancienne adresse mac.

En ayant une MAC virtuelle, il n'y aurait pas ce problème.

VRRPD: Avec une Mac virtuelle, mais fonctionne sans scripts de changement d'état, les interfaces perdent aussi leurs routes lors du changement d'adresse Mac.
De plus les processus sont indépendants (voir plus bas) ce qui provoque des problèmes de flux asymétriques entre les interfaces.

Il existe aussi heartbeat ou keepalived (basé sur VRRP pour ce dernier), il est possible de lancer des scripts selon l'état comme dans UCARP, mais malheureusement ils fonctionnent sans MAC virtuelle.

Dans UCARP et VRRPD il n'est pas possible par défaut de surveiller toutes les interfaces ainsi que les processus donc ça se complique en cas de panne d'une interface

Par exemple pour Vrrpd ou bien Ucarp lorsqu'une machine subit une défaillance sur une interface, le démon bascule la carte défaillante mais laisse en état les autres, les flux deviennent donc asymétriques

Voici un exemple de cette problématique avec Vrrpd, pour l’instant la machine vrrp1 est maître et elle traite tous les flux

Cliquez sur une image pour l'agrandir

Vrrp UP
Maintenant si on coupe la liaison eth1 du serveur Maître, le serveur slave ne reçoit pas d’annonce vrrp et décide de devenir maître sur son interface eth1, par conséquence plus rien ne fonctionne.
De plus les flux deviennent asymétriques lors du retour à la normale, ce qui n’est pas problématique pour un routeur, mais pose des difficultés à un pare-feu (s‘il est de type statefull) car les tables d'états de sessions ne sont plus cohérentes.

Cliquez sur une image pour l'agrandir

Vrrp Down

La nouvelle version:

Ce problème est maintenant solutionné par l'option -M qui bascule automatiquement tous les processus VRRPD sur le MASTER en STATE BACKUP en cas de dysfonctionnement (processus VRRPD manquant sur les autres interfaces, Link down, etc …) le système de monitoring supervise l'état des interfaces et communique le changement de statut sur les autres interfaces.

Pour résumer l'option -M synchronise le statut des processus VRRPD sur la même machine et ajoute la supervision des dysfonctionnements

J’ai aussi ajouté trois commandes au programme vrrpd (-U –D équivalentes aux commandes UCARP)

Usage: vrrpd -i ifname -v vrid [-f piddir] [-s] [-a auth] [-p prio] [-nh] ipaddr

-U : (-U ): run "file" to become a master)

-D : (-D ): run "file" to become a backup)

-M : (-M x) Monitoring process and Network (Max 9)

Avec U et D il est maintenant possible de passer une commande lors d'un changement d'état VRRP, elle peut tout simplement lancer un script (contenant des routes ou ce que l'on veut, par exemple relancer un service)

Sur la machine 1:
./vrrpd -i eth0 -v 51 ipadrr 10.16.1.200 -M 2 -U /etc/scripts/MASTER.sh -D /etc/scripts/DOWN.sh
./vrrpd -i eth1 -v 52 ipadrr 10.17.1.200 -M 2 -U /etc/scripts/MASTER.sh -D /etc/scripts/DOWN.sh

Sur la machine 2:
./vrrpd -i eth0 -v 51 ipadrr 10.16.1.200 -M 2 -U /etc/scripts/MASTER.sh -D /etc/scripts/DOWN.sh
./vrrpd -i eth1 -v 52 ipadrr 10.17.1.200 -M 2 -U /etc/scripts/MASTER.sh -D /etc/scripts/DOWN.sh

Signifie que l'IP virtuelle 10.16.1.200 dans le vird 51 passera de la machine maître à Backup en cas de problème, le M 2 (2 étant le nombre de processus Vrrpd sur la même machine) indique qu'en cas de difficultés sur eth0 ou bien eth1 la machine basculera les deux interfaces.
-U lance le script MASTER de votre choix
-D lance le script BACKUP de votre choix
La lecture de la configuration est identique pour eth1 (10.17.1.200 Vrid 52)

Client atropos : J’ai aussi ajouté un client (atropos) permettant de visualiser et de modifier l'état d'une machine. Utilisable, par exemple, dans un script de supervision qui lorsqu'il détecte une anomalie bascule intégralement la machine en state backup.

La commande "atropos --backup" passe tous les processus vrrpd de la machine en backup et "atropos --state" affiche le status du serveur.

Compilation:
Vrrpd nécessite: libc6-dev
Installation:
1. Décompresser le fichier source
2. cd dans le répertoire
4. make clean
5. make
6. copier vrrpd et atropos dans votre path (e.g /usr/sbin)
Il existe aussi un script basic de compilation et d'installation (install.sh)

Troubleshooting:

Quand l'état de Vrrpd n'est pas stable:
Il est parfois nécessaire de désactiver le spanning tree (aussi appelé STP) sur les ports de certains swich accueillant les machines en VRRP.
Idem pour l'auto négociation de vitesse des ports sur l'équipement, je vous conseil plutôt de la fixer.
Dans le cas d'un pare-feu il est nécessaire d'autoriser le protocole 112 et le protocole 2 en émission de vos machines
Il est aussi préférable d'avoir une bonne gestion du temps sur vos machines, en utilisant NTP par exemple.

Je souhaite avoir des IPs supplémentaires ou des vlans bénéficiant de Vrrp:
Il suffit d'ajouter dans votre script Master les configurations nécessaires:
Ex:
Dans le script Master:
echo "Montage int rso 200-201-210 MASTER VLAN.."
ifconfig eth0.200 192.168.200.254 netmask 255.255.255.0 up
ifconfig eth0.201 192.168.201.254 netmask 255.255.255.0 up
ifconfig eth0.210 192.168.210.254 netmask 255.255.255.0 up

N'oubliez surtout pas de les démonter dans le script Backup c'est nécessaire en cas de bascule:

Dans le script Backup:
vconfig rem eth0.200
vconfig rem eth0.201
vconfig rem eth0.210

Idem avec les IP alias:

Master:
ifconfig eth2:1 192.168.200.13 netmask 255.255.255.0 up
Backup:
ifconfig eth2:1 192.168.200.13 down

La mac virtuelle s'ajoute sur toutes les IPs crées, il est ainsi possible de travailler avec des dizaines d'interfaces secourues, vous pouvez même mettre une IP inutile dans vrrpd (ipadrr), qui est une interface invisible, et n'utiliser que vos IP alias ou vlan afin de pouvoir les manipuler facilement, par exemple avec l'outil tcpdump. Cependant n'oubliez pas de les démonter dans le script Backup sous peine de vous retrouver avec des interfaces avec la même IP et la même Mac de chaque côté avec un résultat catastrophique garanti ...
------------------------------------------

Frederic Bourgeois stealth @ altern.org
http://www.traceroot.fr

Informations

Ces informations sont disponibles sur toutes les pages du site.

Bla Bla :



Proverbe aléatoire à méditer, ou pas :
Ce qui est rar est share
- [ Powered by du bricolage en PHP, du café et une lointaine base Itseasy | Thème : Light Blue par Vanquish ] -
© Frédéric Bourgeois Rennes, tous droits réservés - Reproduction interdite.

Administrer
Attention les informations ne sont données qu'à titre indicatif (surtout le proverbe).