GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer le basculement et la liaison réseau haute disponibilité sous Linux

Ce tutoriel explique comment configurer la liaison réseau sur un serveur Linux. Avant de commencer, laissez-moi vous expliquer ce qu'est la liaison réseau et ce qu'elle fait. Dans un environnement Windows, la liaison réseau est appelée association réseau. Il s'agit d'une fonctionnalité qui aide toute architecture de serveur à fournir une haute disponibilité et un basculement dans les scénarios où l'un des principaux câbles Ethernet présente un dysfonctionnement ou est mal configuré.

Normalement, il s'agit d'une meilleure pratique et d'une fonctionnalité indispensable à implémenter lorsque vous configurez un serveur à des fins de production. Même si cette fonctionnalité peut être effectuée dans une configuration d'environnement Linux, vous devez d'abord confirmer auprès de votre administrateur réseau pour vous assurer que les commutateurs liés à votre serveur prennent en charge la liaison réseau. Il existe plusieurs modes de liaison que vous pouvez implémenter dans votre environnement de serveur. Vous trouverez ci-dessous une liste des modes disponibles et de leur fonction :

  • Équilibre-rr
    Ce mode fournit des fonctionnalités d'équilibrage de charge et de tolérance aux pannes (basculement) via une politique de répétition alternée. Signifie qu'il transmet les paquets dans l'ordre séquentiel du premier esclave disponible au dernier.
  • Sauvegarde active
    Ce mode fournit des fonctionnalités de tolérance aux pannes via une politique de sauvegarde active. Cela signifie qu'une fois l'Ethernet de liaison activé, seul 1 des esclaves Ethernet est actif. L'autre esclave Ethernet ne deviendra actif que si et seulement si l'esclave actif actuel n'est pas opérationnel. Si vous choisissez ce mode, vous remarquerez que l'adresse MAC de liaison est visible de l'extérieur sur une seule carte réseau. Ceci afin d'éviter de confondre le commutateur.
  • Balance-xor
    Ce mode offre un équilibrage de charge et une tolérance aux pannes. Il transmet en fonction de la politique de hachage de transmission sélectionnée. Des politiques de transmission alternatives peuvent être sélectionnées via l'option xmit_hash_policy.
  • Diffusion
    Ce mode offre uniquement une tolérance aux pannes. Il transmet tout sur toutes les interfaces Ethernet esclaves.
  • 802.3ad
    Ce mode offre un équilibrage de charge et une tolérance aux pannes. Il crée un groupe d'agrégation qui partage les mêmes paramètres de débit et de duplex. Il utilise toutes les interfaces Ethernet esclaves dans l'agrégateur actif, il est basé sur la spécification 802.3ad. Pour implémenter ce mode, l'ethtool doit supporter les drivers de base pour récupérer la vitesse et le mode duplex de chaque esclave. Le commutateur doit également prendre en charge l'agrégation de liens dynamiques. Normalement, cela nécessite l'intervention d'un ingénieur réseau pour une configuration détaillée.
  • Solde-TLB
    Ce mode fournit des capacités d'équilibrage de charge car le nom TLB représente l'équilibrage de charge en transmission . Pour ce mode, si la configuration tlb_dynamic_lb =1, alors le trafic sortant est réparti en fonction de la charge courante sur chaque esclave. Si la configuration tlb_dynamic_lb =0, l'équilibrage de charge est désactivé, mais la charge est distribuée uniquement à l'aide de la distribution hasd. Pour ce mode, l'ethtool doit prendre en charge les pilotes de base pour récupérer la vitesse de chaque esclave.
  • Balance-ALB
    Ce mode offre des capacités d'équilibrage de charge car le nom TLB représente l'équilibrage de charge adaptatif . Semblable à balance-tlb, sauf que le trafic d'envoi et de réception est lié. Il reçoit l'équilibrage de charge en réalisant la négociation ARP. Le pilote de liaison intercepte les réponses ARP envoyées par le système local à leur sortie et remplace l'adresse matérielle source par l'adresse matérielle unique de l'un des esclaves dans la liaison. Pour ce mode, ethtool doit prendre en charge les pilotes de base pour récupérer la vitesse de chaque esclave.


1. Remarque préliminaire

