Agrégation de cartes réseau sous CentOS 7

Cet article aborde la configuration de l'agrégation de cartes réseau (link aggregation) sous CentOS 7. L'agrégation permet d'augmenter la bande passante et d'assurer la redondance des connexions réseau. Bien que faisant partie des certifications RHCE, sa mise en œuvre pratique peut présenter des défis.

Concepts d'Agrégation de Liens

Il existe trois modes principaux pour l'agrégation de liens : - Mode 0 (Load Balancing) : Les deux cartes réseau fonctionnent en parallèle pour répartir la charge. Ce mode nécessite une configuration de port trunking sur l'équipement réseau (switch) auquel le serveur est connecté.

  • Mode 1 (Active-Backup) : Une seule carte réseau est active. Si celle-ci tombe en panne, la seconde prend le relais. C'est un mode purement redondant (failover).
  • Mode 6 (Load Balancing) : Similaire au mode 0, il permet la répartition de charge et la redondance sans nécessiter de configuration spécifique sur le switch. C'est le mode le plus recommandé car il offre à la fois performance et résilience sans dépendance externe.

Mise en Œuvre Pratique

Cette section détaille les étapes de configuration sur un environnement virtuel VMware avec CentOS 7. Deux technologies sont disponibles : bonding et team. ### Configuration Manuelle avec le module bonding

Vérification des interfaces réseau physiques et de leur état : ``` [root@hostname ~]# nmcli dev DEVICE TYPE STATE CONNECTION eth0 ethernet connected System eth0 eth1 ethernet connected Wired connection 1 eth2 ethernet connected Wired connection 2 lo loopback unmanaged -- [root@hostname ~]# nmcli con NAME UUID TYPE DEVICE System eth0 ... ethernet eth0 Wired connection 1 ... ethernet eth1 Wired connection 2 ... ethernet eth2


Les interfaces `eth1` et `eth2` doivent être dissociées des connexions existantes pour être réattribuées : ```
[root@hostname ~]# nmcli con del 'Wired connection 1' 'Wired connection 2'
[root@hostname ~]# nmcli con add type ethernet ifname eth1 con-name eth1
[root@hostname ~]# nmcli con add type ethernet ifname eth2 con-name eth2

Modification des fichiers de configuration ifcfg-eth1 et ifcfg-eth2 : Ajoutez les lignes suivantes : MASTER=bond0``SLAVE=yesCréation du fichier de configuration ifcfg-bond0 : ``` TYPE=Bond BOOTPROTO=none DEVICE=bond0 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=114.114.114.114 BONDING_OPTS="miimon=100 mode=6 fail_over_mac=1"


Pour les environnements virtuels VMware, le paramètre `fail_over_mac=1` est crucial pour le bon fonctionnement du basculement en cas de défaillance. Sans lui, le mode redondant pourrait ne pas fonctionner correctement. **Note :** Dans un environnement VMware, seul le mode 1 (active-backup) assure un basculement fonctionnel avec `bonding`. Pour utiliser le mode 1, modifiez `BONDING_OPTS` : ```
BONDING_OPTS="miimon=100 mode=1 fail_over_mac=1"

Vérification de l'état de l'agrégation : ``` [root@hostname ~]# cat /proc/net/bonding/bond0


### Configuration avec `nmcli` et `bonding`

Utilisation de la commande `nmcli` pour créer une interface agrégée `bond1` et y attacher les ports `eth1` et `eth2` : ```
[root@hostname ~]# nmcli con add type bond ifname bond1 con-name bond1 mode 1 ipv4.method manual ipv4.address 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 114.114.114.114
[root@hostname ~]# nmcli con add type bond-slave ifname eth1 con-name bond1-port1 master bond1
[root@hostname ~]# nmcli con add type bond-slave ifname eth2 con-name bond1-port2 master bond1

Il est impératif d'ajouter fail_over_mac=1 à la configuration du bond, même avec nmcli, pour les environnements virtuels. Cela peut être fait en éditant le fichier ifcfg-bond1 généré. Après redémarrage du service réseau, l'agrégation devrait être active. ### Configuration avec nmcli et team (Recommandé pour CentOS 7+)

Le module team est une alternative plus moderne et flexible. Création de l'interface team1 avec le runner activebackup : ``` [root@hostname ~]# nmcli con add type team ifname team1 con-name team1 config '{"runner":{"name":"activebackup", "hwaddr_policy":"by_active"}}' ipv4.method manual ipv4.address 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 114.114.114.114 [root@hostname ~]# nmcli con add type team-slave ifname eth1 con-name team1-port1 master team1 [root@hostname ~]# nmcli con add type team-slave ifname eth2 con-name team1-port2 master team1


Dans cet exemple, `"hwaddr_policy":"by_active"` joue un rôle similaire à `fail_over_mac=1` pour `bonding` dans les environnements virtuels. Activation des connexions : ```
[root@hostname ~]# nmcli con up team1-port1
[root@hostname ~]# nmcli con up team1-port2
[root@hostname ~]# nmcli con up team1

Vérification de l'état avec teamdctl : ``` [root@hostname ~]# teamdctl team1 st


Pour simuler une défaillance, désactivez une interface : ```
[root@hostname ~]# ifdown eth1

L'interface active devrait basculer sur eth2. ### Résumé des Méthodes

  • Configuration manuelle avec bonding.
  • Configuration via nmcli avec bonding.
  • Configuration via nmcli avec team (méthode privilégiée sous CentOS 7 et versions ultérieures).

Dans les environnements virtuels, seuls les modes de type active-backup (mode 1 pour bonding, activebackup pour team) fonctionnent de manière fiable. Les paramètres spécifiques comme fail_over_mac=1 (bonding) ou "hwaddr_policy":"by_active" (team) sont essentiels. Agrégasion sur Machine Physique

(Section à compléter après tests sur matériel physique...)

Étiquettes: CentOS réseau agrégation de liens bonding team

Publié le 17 juin à 19h07