A fin d’optimiser les flux, la répartition de charges et la tolérance de panne sur mon serveur NFS, je vais configurer une agrégation de liens sur les ports Ethernet.
Une agrégation de liens se fait sur les deux extrémités : serveur et commutateur (switch). Un premier pré-requis est de vérifier les modes disponibles sur le switch, qui dans mon cas est le mode LACP.
Sur mon serveur, j’ai à ma disposition 4 ports Ethernet dont je vais en agréger que 3. Je me réserve toujours un port pour l’administration du serveur.
Voici le shéma de principe :
Préparation côté commutateur
Voici la configuration de principe sur mon switch :
Les ports 1,2 et 3 sont agrégés dans le mode LACP et je garde le port 4 pour la connexion sur le port eth0 du serveur.
Préparation du serveur pour l’agrégation de liens
Toutes les commandes sont exécutées en tant que root :
sudo -s
- Pour des raisons de simplicité, j’ai renommé les interfaces réseau en eth.
- Installation du paquet qui va gérer l’agrégation ifenslave :
apt-get install ifenslave
- Configuration du module pour l’agrégation :
nano /etc/modprobe.d/bonding.conf
Ajouter :
alias bond0 bonding options bonding mode=4 miimon=100 lacp_rate=1
- Explication de la configuration :
mode=4 : LACP (il existe 7 modes),
miimon=100 : Définit la fréquence des MII link monitoring en millisecondes. Il est conseillé de positionner cette valeur à 100.
lacp_rate=1 : c’est l’intervalle entre chaque paquet LACPDU en seconde pour le mode 802.3ad, par défaut c’est 0 ce qui coorespond à 30 secondes et 1 pour une requête toutes les seconds.
Configuration de l’agrégation dans le mode LACP
- Faire une copie du fichier origine au cas de problème :
cp /etc/network/interfaces /etc/network/interfaces.old
nano /etc/network/interfaces
Voici le mien (à adapter pour les adresses) :
auto eth0 iface eth0 inet static address 10.110.8.215 netmask 255.255.248.0 network 10.110.8.0 broadcast 10.110.15.255 gateway 10.110.8.1 dns-nameservers 10.110.8.20 dns-search domaine.tld auto eth1 iface eth1 inet manual bond-master bond0 auto eth2 iface eth2 inet manual bond-master bond0 auto eth3 iface eth3 inet manual bond-master bond0 auto bond0 iface bond0 inet static address 10.110.8.212 gateway 10.110.8.1 netmask 255.255.248.0 up /sbin/ifenslave bond0 eth1 eth2 eth3 down /sbin/ifenslave -d bond0 eth1 eth2 eth3
reboot
Vérification de l’agrégation de liens
Il faut vérifier le bon fonctionnement sur le commutateur et sur le serveur.
- Sur le Switch :
- Sur le serveur :
Les port 1,2 et 3 sont bien actifs. Le port n°4 n’est pas présent car il n’est pas agrégé.
Il est possible de visualiser l’état de l’agrégation en affichant :
cat /proc/net/bonding/bond0
Exemple de résultat :
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer2 (0) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 802.3ad info LACP rate: fast Min links: 0 Aggregator selection policy (ad_select): stable Active Aggregator Info: Aggregator ID: 1 Number of ports: 3 Actor Key: 17 Partner Key: 1 Partner Mac Address: b8:af:67:d5:34:29 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: d8:9d:67:25:77:f5 Aggregator ID: 1 Slave queue ID: 0 Slave Interface: eth2 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: d8:9d:67:25:77:f6 Aggregator ID: 1 Slave queue ID: 0 Slave Interface: eth3 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: d8:9d:67:25:77:f7 Aggregator ID: 1 Slave queue ID: 0
Il est aussi possible de faire du monitoring avec l’outil bwm-ng :
Merci Fred, ça sera utile.
Pourquoi installez-vous ifenslave sans vous en servir ? Le gros avantage de ifenslave est précisément de pouvoir faire toutes les opérations (ajout comme retrait) à chaud.
Bonjour Julian,
je ne comprend pas très bien car j’utilise justement ifenslave pour la gestion du bonding, indiqué dans mon fichier de configuration réseau :
[code lang= »shell »]
….
up /sbin/ifenslave bond0 eth1 eth2 eth3
down /sbin/ifenslave -d bond0 eth1 eth2 eth3
[/code]
de rien :-)