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 :
- CentOS Server : VM_CentOS 7
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 :
- em1
- 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 CentOS, TipsAndTricks/BondingInterfaces (EN)
Bonne journée et à bientôt.
Bonjour,
Comment ajouter le module bonding au démarrage?
Merci
Bonjour,
je vais mettre à jour l’article.