GoldZone Web Hosting

Rédigé par Gaëtan Trellu (goldyfruit)

Outils pour utilisateurs

Outils du site


channel_bonding

Mise en place du channel bonding (Failover).

Le support “bonding” de Linux (ou channel bonding ou encore etherchannel chez CISCO) permet de fusionner deux interfaces ethernet.
Il est ainsi possible d’obtenir une interface virtuelle à 200 Mbit/s (2×100 Mbit/s) en couplant les performances de deux interfaces ethernet 100BaseT.
Il permet aussi de faire de la redondance car si un lien est coupé, il bascule automatiquement sur l'autre.

Un standard a été développé, le IEEE_802.1ad mais est assez peu utilisé.
Le support du bonding peut être compilé dans le kernel ou sous la forme d'un module (source Wikipedia).

Les modes du bonding.

Il existe sept modes différents proposés par le module “bonding” du noyau, ils vont de 0 à 6.
Nous allons voir deux de ces modes même si seul le mode 1 nous intéresse.

Mode 0

Ce mode permet un load balancing entre deux cartes réseaux, si l'une des deux cartes tombe en panne alors l'autre ne fait plus d'équilibrage de charge mais continue à tourner de manière cyclique.

Mode 1

Ce mode permet une redondance entre deux cartes réseaux, si l'une des deux cartes tombe en panne l'autre prend le relais. Une seules carte à la fois est utilisée.

Les options du module "bonding".

Ces options sont à indiquer dans le fichier “modprobe.conf” présent dans le répertoire “/etc/”.

primary

Cette option ne fonctionne uniquement que pour le mode 1 (redondance), elle permet de sélectionner une interface réseau prioritaire.

updelay

Temps de latence entre la découverte d'une re-connexion et la réutilisation d'une interface. Temps en seconde.

downdelay

Temps de latence entre la découverte d'une déconnexion et la réutilisation de l'interface “bond0”. Temps en seconde.

miimon

Temps de latence de surveillance des interfaces. Temps en milliseconde.

use_carrier

Surveillance des interfaces par “carrier”.

arp_interval

arp_ip_target

Pré-requis de mise en place.

Le channel bonding nécessite un module bien précis qui doit-être compilé dans le noyau, ce module à pour nom “bonding”.
Sur les distributions Red Hat EL il est présent par défaut (à vérifier pour les noyaux Xen).

Pour activer le module “bonding” dans le noyau si vous utilisez un noyau compilé il suffit de cocher la case suivante :

<M> Bonding driver support

RAPPEL : Un noyau compilé à la main n'est plus un noyau supporté par Red Hat.

Installation du channel bonding.

La mise en place est un peu compliquée aux premiers abords mais cela reste plus que compréhensible.
L'installation nécessite la création et la modification de plusieurs fichiers de configuration.

On commence par le fichier “modprobe.conf” qui se trouve dans le répertoire “/etc”. Dans ce fichier nous allons créer un alias du module “bonding” (non obligatoire) ainsi que lui indiquer ces paramètres (mode et temps de vérification).

Il faut alors ajouter ceci au fichier :

alias bond0 bonding
options bond0 mode=1 primary=eth0 miimon=100

Donc petit récapitulatif :

  • Nous appelons notre module “bonding”, “bond0”.
  • Nous sélectionnons le mode 1 du module “bond0” (redondance).
  • Nous indiquons que l'interface principale sera “eth0”.
  • Nous forçons une vérification du lien toute les 100ms.

Le configuration du module est terminée, il ne reste plus qu'à charger le module.

# modprobe bonding

Un message d'alerte peut survenir, ignorez-le.

Nous pouvons passer à la configuration des interfaces réseau, commençons par créer un fichier “ifcfg-bond0” dans le répertoire “/etc/sysconfig/network-scripts/”.
Ce fichier contiendra les informations sur l'adressage IP.

Fichier “ifcfg-bond0”.

DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.120.1.103
NETMASK=255.255.255.0
GATEWAY=10.120.1.100
TYPE=Ethernet

Configuration de l'interface primaire "eth0".

Remplacer le contenu du fichier “ifcfg-eth0” par ceci :
Fichier “ifcfg-eth0”.

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
HWADDR=00:19:bb:23:64:1e

Configuration de l'interface secondaire "eth3".

Remplacer le contenu du fichier “ifcfg-eth3” par ceci :
Fichier “ifcfg-eth3”.

DEVICE=eth3
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
HWADDR=00:19:bb:3e:8b:8c

Seules les valeurs “DEVICE” et “HWADDR” changent.

Une fois les fichiers édités, il est nécessaire de relancer le service réseau pour que la nouvelle configuration réseau soit prise en compte.

# /etc/init.d/network restart

Vérification du bon fonctionnement.

Pour vérifier que le channel bonding est bien en place il suffit d'exécuter la commande “ifconfig”, si tout s'est correctement déroulé il devrait une interface “bond0” qui a fait son apparition.

# ifconfig

Résultat :

bond0     Link encap:Ethernet  HWaddr 00:19:BB:23:64:1E  
          inet adr:10.120.1.103  Bcast:10.120.1.255  Masque:255.255.255.0
          adr inet6: fe80::219:bbff:fe23:641e/64 Scope:Lien
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:14148640 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10901731 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:2622765616 (2.4 GiB)  TX bytes:2544158674 (2.3 GiB)

Les interfaces “eth0” et “eth3” doivent aussi avoir la même adresse MAC.

eth0      Link encap:Ethernet  HWaddr 00:19:BB:23:64:1E
eth3      Link encap:Ethernet  HWaddr 00:19:BB:23:64:1E
channel_bonding.txt · Dernière modification: 2011/01/05 16:05 (modification externe)