Channel Bonding mode 1 avec une VIP

Cet article ne traite qu'un cas de mise en pratique du mode failover avec l’option active-backup (mode=1). Chaque interface réseau possèdera deux adresses IP. Le channel Bonding lui même sera traité dans un article plus généraliste.

Mise en oeuvre sur des équipements (presque) ordinaires.

Que recherche t-on ?

En tout premier lieu, une tolérance à la panne d'une des deux interfaces réseau du serveur.

La machine doit être accessible par 2 adresses IP. Une dédiée à l'administration, l'autre réservée au service principal tournant sur ce serveur.

Les données du problème
  • Adresse IP principale : 192.168.0.50
  • Adresse IP virtuelle : 192.168.0.51
  • Adresse IP passerelle : 192.168.0.1
Le mode 1

Ce mode est une simple redondance avec basculement. Une seule interface est active. Dès que sa panne est détectée, une autre interface est activée et prend le relais. Votre bande passante ne change pas.

Configuration

On passera par 2 étapes, la configuration pour le chargement dans le noyau Linux du module de bonding puis la configuration des interfaces réseau.

Chargement du module dans le kernel.

Editer le fichier /etc/modprobe.conf et ajouter :

alias bond0 bonding
options bond0 mode=1 miimon=100

Cette méthode implique que le serveur aura besoin d'être redémarré pour charger le module dans son noyau.

Configuration des interfaces réseau.

Créer ou éditer les fichiers suivants :

/etc/sysconfig/network-scripts/ifcfg-bond0

ONBOOT=yes
DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.0.50
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
GATEWAY=192.168.0.1
USERCTL=no

/etc/sysconfig/network-scripts/ifcfg-bond0-VIP

ONBOOT=yes
DEVICE=bond0:VIP
BOOTPROTO=static
IPADDR=192.168.0.51
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
GATEWAY=192.168.0.1
USERCTL=no

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
USERCTL=no
IPV6INIT=no
PEERDNS=no

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
USERCTL=no
IPV6INIT=no
PEERDNS=no

Particularités sur un serveur Bull Novascale Blade

La configuration est différente sur un serveur Blade car il intègre un switch interne. Il faut donc configurer le channel bonding de manière à ce qu’il détecte une panne jusqu’au switch de coeur de réseau. Pour cela, il va faloir positionner les options arp_ip_target et arp_interval qui permettent d’envoyer une requête arp vers l' équipement que l’on décide de surveiller.

Chargement du module dans le kernel.

Editer le fichier /etc/modprobe.conf et ajouter :

alias bond0 bonding
options bond0 mode=1 arp_interval=1000 arp_ip_target=@stack_de_switch

La configuration des interfaces réseau reste la même que celle vue précédement.

Vérification du fonctionnement

visualiser l'état des interfaces avec la commande ifconfig :
[root@machine_a_toto network-scripts]# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:1A:64:F6:4C:CA  
          inet addr:192.168.0.50  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:6078 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:786396 (767.9 KiB)  TX bytes:97040 (94.7 KiB)

bond0:VIP Link encap:Ethernet  HWaddr 00:1A:64:F6:4C:CA  
          inet addr:192.168.0.51  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  HWaddr 00:1A:64:F6:4C:CA  
          inet6 addr: fe80::21a:64ff:fef6:4cca/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:5644 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1107 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:758620 (740.8 KiB)  TX bytes:96736 (94.4 KiB)
          Interrupt:225 Memory:da000000-da011100 

eth1      Link encap:Ethernet  HWaddr 00:1A:64:F6:4C:CA  
          inet6 addr: fe80::21a:64ff:fef6:4cca/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:434 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:27776 (27.1 KiB)  TX bytes:304 (304.0 b)
          Interrupt:193 Memory:d8000000-d8011100
Quelques infos supplémentaires
[root@machine_a_toto network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v2.6.3 (June 8, 2005)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1a:64:f6:4c:ca

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1a:64:f6:4c:cc