Infotech Notes

7/Agosto/2008

Link aggregation/Bonding em linux

Arquivado em: ldap — Gustavo @ 9:56 pm

Seguem algumas informações e dois scripts úteis para adição e configuração de interfaces em link agregation/bonding em linux. Eu fiz isso em Debian 3.1, mas vale para qualquer linux.

No exemplo abaixo (/etc/init.d/start_bondig) eu tenho um servidor com 4 interfaces de rede e estou criando 2 link aggregation, para uso em dois switches trabalhando com HSRP (Cisco). Eu vou criar a interface lógica bond0 com as interfaces físicas eth1 e eth2, e a interface lógica bond1 com as interfaces físicas eth3 e eth4.

Vale lembrar que se voce tem 1 servidor e 1 switch operando em modo bonding, a escolha do modo é muito importante para o correto balanceamento.

No caso do servidor, o melhor modo para balanceamento é o mode=0, que envia um pacote para cada interface alternadamente. A escolha do modo vale somente para o envio dos pacotes, uma vez que quando o bondiing ou aggregation está ativado, qualquer que seja o modo de configuração do bonding, o outro equipamento deve ser capaz de recebê-los sem problema. Ou seja, eu posso ter modo de envio 0 (Round-robin mode) do servidor para o switch e modo 1 (Active-backup mode) do switch para o servidor, e eles serão capazes de trocar tráfego sem problema.

#!/bin/sh
# arquivo /etc/init.d/start_bonding
# obtendo os MACs
MAC_ADDR_0=`ifconfig -a | grep eth1 | awk ‘{printf$5″\n”}’`
MAC_ADDR_1=`ifconfig -a | grep eth3 | awk ‘{printf$5″\n”}’`

# carregando os modulos em memoria
# mode=0 ==> Round-robin policy
# mode=1 ==> Active-backup policy
# mode=2 ==> Balance-xor policy
# mode=3 ==> Broadcast policy
# mode=4 ==> 802.3ad policy
# mode=5 ==> Balance-tlb (Adaptive transmit load balancing) policy
# mode=6 ==> Balance-alb (Adaptive load balancing) policy

# tip para carregar o segundo bonding
/sbin/modprobe bonding mode=0                           ## bond0
/sbin/modprobe bonding -o bonding1 mode=0      ## bond1

/sbin/ifconfig bond0 hw ether $MAC_ADDR_0
/sbin/ifconfig bond0 up

/sbin/ifconfig bond1 hw ether $MAC_ADDR_1
/sbin/ifconfig bond1 up

#interfaces para o switch
/sbin/ifenslave bond0 eth1
/sbin/ifenslave bond0 eth2

#interfaces para o brick
/sbin/ifenslave bond1 eth3
/sbin/ifenslave bond1 eth4

/sbin/ifconfig eth1 up
/sbin/ifconfig eth2 up
/sbin/ifconfig eth3 up
/sbin/ifconfig eth4 up

#========eof /etc/init.d/start_bonding

Para desfazer as interfaces, use este script

#!/bin/sh
# arquivo /etc/init.d/stop_bonding

/sbin/ifconfig br0 down
/usr/sbin/brctl delif br0 bond0
/usr/sbin/brctl delif br0 bond1
/usr/sbin/brctl delbr br0

/sbin/ifconfig eth1 down
/sbin/ifconfig eth2 down
/sbin/ifconfig eth3 down
/sbin/ifconfig eth4 down

/sbin/ifenslave -d bond0 eth1
/sbin/ifenslave -d bond0 eth2
/sbin/ifenslave -d bond1 eth3
/sbin/ifenslave -d bond1 eth4

/sbin/ifconfig bond0 down
/sbin/ifconfig bond1 down

#===========eof  /etc/init.d/stop_bonding

Sem comentários ainda »

Nenhum comentário ainda.

Feed RSS dos comentários deste post URI do TrackBack

Deixe um comentário

Blog no WordPress.com.