Project

General

Profile

Tâche #2986

Distribution EOLE - Scénario #9185: implémenter l'Ethernet bonding

gestion du bonding

Added by Olivier JANVOIS over 11 years ago. Updated almost 7 years ago.

Status:
Fermé
Priority:
Normal
Start date:
11/15/2016
Due date:
% Done:

100%

Estimated time:
8.00 h
Spent time:
Remaining (hours):
0.0

Description

sur nos serveurs eolebase2.2 nous gérons le bonding (agrégation de liens avec haute disponibilité).

Nous avons pour cela ajouté deux variables :
- bonding_actif :
valeurs possibles : oui/non
commentaire : "Bonding Actif (oui/non). Utilise les paramètres de eth0 pour activer bond0."

- bonding_mode :
valeurs possibles : 0 à 6
commentaire : "Type de bonding: 0 : Round Robin , équilibrage de charge | 1 : Active - passive | 2 : Balance xor | 3 : Broadcast | 4 : 802.3ad | 5 : balance-tlb | 6 : balance-alb"

NB : je ne suis pas un expert du bonding mais en général on utilise la valeur 5 pour ce qui nous concerne

Lorsqu'on l'active :
- cela crée une interface virtuelle bond0 qui porte l'adresse IP ; les deux cartes eth0 et eth1 (en plus de la bond0) sont visibles sans adresse IP dans un ifconfig
- tout fichier de configuration (notamment les régles firewall) faisant référence à un ethX doit remplacer ethX par le bonding correspondant

En 2.3 il est possible de choisir le nombre d'interfaces ce qui n'est pas notre cas en 2.2.
La gestion du bonding - si elle est intégrée - devra prendre en compte le nombre d'interfaces.

En 2.2 nous sommes donc partis du principe que bond0 :
- est l'agrégation de eth0 et eth1
- l'adresse ip affectée sur l'interface est celle d'eth0 s'il n'y a pas de bonding et celle de bond0 s'il y en a.

Nous avons patché (en PJ) /etc/network/interfaces pour activer cette gestion au cas ou vous souhaiteriez l'intégrer en 2.3 mais cela n'est pas intégrable tel quel du fait qu'on peut choisir le nb d'interfaces en 2.3...

active_bonding.py View (2.02 KB) Olivier JANVOIS, 02/29/2012 12:06 PM

interfaces.patch View (760 Bytes) Olivier JANVOIS, 02/29/2012 12:06 PM

config.eol.bond-eolebase (1.95 KB) Fabrice Barconnière, 11/22/2016 02:11 PM

config.eol.bond-amon (2.19 KB) Fabrice Barconnière, 11/22/2016 02:11 PM


Related issues

Related to conf-amon - Anomalie #1548: Destination forcée sur Agregation de lien Ne sera pas résolu 03/15/2011
Related to creole - Evolution #6951: nom de l'interface réseau Fermé 04/04/2014

Associated revisions

Revision 9e35f277 (diff)
Added by Fabrice Barconnière almost 7 years ago

Implémentation du bonding

ref #2986

Revision 0192cfc4 (diff)
Added by Fabrice Barconnière almost 7 years ago

Implémentation du bonding

ref #2986

Revision 2af72c89 (diff)
Added by Fabrice Barconnière almost 7 years ago

Intégration du bonding

  • Nouveau template bonding.conf pour charger le module bonding

ref #2986 @1h

Revision d6a876e5 (diff)
Added by Fabrice Barconnière almost 7 years ago

Ajout dépendance au paquet ifenslave pour la gestion du bonding

ref #2986 @10m

Revision 3b9c0f79 (diff)
Added by Fabrice Barconnière almost 7 years ago

On ne teste pas les interfaces de bonding en preservice, elles sont
montées dynamiquement

ref #2986 @1h

Revision 1894b756 (diff)
Added by Fabrice Barconnière almost 7 years ago

Traitement du bonding avant l'application des paramètres du noyau

ref #2986 @1h

Revision e6968385 (diff)
Added by Fabrice Barconnière almost 7 years ago

Support des alias sur les interfaces bonding

