Bonding réseau sous CentOS 7/6.9

Le Bonding est une méthode permettant de combiner (joindre) deux ou plusieurs interfaces réseau en une seule interface. Cela augmentera le débit du réseau, la bande passante et la redondance (selon le mode utilisé bien sûr). Si l’une des interfaces est en panne ou débranchée, l’autre maintiendra le trafic réseau.

La Bonding peut être utilisée partout où vous avez besoin d’une redondance (redundancy), d’une tolérance aux pannes (fault tolerance) ou l’équilibrage de charge (load balancing)

Machine virtuelle nécessaire :

C’est quoi Bond Mode ?

Il existe plusieurs modes, 6 modes :

  • Mode=0 : (Equilibrage de charge) C’est le mode par défaut. Il transmet les paquets séquentiellement sur une carte réseau puis sur une autre. Ce mode fournit l’équilibrage de charge et la tolérance aux pannes.
  • Mode=1 : (Active-backup policy ou Sauvegarde Active) Dans ce mode, Une seule interface réseau est actif. L’autre ne deviendra active que lorsque l’interface actif est en panne. Ce mode fournit une tolérance aux pannes.
  • Mode=2 : (Balance-XOR) Tolérance aux pannes et l’équilibrage de charge
  • Mode=3 : (Broadcast) Toutes les transmissions sont envoyées sur toutes les interfaces esclaves. Ce mode fournit une tolérance aux pannes.
  • Mode=4 : (IEEE 802.3ad) Agrégation dynamique de liens. il Crée des groupes d’agrégation qui partagent la même vitesse et les mêmes paramètres duplex.
  • Mode=5 : (balance TLB – Traffic Load Balancing) Le trafic sortant est réparti en fonction de la charge courante, calculée par rapport à la vitesse de chaque interface esclave. Le trafic entrant est reçu par l’interface esclave courante. Si l’interface esclave receveur tombe en panne, une autre interface esclave prend en charge l’adresse MAC de l’interface esclave receveur en panne. Ce mode fournit une tolérance aux pannes et l’équilibrage de charge
  • Mode=6 : (balance-ALB – Adaptive load balancing) Il inclut le balance-TLB + ALB. L’équilibrage de charge de réception est réalisé par négociation ARP. Ce mode fournit une tolérance aux pannes et l’équilibrage de charge

Bond0 Interface

J’ai deux interfaces sur mon système CentOS 7 :

  1. em1
  2. em2

Sous CentOS7, le module bonding n’est pas chargé par défaut. Entrer la commande suivante en tant que root pour l’activer.

modprobe --first-time bonding

Configuration MASTER Interface

Nous allons maintenant créer le fichier de configuration pour le Bond0. CentOS stock les fichiers de conf réseau dans le répertoire /etc/sysconfig/network-scripts/

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

DEVICE=bond0
NAME=bond0
TYPE=bond0
BONDING_OPTS=mode=4 miimon=100
IPADDR=192.168.1.5
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=192.168.1.1
DNS2=192.168.1.254
DOMAIN=pixelabs.lan
SEARCH=pixelabs.lan
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=none
IPV6INIT=none
USERCTL=none

Remarque : en général, il faut choisir le mode 4. Il permet d’additionner la vitesse des cartes réseaux.

Sauvegarder et quitter  :wq

 

Note : le paramètre BONDING_OPTS définit le mode utilisé. Ici, c’est le mode=4 (IEEE 802.3ad). 10.100.19.123 est l’adresse IP du Bond0.
miimon=Définit combien de fois, en millisecondes l’interface est vérifiée pour voir si elle est toujours active.
Si vous avez plusieurs serveurs DNS, mettez DNS1=…, DNS2=…, DNS3=…, ou mettez vos serveurs DNS dans /etc/resolv.conf
BOOTPROTO : peut être  none, bootp, dhcp .
NM_CONTROLLED : Si sur  « Yes »  votre interface réseau sera gérée par NetworkManager.
USERCTL=none personne ne peut gérer l’interface réseau à part l’user root. En savoir plus…

Si vous ne souhaitez pas définir le mode directement dans l’interface Bond0, vous pouvez le faire dans le fichier de conf :

vi /etc/modprobe.d/bonding.conf

Ajoutez les deux lignes :

alias bond0 bonding
options bond0 mode=0 miimon=100

Sauvegarder et quitter  :wq

Configuration SLAVE Interface

Éditer les deux interfaces em1 et em2, toujours dans  /etc/sysconfig/network-scripts/

vim /etc/sysconfig/network-scripts/ifcfg-em1

DEVICE=em1
NAME=em1
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
HWADDR=D4:BE:D9:B5:08:CC
TYPE=Ethernet
UUID=47973bf9-e075-4827-bf00-1d2f8df2f696
ONBOOT=yes
MASTER=bond0
SLAVE=yes
IPV6INIT=none
NM_CONTROLLED=none
BOOTPROTO=none

Sauvegarder et quitter  :wq

Modifier la deuxième carte réseau :

vim /etc/sysconfig/network-scripts/ifcfg-em2

DEVICE=em2
NAME=em2
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
HWADDR=D4:BE:D9:B5:08:CE
TYPE=Ethernet
UUID=ca1f65d1-00e0-4b7e-bd1c-f359865012f9
ONBOOT=yes
MASTER=bond0
SLAVE=yes
IPV6INIT=none
NM_CONTROLLED=none
BOOTPROTO=none

Sauvegarder et quitter  :wq

Note : les deux paramètres MASTER=bond0, SLAVE=yes, ONBOOT=yes, BOOTPROTO=none sont très important
Ne pas modifier le paramètre UUID et HWADDR

Activez maintenant les interfaces :

ifup ifcfg-em1
ifup ifcfg-em2

Redémarrer le service réseau pour prendre en compte la conf :

systemctl restart network 

Activer au démarrage :

systemctl enable networking

ou

systemctl enable network

Test de Bond0

Enfin, entrez cette commande pour tester si le Bond0 est UP

cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: d4:be:d9:b5:08:cc
Slave queue ID: 0
Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: d4:be:d9:b5:08:ce
Slave queue ID: 0

Sources : Wiki CentOSTipsAndTricks/BondingInterfaces (EN)

Bonne journée et à bientôt.

2 Responses

  1. MaxJorTom dit :

    Bonjour,

    Comment ajouter le module bonding au démarrage?

    Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *