De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Gustavo Mendes de Carvalho
Data de Publicação: 12 de junho de 2010
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_bonding
) 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 eth0 e eth1, e a interface lógica bond1 com as interfaces físicas eth2 e eth3.
Vale lembrar que se você 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 bonding 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=`/sbin/ifconfig -a | /bin/grep eth0 | /bin/awk {print $5} ` MAC_ADDR_1=`/sbin/ifconfig -a | /bin/grep eth2 | /bin/awk {print $5} ` # modos de operacao de bonding suportados # 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 # carregando o modulo em memoria para o primeiro bonding /sbin/modprobe bonding mode=0 ## bond0 # pulo do gato para criar o segundo bonding no mesmo servidor /sbin/modprobe bonding -o bonding1 mode=0 ## bond1 # criando a interface bond0 e dando-lhe um MAC /sbin/ifconfig bond0 hw ether $MAC_ADDR_0 /sbin/ifconfig bond0 up # criando a interface bond1 e dando-lhe um MAC /sbin/ifconfig bond1 hw ether $MAC_ADDR_1 /sbin/ifconfig bond1 up # adicionando as interfaces físicas ao bond 0 /sbin/ifenslave bond0 eth0 /sbin/ifenslave bond0 eth1 # adicionando as interfaces físicas ao bond 1 /sbin/ifenslave bond1 eth2 /sbin/ifenslave bond1 eth3 # ativando as interfaces físicas /sbin/ifconfig eth0 up /sbin/ifconfig eth1 up /sbin/ifconfig eth2 up /sbin/ifconfig eth3 up #========eof /etc/init.d/start_bonding
É claro que este exemplo server para mostrar o que pode ser feito, mas é possível também adicionar mais interfaces físicas em um mesmo bonding. No exemplo abaixo, eu vou criar 1 bonding com 4 interfaces físicas.
#!/bin/sh # arquivo /etc/init.d/start_bonding # obtendo os MACs MAC_ADDR_0=`/sbin/ifconfig -a | /bin/grep eth0 | /bin/awk {print $5} ` # 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 # carregando o modulo em meoria para o primeiro bonding /sbin/modprobe bonding mode=0 ## bond0 # criando a interface bond0 e dando-lhe um MAC /sbin/ifconfig bond0 hw ether $MAC_ADDR_0 /sbin/ifconfig bond0 up # adicionando as interfaces físicas ao bond 0 /sbin/ifenslave bond0 eth0 /sbin/ifenslave bond0 eth1 /sbin/ifenslave bond0 eth2 /sbin/ifenslave bond0 eth3 # ativando as interfaces físicas /sbin/ifconfig eth0 up /sbin/ifconfig eth1 up /sbin/ifconfig eth2 up /sbin/ifconfig eth3 up #========eof /etc/init.d/start_bonding
Já para desfazer estas interfaces, o caminho deve ser desfeito de trás para frente. Veja o script para desfazer is dois bondings com 2 interfaces físicas cada.
#!/bin/sh # arquivo /etc/init.d/stop_bonding # colocando as interfaces físicas em down /sbin/ifconfig eth1 down /sbin/ifconfig eth2 down /sbin/ifconfig eth3 down /sbin/ifconfig eth4 down # desvinculando as interfaces físicas do bonding /sbin/ifenslave -d bond0 eth0 /sbin/ifenslave -d bond0 eth1 /sbin/ifenslave -d bond1 eth2 /sbin/ifenslave -d bond1 eth3 # colocando as interfaces de bonding em down /sbin/ifconfig bond0 down /sbin/ifconfig bond1 down #===========eof /etc/init.d/stop_bonding
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários