Projet

Général

Profil

Tâche #2986

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

gestion du bonding

Ajouté par Olivier JANVOIS il y a environ 12 ans. Mis à jour il y a plus de 7 ans.

Statut:
Fermé
Priorité:
Normal
Début:
15/11/2016
Echéance:
% réalisé:

100%

Temps estimé:
8.00 h
Temps passé:
Restant à faire (heures):
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 Voir (2,02 ko) Olivier JANVOIS, 29/02/2012 12:06

interfaces.patch Voir (760 octets) Olivier JANVOIS, 29/02/2012 12:06

config.eol.bond-eolebase (1,95 ko) Fabrice Barconnière, 22/11/2016 14:11

config.eol.bond-amon (2,19 ko) Fabrice Barconnière, 22/11/2016 14:11


Demandes liées

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

Révisions associées

Révision 9e35f277 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

Implémentation du bonding

ref #2986

Révision 0192cfc4 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

Implémentation du bonding

ref #2986

Révision 2af72c89 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

Intégration du bonding

  • Nouveau template bonding.conf pour charger le module bonding

ref #2986 @1h

Révision d6a876e5 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

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

ref #2986 @10m

Révision 3b9c0f79 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

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

ref #2986 @1h

Révision 1894b756 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

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

ref #2986 @1h

Révision e6968385 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

Support des alias sur les interfaces bonding

ref #2986 @30m

Révision 0e2fd6be (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

Support des VLAN sur les interfaces bonding

ref #2986 @30m

Révision a3c0e7dd (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

Adaptation du diagnose au bonding

ref #2986 @30m

Révision a4d0fce5 (diff)
Ajouté par Fabrice Barconnière il y a plus de 7 ans

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

ref #2986 @10m

Révision 351eb365 (diff)
Ajouté par Joël Cuissinat il y a plus de 7 ans

fix erreur bonding si carte en mode "manuel"

Ref: #2986 @30m

Historique

#1 Mis à jour par Olivier JANVOIS il y a environ 12 ans

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

#2 Mis à jour par Joël Cuissinat il y a environ 12 ans

  • Assigné à mis à Luc Bourdot

#3 Mis à jour par Luc Bourdot il y a environ 12 ans

A tester pour avis

#4 Mis à jour par Joël Cuissinat il y a environ 12 ans

  • Assigné à changé de Luc Bourdot à Fabrice Barconnière
  • Version cible mis à Mises à jour 2.3.5 RC
  • Temps estimé mis à 2.00 h

#5 Mis à jour par Joël Cuissinat il y a presque 12 ans

  • Version cible changé de Mises à jour 2.3.5 RC à Mises à jour 2.3.6 RC

#6 Mis à jour par Joël Cuissinat il y a plus de 11 ans

  • Version cible changé de Mises à jour 2.3.6 RC à Mises à jour 2.3.7 RC

#7 Mis à jour par Joël Cuissinat il y a plus de 11 ans

  • Version cible changé de Mises à jour 2.3.7 RC à Mises à jour 2.3.8

#8 Mis à jour par Luc Bourdot il y a environ 11 ans

  • Echéance mis à 25/01/2013
  • Début changé de 29/02/2012 à 21/01/2013

#9 Mis à jour par Luc Bourdot il y a environ 11 ans

  • Echéance 25/01/2013 supprimé
  • Statut changé de Nouveau à A étudier
  • Version cible changé de Mises à jour 2.3.8 à 189
  • Début 21/01/2013 supprimé
  • Distribution changé de EOLE 2.3 à EOLE 2.4

#10 Mis à jour par Luc Bourdot il y a environ 11 ans

  • Assigné à Fabrice Barconnière supprimé

#11 Mis à jour par Emmanuel GARETTE il y a environ 10 ans

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 Mis à jour par Luc Bourdot il y a plus de 9 ans

  • Tracker changé de Evolution à Bac à idée
  • Version cible 189 supprimé

#13 Mis à jour par Emmanuel GARETTE il y a plus de 9 ans

  • Tâche parente mis à #9185

#14 Mis à jour par Joël Cuissinat il y a plus de 9 ans

  • Statut changé de A étudier à Nouveau
  • Temps estimé 2.00 h supprimé

#15 Mis à jour par Joël Cuissinat il y a plus de 9 ans

  • Temps estimé mis à 8.00 h
  • Restant à faire (heures) mis à 8.0

#16 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

  • Statut changé de Nouveau à En cours
  • Début mis à 15/11/2016

#17 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

  • Description mis à jour (diff)
  • Assigné à mis à Fabrice Barconnière

#18 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

  • % réalisé changé de 0 à 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 Mis à jour par Emmanuel GARETTE il y a plus de 7 ans

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 Mis à jour par équipe eole Academie d'Orléans-Tours il y a plus de 7 ans

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 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

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

#22 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

  • % réalisé changé de 10 à 50

Construction du dictionnaire avec l'approche d'Emmanuel.

#23 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

  • % réalisé changé de 50 à 80
  • Restant à faire (heures) changé de 8.0 à 6.0

#24 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

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 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

  • 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 Mis à jour par Fabrice Barconnière il y a plus de 7 ans

  • Statut changé de En cours à Résolu

#27 Mis à jour par Scrum Master il y a plus de 7 ans

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) changé de 0.5 à 0.0

Formats disponibles : Atom PDF