Pour ce tutoriel, j'utilise Oracle Linux 6.4 dans la version 32 bits. Veuillez noter que même si la configuration est effectuée sous Oracle Linux, les étapes sont également applicables aux distributions CentOS et Red Hat OS et aux systèmes 64 bits. Le résultat final de notre exemple de configuration montrera que la connexion établie avec notre serveur de liaison restera connectée même si j'ai désactivé l'un des réseaux Ethernet. Dans cet exemple, je vais montrer comment appliquer la liaison réseau en utilisant le mode 1 qui est la politique de sauvegarde active.


2. Phase d'installation

Pour ce processus, aucune installation n'est nécessaire. Une installation Linux par défaut d'un serveur inclut tous les packages requis pour une configuration de liaison réseau.


3. Phase de configuration

Avant de commencer la configuration, nous devons d'abord nous assurer que nous avons au moins 2 interfaces Ethernet configurées dans notre serveur. Pour vérifier cela, allez dans le dossier de configuration réseau et répertoriez les interfaces Ethernet disponibles. Voici les étapes :

cd /etc/sysconfig/network-scripts/
ls *ifcfg*eth*

Le résultat est :

ifcfg-eth0 ifcfg-eth1 

Notez que nous avons actuellement 2 interfaces Ethernet par configuration dans notre serveur qui sont ETH0 et ETH1.

Configurons maintenant une interface de liaison appelée BOND0. Cette interface sera une interface Ethernet virtuelle qui contient l'interface Ethernet physique de ETH0 et ETH1. Voici les étapes :

vi ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
MASTER=yes
IPADDR=172.20.43.110
NETMASK=255.255.255.0
GATEWAY=172.20.43.1
BONDING_OPTS="mode=1 miimon=100"
TYPE=Ethernet

Exécutez ensuite :

ls *ifcfg*bon*

Le résultat est :

ifcfg-bond0 


C'est tout. Veuillez noter qu'à l'intérieur de l'interface BOND0, j'ai inclus une adresse IP. Cette adresse IP sera la seule adresse IP connectée à notre serveur. Pour poursuivre le processus, nous devons modifier l'interface Ethernet physique liée à l'interface BOND0. Voici les étapes :

vi ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
vi ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes

Fait. Nous avons fait la modification de l'interface ETH0 et ETH1. Notez que nous avons supprimé l'adresse IP à l'intérieur des deux interfaces et ajouté MASTER =bond0. Ceci est nécessaire pour valider que les deux interfaces seront des interfaces virtuelles dédiées à l'interface Ethernet BOND0.

Pour continuer la configuration. Créons un fichier de configuration de liaison nommé bonding.conf sous /etc/modprobe.d . Voici les étapes :

vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=1 miimon=100
modprobe bonding 

Sur la base de la configuration ci-dessus, nous avons configuré un module de liaison à l'aide de l'interface BOND0. Nous avons également attribué la configuration de liaison pour utiliser le mode =1 qui est la politique de sauvegarde active. L'option miimon = 100 représente la fréquence de surveillance de notre serveur de liaison pour surveiller l'état de l'interface en millisecondes. Comme décrit ci-dessus, ce mode fournira des fonctionnalités de tolérance aux pannes dans la configuration réseau du serveur.

Comme tout est configuré, redémarrons le service réseau afin de charger la nouvelle configuration. Voici les étapes :

service network restart
Shutting down interface eth0: [ OK ]
Shutting down interface eth1: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]


Excellent, nous avons maintenant chargé la nouvelle configuration que nous avions faite ci-dessus. Vous remarquerez que la nouvelle interface appelée BOND0 sera affichée dans la liste des réseaux. Vous remarquerez également qu'il n'y a pas d'adresse IP attribuée aux interfaces ETH0 et ETH1, seule l'interface BOND0 affiche l'IP.

ifconfig
bond0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:172.20.43.110 Bcast:172.20.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:1723 errors:0 dropped:0 overruns:0 frame:0
TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:147913 (144.4 KiB) TX bytes:108429 (105.8 KiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (101.0 KiB) TX bytes:105439 (102.9 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:632 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44487 (43.4 KiB) TX bytes:3288 (3.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:208 errors:0 dropped:0 overruns:0 frame:0
TX packets:208 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:18080 (17.6 KiB) TX bytes:18080 (17.6 KiB)


Vous pouvez également vérifier l'état de la liaison via cette commande :

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

Notez sur ce qui précède que nous avons réussi à convertir les interfaces ETH0 et ETH1 en une configuration de liaison en utilisant le mode de sauvegarde active. A déclaré également maintenant que le serveur utilise l'interface ETH0, ETH1 sera comme interface de secours.


4. Phase de test

Maintenant que tout est configuré comme prévu. Faisons un test simple pour nous assurer que la configuration que nous avons faite est correcte. Pour ce test, nous allons nous connecter à un nouveau serveur (ou bureau Linux) et commencer à envoyer un ping à notre serveur de liaison pour voir s'il y a une connexion intermittente pendant le test. Voici les étapes :

login as: root
[email protected]'s password:
Last login: Wed Sep 14 12:50:15 2016 from 172.20.43.80
ping 172.20.43.110
PING 172.20.43.110 (172.20.43.110) 56(84) bytes of data.
64 bytes from 172.20.43.110: icmp_seq=1 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes from 172.20.43.110: icmp_seq=3 ttl=64 time=0.415 ms
64 bytes from 172.20.43.110: icmp_seq=4 ttl=64 time=0.427 ms
64 bytes from 172.20.43.110: icmp_seq=5 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=6 ttl=64 time=0.443 ms
64 bytes from 172.20.43.110: icmp_seq=7 ttl=64 time=0.663 ms
64 bytes from 172.20.43.110: icmp_seq=8 ttl=64 time=0.961 ms
64 bytes from 172.20.43.110: icmp_seq=9 ttl=64 time=0.461 ms
64 bytes from 172.20.43.110: icmp_seq=10 ttl=64 time=0.544 ms
64 bytes from 172.20.43.110: icmp_seq=11 ttl=64 time=0.412 ms
64 bytes from 172.20.43.110: icmp_seq=12 ttl=64 time=0.464 ms
64 bytes from 172.20.43.110: icmp_seq=13 ttl=64 time=0.432 ms

Pendant ce temps, retournons à notre serveur de liaison et éteignons l'interface Ethernet ETH0. Voici les étapes :

ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (201.0 KiB) TX bytes:105439 (122.9 KiB)
ifdown eth0 

Nous avons maintenant désactivé les services pour l'interface réseau ETH0. Vérifions l'état de la liaison. Voici les étapes :

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

Vous remarquerez que maintenant l'interface ETH0 n'existe plus en état de liaison. Pendant ce temps, revenons au serveur de test précédent et vérifions le ping continu vers notre serveur de liaison.

64 bytes from 172.20.43.110: icmp_seq=22 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=23 ttl=64 time=0.402 ms
64 bytes from 172.20.43.110: icmp_seq=24 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=25 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=26 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=27 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=28 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=29 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=30 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=31 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=32 ttl=64 time=0.452 ms
64 bytes from 172.20.43.110: icmp_seq=33 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=34 ttl=64 time=0.491 ms

Génial, vous verrez maintenant que même si nous avons arrêté l'interface ETH0, nous sommes toujours en mesure d'envoyer un ping et d'accéder à notre serveur de liaison. Faisons maintenant 1 test supplémentaire. Rallumez l'interface ETH0 et désactivez l'interface ETH1.

ifup eth0
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0

Comme l'interface ETH0 était déjà active, arrêtons l'interface ETH1.

ifdown eth1
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0


Revenons maintenant au serveur de test et vérifions ce qui se passe sur le ping continu envoyé à notre serveur de liaison

64 bytes from 172.20.43.110: icmp_seq=84 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=85 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=86 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=87 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=88 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=89 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=90 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=91 ttl=64 time=0.420 ms
64 bytes from 172.20.43.110: icmp_seq=92 ttl=64 time=0.487 ms
64 bytes from 172.20.43.110: icmp_seq=93 ttl=64 time=0.551 ms
64 bytes from 172.20.43.110: icmp_seq=94 ttl=64 time=0.523 ms
64 bytes from 172.20.43.110: icmp_seq=95 ttl=64 time=0.479 ms


Bravo ! Nous avons configuré et prouvé avec succès que notre serveur de liaison parvient à répondre au scénario de reprise après sinistre en cas de basculement du réseau.


Linux
  1. Comment configurer l'interface réseau virtuelle sur Redhat 7 Linux

  2. Comment définir une adresse IP statique et configurer le réseau sous Linux

  3. Comment configurer une adresse IP statique et dynamique dans Arch Linux

  4. Comment installer et configurer EMC PowerPath sous Linux

  5. Comment configurer Linux Etherchannel Bonding pour l'interface réseau HA

Comment installer et configurer le serveur DNS sous Linux

Comment installer et configurer ZSH sur les distributions Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux

Comment installer et configurer PrestaShop sur le système Linux

Comment installer et configurer Elasticsearch sur le système Linux