1 votes

Agrégation de liens sur un pont LXC

Je travaille sur un serveur avec un certain nombre d'interfaces différentes (eth0-3) et j'en utilise actuellement une seule pour le trafic de l'hôte et une autre pour le trafic de mes ponts LXC. Comme j'ai quelques ports de rechange qui traînent et que j'ai beaucoup de trafic sur mon pont, j'ai pensé utiliser les autres ports pour une bonne vieille agrégation de liens.

Ce n'est pas quelque chose que j'ai vraiment fait avant, ce n'est pas vraiment une question mais plutôt un 'est-ce que c'est comme ça que je dois implémenter ceci dans /etc/network/interfaces'... donc c'est parti.

D'après ce que j'ai compris, je peux utiliser le truc pour coller eth1 y eth2 dire (ou même eth3 !) à un appareil bond0 et il suffit ensuite de modifier le bridge_port de mon pont br0 a bond0 . Maintenant, tout cela a du sens pour moi, ce que je ne comprends pas, c'est comment faire si je ne veux pas donner une adresse IP à bond0... J'ai actuellement mon br0 configuré pour ne pas avoir d'IP, ce qui signifie que l'hôte n'est pas joignable, mais tous les conteneurs lxc sur l'hôte qui ont des IP routables afin qu'ils puissent être contactés.

Comment le mettre en œuvre ? Puis-je simplement ne pas donner bond0 un ip et supposer qu'il agira de la même manière ?

Voici mon notes Le fichier /etc/network/interface sur la façon dont je le ferais (attention, je ne l'ai pas encore implémenté parce que je ne veux pas détruire tous mes réseaux d'hôtes) :

# host communications times
auto eth0 inet static 
iface eth0 inet static
    blahblahblah

# first slave device
auto eth1
iface eth1 inet manual
    bond-master bond0

# second slave device
auto eth2
iface eth2 inet manual
    bond-master bond0

# our bond master or aggregation device
auto bond0
iface bond0 inet manual
    # no IP?
    gateway 192.168.1.1
    netmask 255.255.255.0
    bond-mode 0

# our bridge device
auto br0
iface br0 inet manual
    # also no IP
    bridge_ports bond0
    bridge_fd 0
    bridge_maxwait 0

0voto

Jason H Points 101

J'ai eu un problème similaire pour faire fonctionner le bonding + bridging sur Ubuntu 14.04. Il y avait trois choses essentielles que je devais faire :

  1. Désactiver les noms de dev bios, et mettre à jour Grub.
  2. Créer mon propre fichier de noms de règles udev.
  3. Faites en sorte que le pont prenne l'IP, pas la caution.

Ok étape 1. Assurez-vous que vous avez un accès LOCAL à cette boîte. Clavier et écran. Nous allons casser votre réseau. Editez ce fichier : /etc/default/grub et changez cette ligne :

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 net.ifnames=1 biosdevname=0"

(Nous n'utilisons pas l'IPV6, donc nous le désactivons également).

Ensuite, exécutez sudo update-grub et redémarrer.

Ok étape 2. Ensuite, connectez-vous à votre boîte et exécutez ce qui suit : sudo dmesg | grep eth

Avec un peu de chance, vous devriez trouver vos périphériques pour que nous puissions écrire des règles udev. Normalement, les gens renomment leurs périphériques réseau par adresse MAC, mais les liens ont tendance à embrouiller udev parce que le lien peut prendre l'une des adresses MAC de votre carte réseau dans certaines configurations, donc ne vous engagez pas dans cette voie. A la place, vous pouvez le faire par ID de périphérique. J'ai des cartes réseau Intel, c'est donc mon résultat. Votre kilométrage peut varier :

[ 17.888965] igb 0000:07:00.0: added PHC on eth0 [ 17.888969] igb 0000:07:00.0: eth0: (PCIe:2.5Gb/s:Width x1) d0:50:99:xx:xx:xx [ 17.889097] igb 0000:07:00.0: eth0: PBA No: 001300-000 [ 17.932484] igb 0000:08:00.0: added PHC on eth1 [ 17.932488] igb 0000:08:00.0: eth1: (PCIe:2.5Gb/s:Width x1) d0:50:99:xx:xx:xx [ 17.932615] igb 0000:08:00.0: eth1: PBA No: 001300-000

Ok, donc mes identifiants d'appareils sont 0000:07:00.0 y 0000:08:00.0 . Ceux-ci sont uniques à chaque configuration matérielle.

Editez ce fichier, et supprimez toutes les lignes existantes : /etc/udev/rules.d/70-persistent-net.rules

Ajoutez les noms de vos périphériques souhaités comme ceci (remarquez l'endroit où il faut subtiliser le symbole 0000:07:00.0 y 0000:08:00.0 ) :

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:07:00.0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:08:00.0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Woot. Presque fini.

Étape 3. Pour une raison quelconque, je n'ai pas réussi à faire fonctionner le réseau si le lien prenait l'adresse IP, mais il semble que cela fonctionne si le pont le fait. J'utilise ceci /etc/network/interfaces (J'utilise aussi DHCP au lieu de statique BTW, gardez juste ces strophes) :

auto lo
     iface lo inet loopback

auto eth0 
iface eth0 inet manual
     bond-master bond0

auto eth1
iface eth1 inet manual
     bond-master bond0

auto bond0
iface bond0 inet manual 
     bond-slaves none
     bond-mode 802.3ad
     bond-miimon 100
     bond-downdelay 200
     bond-updelay 200

auto lan0
iface lan0 inet dhcp
  bridge_ports bond0
  bridge_fd 0
  bridge_maxwait 0

Redémarrez et croisez vos orteils. Bonne chance !

EDIT

Ubuntu a quelques bogues avec la commande dans cette configuration. J'ai introduit quelques retards de post-up parce que je n'étais pas toujours capable de tirer une adresse IP par DHCP :

/etc/network/interfaces :

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
    bond-master bond0

auto eth1
iface eth1 inet manual
    bond-master bond0

auto bond0
iface bond0 inet manual
    bond-slaves eth0 eth1
    bond-mode 802.3ad
    bond-miimon 100
    bond-downdelay 200
    bond-updelay 200
    bond-xmit-hash-policy layer3+4
    up sleep 2

auto lan0
iface lan0 inet dhcp
    bridge_ports bond0
    bridge_waitport 10
    bridge_fd 0
    bridge_maxwait 0
    bridge_stp off
    pre-up sleep 2

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X