Agregação de links em uma ponte LXC

1

Estou trabalhando em um servidor com diversas interfaces (eth0-3) e atualmente uso apenas um para o tráfego de host e outro para o tráfego de pontes LXC. Como tenho algumas portas sobressalentes instaladas e tenho muito tráfego na minha ponte, pensei em usar as outras portas para uma boa e antiga agregação de links.

Isso não é algo com o que eu realmente mexi antes, isso não é realmente uma questão mais 'é assim que eu implementaria isso em / etc / network / interfaces' ... então aqui vamos nós.

Pelo que entendi, posso apenas usar a coisa de bonding para unir eth1 e eth2 (ou mesmo eth3 !) a um dispositivo bond0 e, em seguida, apenas alterar o bridge_port da minha bridge br0 to bond0 . Agora tudo isso faz sentido para mim, o que eu estou muito confuso é como fazer isso se eu não quisesse dar um ip a bond ... Eu atualmente tenho o meu br0 definido para não ter IP, o que significa que o host não é É possível contatar, mas todos os contêineres lxc no host que possuem IPs roteáveis para que possam ser contatados.

Como eu implementaria isso? Posso apenas não dar bond0 um ip e assumir que ele irá agir da mesma maneira?

Aqui está o meu arquivo notas / etc / network / interface sobre como eu gostaria de fazer isso (lembre-se de não ter implementado isso ainda, porque eu não quero abaixar todas as minhas redes de hosts ):

# 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
    
por rolands 06.07.2014 / 04:09

1 resposta

0

Então, eu estava tendo um problema parecido ao ligar + bridging trabalhando no Ubuntu 14.04. Havia três coisas importantes que eu tinha que fazer:

  1. Desative os nomes do bios dev e atualize o grub.
  2. Crie meu próprio arquivo de nome de regras do udev.
  3. Faça a ponte tomar o IP, não o vínculo.

Ok passo 1. Certifique-se de ter acesso LOCAL a esta caixa. Teclado e monitor. Nós vamos quebrar sua rede. Edite este arquivo: /etc/default/grub e altere esta linha:

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

(Nós não usamos IPV6, então desabilitamos isso também)

Em seguida, execute sudo update-grub e reinicie.

Ok, passo 2. Em seguida, faça o login em sua caixa e execute o seguinte: sudo dmesg | grep eth

Com alguma sorte, você deve encontrar seus dispositivos para que possamos escrever regras do udev. Normalmente, as pessoas renomeam seus dispositivos de rede pelo endereço MAC, mas os títulos tendem a confundir o udev porque o vínculo pode ter um dos endereços MAC da NIC em certas configurações, portanto, não siga esse caminho. Em vez disso, você pode fazer isso por ID do dispositivo. Eu tenho Intel NICs, então esta é a minha saída. Sua milhagem irá variar:

[ 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, meus códigos de dispositivo são 0000:07:00.0 e 0000:08:00.0 . Estes são exclusivos para cada configuração de hardware.

Edite este arquivo e remova todas as linhas existentes dele: /etc/udev/rules.d/70-persistent-net.rules

Adicione os nomes de dispositivos desejados como este (observe onde colocar os 0000:07:00.0 e 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. Quase pronto.

Etapa 3. Por alguma razão, não consegui colocar a rede em funcionamento se o vínculo assumiu o endereço IP, mas parece que está funcionando, apenas descubra se a ponte o faz. Eu uso este /etc/network/interfaces (eu também uso DHCP em vez de BTW estático, apenas mantenha essas estrofes):

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

Reinicie e cruze os dedos dos pés. Boa sorte!

EDITAR

O Ubuntu tem alguns bugs com pedidos nesta configuração. Eu inseri alguns atrasos de post-up porque eu não estava conseguindo puxar e endereço IP consistentemente sobre 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
    
por Jonathan S. Fisher 03.03.2015 / 06:04