ref #2986 @30m

Revision 0e2fd6be (diff)
Added by Fabrice Barconnière almost 7 years ago

Support des VLAN sur les interfaces bonding

ref #2986 @30m

Revision a3c0e7dd (diff)
Added by Fabrice Barconnière almost 7 years ago

Adaptation du diagnose au bonding

ref #2986 @30m

Revision a4d0fce5 (diff)
Added by Fabrice Barconnière almost 7 years ago

On ne décharge le module bonding que si il est chargé

ref #2986 @10m

Revision 351eb365 (diff)
Added by Joël Cuissinat almost 7 years ago

fix erreur bonding si carte en mode "manuel"

Ref: #2986 @30m

History

#1 Updated by Olivier JANVOIS over 11 years ago

J'ai oublié : en prereconf on appelle le script active_bonding.py (en PJ)

#2 Updated by Joël Cuissinat over 11 years ago

  • Assigned To set to Luc Bourdot

#3 Updated by Luc Bourdot over 11 years ago

A tester pour avis

#4 Updated by Joël Cuissinat over 11 years ago

  • Assigned To changed from Luc Bourdot to Fabrice Barconnière
  • Target version set to Mises à jour 2.3.5 RC
  • Estimated time set to 2.00 h

#5 Updated by Joël Cuissinat over 11 years ago

  • Target version changed from Mises à jour 2.3.5 RC to Mises à jour 2.3.6 RC

#6 Updated by Joël Cuissinat about 11 years ago

  • Target version changed from Mises à jour 2.3.6 RC to Mises à jour 2.3.7 RC

#7 Updated by Joël Cuissinat almost 11 years ago

  • Target version changed from Mises à jour 2.3.7 RC to Mises à jour 2.3.8

#8 Updated by Luc Bourdot over 10 years ago

  • Due date set to 01/25/2013
  • Start date changed from 02/29/2012 to 01/21/2013

#9 Updated by Luc Bourdot over 10 years ago

  • Due date deleted (01/25/2013)
  • Status changed from Nouveau to A étudier
  • Target version changed from Mises à jour 2.3.8 to 189
  • Start date deleted (01/21/2013)
  • Distribution changed from EOLE 2.3 to EOLE 2.4

#10 Updated by Luc Bourdot over 10 years ago

  • Assigned To deleted (Fabrice Barconnière)

#11 Updated by Emmanuel GARETTE over 9 years ago

La résolution de la demande #6951 permettra de travailler plus facilement sur le bonding, l'ensemble des modifications ont été faite pour le permettre.

#12 Updated by Luc Bourdot about 9 years ago

  • Tracker changed from Evolution to Bac à idée
  • Target version deleted (189)

#13 Updated by Emmanuel GARETTE almost 9 years ago

  • Parent task set to #9185

#14 Updated by Joël Cuissinat almost 9 years ago

  • Status changed from A étudier to Nouveau
  • Estimated time deleted (2.00 h)

#15 Updated by Joël Cuissinat almost 9 years ago

  • Estimated time set to 8.00 h
  • Remaining (hours) set to 8.0

#16 Updated by Fabrice Barconnière almost 7 years ago

  • Status changed from Nouveau to En cours
  • Start date set to 11/15/2016

#17 Updated by Fabrice Barconnière almost 7 years ago

  • Description updated (diff)
  • Assigned To set to Fabrice Barconnière

#18 Updated by Fabrice Barconnière almost 7 years ago

  • % Done changed from 0 to 10
