La liaison d'interface réseau consiste en l'agrégation de deux ou plusieurs interfaces réseau physiques, appelées slaves
, sous une interface logique appelée master
ou bond
interface. Selon le mode de liaison, une telle configuration peut être utile pour obtenir une tolérance aux pannes et/ou un équilibrage de charge. Dans ce didacticiel, nous apprendrons quels sont les modes de liaison disponibles et comment créer une liaison réseau sur RHEL 8 / CentOS 8.
Dans ce didacticiel, vous apprendrez :
- Qu'est-ce que la liaison d'interface réseau ?
- Comment configurer la liaison d'interface réseau sur RHEL 8/CentOS 8
- Quels sont les différents modes de liaison
Le statut Bond vu par le noyau Linux
Configuration logicielle requise et conventions utilisées
Catégorie | Exigences, conventions ou version du logiciel utilisée |
---|---|
Système | RHEL 8/CentOS 8 |
Logiciel | L'utilitaire nmtui pour contrôler le démon NetworkManager. L'application est incluse dans une installation minimale du système. |
Autre | Privilèges root pour modifier les paramètres système |
Conventions | # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié |
Quel mode de liaison ?
Il existe essentiellement 7 modes de liaison que nous pouvons utiliser :
Tournoi à la ronde
Les paquets sont distribués de manière égale, dans un ordre séquentiel, à toutes les interfaces esclaves (de la première à la dernière). Ce mode fournit à la fois l'équilibrage de charge et la tolérance aux pannes, mais nécessite une prise en charge sur les commutateurs.
Sauvegarde active
Seule l'interface esclave principale est utilisée. En cas d'échec, un autre esclave est utilisé à sa place. Il ne fournit que la tolérance aux pannes ; il n'y a pas d'exigences particulières.
XOR (OU exclusif)
Les paquets sont transmis et affectés à l'une des interfaces esclaves en fonction du hachage des adresses MAC source et destination, calculé avec la formule suivante :
[(source MAC address XOR’d with destination MAC address) modulo slave count]
Ce mode fournit à la fois la tolérance aux pannes et l'équilibrage de charge.
Diffusion
Lorsque ce mode est utilisé, tous les paquets sont transmis sur toutes les interfaces esclaves, offrant une tolérance aux pannes mais pas d'équilibrage de charge.
802.3ad
Ce mode utilise l'agrégation de liens IEEE 802.3ad qui doit être prise en charge sur les commutateurs. Crée des groupes d'agrégation qui partagent les mêmes paramètres de vitesse et de duplex. Émet et reçoit sur tous les esclaves du groupe actif. Fournit à la fois l'équilibrage de charge et la tolérance aux pannes.
Équilibrage de charge de transmission adaptatif
Les paquets sortants sont transmis à travers les interfaces esclaves en fonction de leur charge, et le trafic entrant est reçu par l'esclave actuel. Si ce dernier tombe en panne, un autre esclave reprend son adresse MAC. Ce mode offre une tolérance aux pannes et un équilibrage de charge.
Équilibrage de charge adaptatif
Fonctionne comme l'Adaptive Transmit Load Balancing
, mais fournit également inbound
équilibrage via ARP
(protocole de résolution d'adresse).
L'environnement
Pour les besoins de ce didacticiel, nous allons travailler sur un système Red Hat Enterprise Linux 8 virtualisé. Pour créer notre liaison réseau, nous allons travailler avec nmtui
, un utilitaire d'interface utilisateur texte utilisé pour contrôler le NetworkManager
démon. Les mêmes opérations, cependant, peuvent être effectuées avec le nmcli
utilitaire de ligne de commande ou via l'interface graphique avec l'Network Manager Connection Editor
.
Le système dispose actuellement de deux ports ethernet
liens, enp1s0
et enp7s0
:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:cb:25:82 brd ff:ff:ff:ff:ff:ff 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:32:37:9b brd ff:ff:ff:ff:ff:ff
Création de la liaison réseau
Dans un premier temps, nous supprimerons les configurations existantes actuelles pour les interfaces esclaves. Ce n'est pas strictement nécessaire, car nous pourrions éditer de telles configurations sur place, mais pour repartir de zéro, nous procéderons de cette manière. Invoquons nmtui
:
$ sudo nmtui
Dans le menu principal, nous sélectionnons "Modifier une connexion" et confirmons.
Menu principal Nmtui.
On sélectionne d'abord la connexion à supprimer dans la liste, puis on passe sur <Delete>
. Enfin, nous confirmons :
Liste de connexion Nmtui.
Enfin, nous confirmons que nous voulons supprimer la connexion :
Invite de confirmation Nmtui pour supprimer une connexion existante.
Nous répétons l'opération pour l'autre interface. Une fois que nous avons supprimé toutes les configurations existantes, nous pouvons créer le bond
interface. Nous sélectionnons <Add>
dans le menu, et dans la liste des types de connexion, nous choisissons Bond
:
Menu de sélection du type de connexion Nmtui.
Une nouvelle fenêtre s'ouvrira où nous pourrons configurer notre interface. Dans ce cas, même si c'est totalement facultatif, j'utiliserai bond0
à la fois en tant que profil et nom d'appareil. La partie la plus importante, cependant, est la sélection des interfaces esclaves à ajouter à la liaison. Dans les BOND Slaves
menu, cliquez sur <Add>
, et sélectionnez le type de connexion esclave à ajouter, dans ce cas ethernet
.
Menu Nmtui pour sélectionner le type de connexion esclave.
Entrez le nom de l'appareil, sélectionnez <OK>
et confirmez. L'opération doit être répétée pour chacune des interfaces esclaves.
Interface Nmtui pour modifier la connexion esclave.
L'étape suivante consiste à sélectionner le bonding mode
:pour les besoins de ce tutoriel, nous utiliserons la Active Backup
une. Nous sélectionnons l'option correspondante dans le menu et dans le champ «Primaire», nous spécifions le nom de l'interface esclave principale. Enfin, nous sélectionnons simplement <OK>
pour confirmer la création de l'interface de liaison.
La configuration de la liaison réseau.
Nous pouvons maintenant quitter le nmtui
application. Pour vérifier que la création de la liaison a réussi, nous pouvons lancer la commande suivante :
$ ip addr show bond0
Le résultat est le suivant :
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:cb:25:82 brd ff:ff:ff:ff:ff:ff inet 192.168.122.164/24 brd 192.168.122.255 scope global dynamic noprefixroute bond0 valid_lft 3304sec preferred_lft 3304sec inet6 fe80::48:d311:96c1:89dc/64 scope link noprefixroute valid_lft forever preferred_lft forever
Le ifcfg
les fichiers de configuration liés à notre configuration ont été générés dans /etc/sysconfig/network-scripts
répertoire :
$ ls /etc/sysconfig/network-scripts ifcfg-bond0 ifcfg-enp1s0 ifcfg-enp7s0
Pour afficher l'état actuel du bond0
interface telle que vue par le noyau, nous pouvons exécuter :
$ cat /proc/net/bonding/bond0
Le résultat de la commande est indiqué ci-dessous :
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: enp1s0 (primary_reselect always) Currently Active Slave: enp1s0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: enp1s0 MII Status: up Speed: Unknown Duplex: Unknown Link Failure Count: 0 Permanent HW addr: 52:54:00:cb:25:82 Slave queue ID: 0 Slave Interface: enp7s0 MII Status: up Speed: Unknown Duplex: Unknown Link Failure Count: 0 Permanent HW addr: 52:54:00:32:37:9b Slave queue ID: 0
Nous pouvons voir comment les deux interfaces esclaves sont actives, mais seulement enp1s0
est actif, car c'est celui qui est utilisé comme esclave principal.
Tester la sauvegarde active
Comment pouvons-nous vérifier que notre configuration fonctionne ? Nous pouvons arrêter l'interface esclave principale et voir si la machine répond toujours aux pings. Pour déposer l'interface que nous exécutons :
$ sudo ip link set enp1s0 down
La machine répond-elle toujours ? Vérifions-le :
$ ping -c3 192.168.122.164 PING 192.168.122.164 (192.168.122.164) 56(84) bytes of data. 64 bytes from 192.168.122.164: icmp_seq=1 ttl=64 time=0.385 ms 64 bytes from 192.168.122.164: icmp_seq=2 ttl=64 time=0.353 ms 64 bytes from 192.168.122.164: icmp_seq=3 ttl=64 time=0.406 ms --- 192.168.122.164 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 88ms rtt min/avg/max/mdev = 0.353/0.381/0.406/0.027 ms
Cela fait! Voyons comment le statut du lien a changé :
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: enp1s0 (primary_reselect always) Currently Active Slave: enp7s0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: enp1s0 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 1 Permanent HW addr: 52:54:00:cb:25:82 Slave queue ID: 0 Slave Interface: enp7s0 MII Status: up Speed: Unknown Duplex: Unknown Link Failure Count: 0 Permanent HW addr: 52:54:00:32:37:9b Slave queue ID: 0
Comme vous pouvez le voir, puisque nous avons mis l'interface esclave primaire (enp1s0
), l'autre esclave, enp7s0
a été utilisé comme sauvegarde et est maintenant celui qui est actuellement actif. De plus, le Link Failure Count
pour l'esclave principal a augmenté et est maintenant 1
.
Conclusion
Dans ce didacticiel, nous avons appris ce qu'est une liaison réseau et quelles sont les manières possibles de configurer une liaison réseau. Nous avons également créé une liaison réseau entre deux interfaces Ethernet à l'aide de la Active Backup
mode. Avec Red Hat Enterprise Linux 7, un nouveau concept a été introduit, le network teaming
. Sous certains aspects, l'association est similaire à la liaison, mais elle est mise en œuvre différemment et a plus de fonctionnalités. Nous en parlerons dans de futurs articles.