Réseau – ucarp

Introduction

Dans cette section, il sera expliqué l’utilisation de uCarp sous Debian 4.0 Etch pour avoir une IP flottante entre deux machines.

Prérequis

Peu de choses nécessaires pour cela, une installation de Debian 4.0 Etch ou plus récente.

Il est à note que le paquet uCarp en Debian 4.0 Etch ne supporte pas la configuration par paramètres depuis le fichier /etc/init.d/interfaces mais une simple configuration par ligne de commande à exécuter quand l’interface change d’état.

Pour remédier à cela, j’ai fait un backport du paquet uCarp de Debian Testing Lenny. Ce paquet est disponible à l’URL suivante: http://download.free-4ever.net/debian/ucarp/ucarp_1.2-2~bpo40+1_i386.deb

Installation

Rien de particulier, après avoir téléchargé le paquet, on utilise la commande dpkg avec ligne de commande de la forme suivante:

dpkg -i ucarp_1.2-2~bpo40+1_i386.deb

Le paquet s’installe proprement sans soucis de dépendance.

Configuration

Toutes les configurations vont se passer dans le fichier /etc/network/interfaces.

Il sera de la forme suivante sur le premier serveur:

auto eth0
iface eth0 inet static
       # Adresse IP réelle de la machine
       address 192.168.1.250
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       # un id qui sert dans le cas ou plusieurs instances tournent sur une même machine
       ucarp-vid 1
       # l'IP virtuelle
       ucarp-vip 192.168.1.254
       # un secret partagé entre les deux serveurs
       ucarp-password KavalEik1
       # le poids de ce serveur dans le cluster
       ucarp-advskew 0
       # L'intervalle de vérification
       ucarp advbase 1
       # Ce serveur n'est pas maitre
       ucarp-master no

# L'interface avec l'adresse IP virtuelle
iface eth0:ucarp inet static
       address 192.168.1.254
       netmask 255.255.255.255

Et sur le deuxième serveur:

auto eth0
iface eth0 inet static
       address 192.168.1.251
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       # un id qui sert dans le cas ou plusieurs instances tournent sur une même machine
       ucarp-vid 1
       # l'IP virtuelle
       ucarp-vip 192.168.1.254
       # un secret partagé entre les deux serveurs
       ucarp-password KavalEik1
       # le poids de ce serveur dans le cluster
       ucarp-advskew 50
       # L'intervalle de vérification
       ucarp advbase 1
       # Ce serveur n'est pas maitre
       ucarp-master no

# L'interface avec l'adresse IP virtuelle
iface eth0:ucarp inet static
       address 192.168.1.254
       netmask 255.255.255.255

C’est uCarp qui se chargera d’activer l’interface eth0:ucarp sur le serveur qui est maître à l’instant t et bien de la désactiver sur l’autre.

Le poids du firewall de backup est plus important. Il est conseillé de ne pas laisser les deux serveurs avec le même poids sans définir un maitre, après un isolement réseau, uCarp ne sait pas sortir du conflit de serveur maître !

Si au moment où uCarp active l’interface, on souhaite qu’il exécute une commande pour démarrer un service par exemple, il faut lui donner les noms des scripts à exécuter.

Pour cela, on utilise les paramètres suivants:

# le script à exécuter quand ce serveur récupère l'IP virtuelle
ucarp-upscript /etc/network/vip-up-dmz
# le script à exécuter quand ce serveur perd l'IP virtuelle
ucarp-downscript /etc/network/vip-down-dmz

Il ne faut surtout pas oublier dans ces scripts d’activer l’interface virtuelle pour le script up et la désactiver pour le script down.

uCarp exécute ces scripts en leur passant en paramètre le nom de l’interface physique qui supporte l’interface virtuelle à activer ou désactiver.

Les scripts seront donc de la forme suivante pour le up:

#!/bin/sh 

# On active l'interface virtuelle
/sbin/ifup $1:ucarp

# Quand mon interface s'active, je souhaite démarrer le daemon OpenVPN
/etc/init.d/openvpn start

et pour le script down:

#!/bin/sh

# On désactive l'interface virtuelle
/sbin/ifdown $1:ucarp

# on arrête OpenVPN
/etc/init.d/openvpn stop
# On s'assure qu'il n'en reste pas de vivant !
pkill openvpn
pkill -9 openvpn

Toute la configuration de uCarp tient la dedans.

Activation des modifications

Il ne reste plus qu’à redémarrer l’interface qui porte uCarp sur chaque serveur.

Basculement manuel

Je n’ai pas trouvé grand chose sur une façon propre de provoquer un basculement. Alors je fais rapidement un down/up sur l’interface physique.

Pour cela utiliser une ligne de commande du style:

ifdown eth0 && sleep 2 && ifup eth0

Mot de la fin

uCarp peut être utile dans des cas simples où l’on a besoin d’une Ip flottante entre deux machines. Il s’appuie uniquement sur les défaillances réseau contrairement à Heartbeat qui est capable de surveiller un service pour déterminer le moment où il doit basculer.

uCarp sert plutôt dans les cas de cluster de firewall. On met l’ip flottante sur les interfaces internes pour avoir une passerelle par défaut qui ne change jamais par exemple.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s