Début de modification du dictionnaire 01_network.xml
Ce n'est pas vraiment évident de trouver la bonne façon de faire :
  • ajout de variables pour chaque interface
    • activer_bonding_eth (oui/non) : utiliser cette interface pour du bonding
      • la variable zone_is_bridge_eth n'est plus utile (à désactiver) mais pb car utilisée par des calculs
    • bonding_master_eth (oui/non) : définition des paramètres IP sur cette interface
      • désactivée si activer_bonding_eth à non
      • nom_zone_eth sera le nom du master bonding de cette interface
      • si non, désactiver toutes les variables de définition des paramètres IP de cette interface + ssh_eth + admin_eth + alias_eth + vlan_eth
    • bonding_mode_eth : mode de fonctionnement du bonding
      • désactivée si bonding_master_eth à non
      • valid_enum ['balance-rr', 'active_backup', 'balance-xor', 'broadcast', '802.3ad', 'balance-tlb', 'balance-alb']
  • Adapter master_network_interfaces.py pour la génération du fichier interfaces
    • Exemple :
      * Définition des slaves
      auto ens4
      iface ens0 inet manual
          bond-master bond0
          bond-primary ens4 --> BON-PRIMARY SI ACTIVE-BACKUP sinon pas de ligne
          bond-mode active-backup
      
      auto ens5
      iface ens5 inet manual
          bond-master bond0
          bond-primary ens4 --> BON-PRIMARY SI ACTIVE-BACKUP sinon pas de ligne
          bond-mode active-backup
      
      * Définition du maître
      auto bond0
      iface bond0 inet static
          address 192.168.0.1
          netmask 255.255.255.03
          network 192.168.0.0
          gateway 192.168.0.1
          slaves none --> NONE si mode ACTIVE-BACKUP sinon liste des slaves
          bond_mode active-backup
          bond_miimon 100
          bond_downdelay 200
          bond_updelay 200
      

#19 Updated by Emmanuel GARETTE almost 7 years ago

J'ai en tête un approche un peu différente.

"Interface X" correspondrait au bond, dedans il y aurait les variables :

  • activer_bonding_eth
  • phys_interfaces (une multi avec toutes les interfaces physiques)
  • bonding_mode_eth

Cette solution a l'avantage d'être compatible avec les ssh_*, admin_*, era, ...

#20 Updated by équipe eole Academie d'Orléans-Tours almost 7 years ago

bonjour,
je ne veux pas jouer les rabat-joie mais le ticket a 4 ans et nous n'utilisons plus cette fonctionnalité :-\
Du coup je ne sais pas si ça vaut le coup que vous passiez du temps là dessus (pour nous en tout cas...).
Olivier

#21 Updated by Fabrice Barconnière almost 7 years ago

La fonctionnalité demandée dans #17788 (valid_enum sur une multi isolée) est nécessaire pour la construction du dictionnaire.

#22 Updated by Fabrice Barconnière almost 7 years ago

  • % Done changed from 10 to 50

Construction du dictionnaire avec l'approche d'Emmanuel.

#23 Updated by Fabrice Barconnière almost 7 years ago

  • % Done changed from 50 to 80
  • Remaining (hours) changed from 8.0 to 6.0

#24 Updated by Fabrice Barconnière almost 7 years ago

Disponibles sur les branches issue/2986 des projets eole-common et creole.
Les variables nom_carte_eth sont devenues des multi. Si plusieurs valeurs, ça devient du bonding.
Dans l'état actuel, le serveur s'instancie et semble fonctionnel avec une seule valeur dans nom_carte_eth (bonding désactivé).
Avec plusieurs valeurs (bonding activé), le serveur s'instancie, le template interfaces semble correctement généré mais l'interface bond0 reste DOWN. Malgré le chargement manuel du module bonding.
La commande ip link set bond0 up reste sans effet.

#25 Updated by Fabrice Barconnière almost 7 years ago

  • Testé sur un aca.eolebase 2.6.0 + Maj-Auto -D => OK avec ce config.eol
    • 4 interfaces réseau sur academie
  • Testé sur un aca.eolebase 2.6.0 + Maj-Auto -D + apt-eole install eole-amon-all (=Amon 2.6.1) => OK avec ce config.eol
    • 2 interfaces réseau sur academie
    • 2 interfaces réseau sur admin1
    • 2 interfaces réseau sur pedago1
    • 2 interfaces réseau sur dmz1

#26 Updated by Fabrice Barconnière almost 7 years ago

  • Status changed from En cours to Résolu

#27 Updated by Scrum Master almost 7 years ago

  • Status changed from Résolu to Fermé
  • Remaining (hours) changed from 0.5 to 0.0

Also available in: Atom PDF