Bonding é mais conhecido como trunking pela Sun e Etherchannel pela Cisco. Aqui veremos como configurá-lo no modo balance-rr, utilizado principalmente para alta disponibilidade e load balance e no modo active-backup, que é utilizado para sistemas de alta disponibilidade. Ele cria uma única interface de rede lógica para várias interfaces de rede físicas.
Neste artigo iremos mostrar dois métodos de configuração do bonding. Modo que proporciona load balance e failover e outro modo somente para failover.
1) hosts estão conectados a um único host ou switch que suporta trunking.
2) hosts estão conectados a vários switches diferentes ou a um único switch que não suporta trunking.
Modo Balance-rr
Transmite os dados em uma ordem sequencial, desde o primeiro slave disponível até o último.
Simplesmente configure o equipamento remoto para agregar o tráfico em diversas portas (Trunking, Etherchannel) e configure a interface bonding.
Vamos chamar a interface bonding local de bond0. Edite o arquivo /etc/modules.conf, nele coloque as duas linhas abaixo:
alias bond0 bonding
options bond0 miimon=100 downdelay=200 updelay=200
Não é necessário setar um MAC address para a interface bond0, quando não definido ele utiliza da primeira slave que for agregada.
Configurando interface bond0:
# ip addr add 192.168.0.254/24 brd + dev bond0
# ip link set dev bond0 up
Agora a interface bond0 já está no ar. Substitua o endereço IP acima pelo que deseje para a sua interface.
O próximo passo é dizer ao driver quais interfaces de redes físicas irão fazer parte deste TEAM, constituindo a interface lógica bond0.
# ifenslave bond0 eth0 eth1
Substitua eth0 e eth1 pelas suas placas de rede que deseja agregar ao TEAM recém formado.
Você já pode fazer os testes. A velocidade do seu link dobrou e temos uma redundância. Para testar, você pode utilizar um ping, da máquina para fora, e de uma estação para esta máquina. Após isso, retire um dos cabos de rede e pronto, a outra placa assume em 200 milisegundos.
Note que a forma que utilizamos para detecção de queda é pelo mii, ou seja, quando um switch é desligado, um cabo rompido, porta queimada ou cabo desconectado, ele detecta o problema e redireciona o tráfego somente pela outra placa.
[1] Comentário enviado por thiagonobrega em 02/05/2006 - 13:07h
Cara muito legal o teu artigo,
Não sabia que podia fazer LoadBalance usando Bonding < nem sabia que ele existia , rsrsrs > , so conhecia o cbq...
O Bonding me pareceu bem mais simples que o cbq no linux < no bsd o cbq e bem mais facil de fazer = ) >. Você por acaso viu algum comparativo entre Bonding x cbq ?
Neste caso, se eth0 e eth1 estão funcionando e com link up nos dois
pontos, temos um load balance e ha. A velocidade aumenta, devido, como
explicado no artigo, os dados serem transmitidos em uma forma
sequencial, desde o primeiro slave até o último. Se uma interface
física cair, todo o tráfego é gerenciado para a outra interface.
Usando um host para um switch que suporte trunking
+----------+ +----------+
| |eth0 port1| |
| Host A +------------------------+ switch |
| +------------------------+ |
| |eth1 port2| |
+----------+ +----------+
Neste caso, ocorre da mesma forma que acima. Temos um load balance
para grande carga em rede local. O Host A pode estar servindo um banco
de dados oracle, com duas placas de rede giga. Assim, dobramos a
velocidade de transmissão dos dados na rede, nao ocorrendo um
afunilamento. E temos a alta disponibilidade, caso uma porta do switch
venha a queimar, ou se um cabo rompido ou placa de rede perder
performance ou até mesmo cair, o outro slave assume inteiramente o
tráfego.
Agora, temos o caso 2, explicado no artigo, modo de active-backup.
Neste caso, o driver bonding, trabalhaŕa a somente no modo failover,
para alta disponibilidade. Digamos que o switch A, queime, ou o port1
queime, ou pare de comunicar, ou tenha um atraso muito grande na
atualização da tabela arp interna dele, então, automaticamente, o
bonding abandona essa interface, e passa todo o tráfego pela outra
interface no outro switch. Este modo serve apenas para redundancia.
Cara, se nao fui muito claro, me manda outra msg ai pra gente esclarecer..
[5] Comentário enviado por heberreis em 28/09/2006 - 13:32h
Boa Tarde
Tenho dois links de provedores distintos, onde posso achar um tutorial para fazer Load balance + Alta Disponibilidade no linux .
Já li varias documentações mais nenhuma funcionou .
Esquema :
link1--eth0 Compartilhado Internet para
|---------------------------------------eth3----------Lan
link2--eth1
1 - Fazer a rede lan usar os dois links; não precisa dividir os pacotes, tipo quando uma maquina da lan navegar ou fazer download escolhe um dos links.
2 - quando algum dos links cairem o outro assumir a internet .
[6] Comentário enviado por danyelskittine em 30/01/2007 - 20:20h
Pessoal tenho uma duvida, alguem conhece uma forma de fazer um load balance de alta disponibilidade com link de internet? tipo assim: tenho 3 placas de rede...eth0=link de 1 mega velox, eth1=link de 1 mega velox, eth2=rede local....tem como eu juntar esses dois links pra ficar 2=megas?
[8] Comentário enviado por cytron em 01/06/2007 - 06:24h
Implantei esse tal de bonding mas nao funcionou como deveria. Virei duas madrugadas tentando resolver mas não achei a solução. Não entendi como tudo funciona, fiz como pediu:
criei a interface bond0
agrupei eth0 e eth1 em bond0
Coloquei o tráfego pra rodar e observei que eth0 e eth1 trafegaram quase a mesma quantidade de dados, ficou realmente equilibrado... no entanto... ao invés de aumentar a velocidade (somando eth0 + eth1) a coisa ficou foi muito lenta, quando pingo fica perdendo quase 50% dos pacotes.
No meu entender, parece que falta mexer com a tabela de roteamento, nao entendo muito disso e procurei em tudo quanto foi bonding e ninguém falou de roteamento. Talvez meu palpite esteja errado... Mas então o que está acontecendo?
[9] Comentário enviado por cytron em 17/02/2008 - 19:00h
Puxa! 8 meses depois... e ninguém respondeu! Acho que essa coisa de bonding está fora de moda... a final...
Ninguém gosta mais do Bonding... James Bond'ing' kkkkk!!!!
A partir de hoje estou retomando minhas tentativas, mas meu caso é um pouco diferente, é o mesmo caso que o autor deste artigo prometeu mostrar e acabou não colocando:
É sobre fazer o balance em links conectados a um switch que suporta trunking e também outro exemplo em switch sem trunking. Pois eu possuo vários links e não tem cabimento colocar um monte de placas de rede em um servidor.
Por isso conecto os links em um switch para fazer o load balance, mas atualmente estou sobrevivendo graças a um complexo emaranhado de controle de rotas e iptables para fazer um balance dinâmico baseado em demanda de tráfego. Mas creio que um bonding vai exigir bem menos da máquina.
[13] Comentário enviado por efloriani em 24/06/2008 - 13:17h
O Método bonding é para redundancia ou trunking em rede interna.. Nao é adequado para uso em balanceamento de internet. Para isso, podes utilizar por exemplo, marcação de pacotes e iproute2.
[14] Comentário enviado por aldoarendt em 12/02/2009 - 15:40h
Amigos fiquei meio confuso com o bonding, fiz as configurações descritas e o que consegui foi uma redundancia entre a minha eth0 e eth1 onde as duas ficaram com o mesmo ip, se alguem puder me ajudar minha situação é a seguinte eth0 entra um link Brasil telecom, eth1 entra um Link copel, o link copel so deve ser ativado quando o link brt parar de funcionar e quando ele retornar automaticamente o link passa a vir por ele e o link da copel para de funcionar.
[15] Comentário enviado por nox6000 em 29/08/2009 - 21:01h
Muito Bacana o Artigo, Parabéns!!!
Eu sou um usuário de nivel intermetidario em linux.
Gostaria de saber se há como utilizar este metodo abordado para utilizar dois links do velox não pra somar a velocidade de conexão e sim para que eu possa utilizar dois modens onde as interfaces eth0 e eth1 fiquem com o dois modens.
E a eth2 fique responsavel pra liberar o sinal pra rede.
já configurei o squid para controlar o acesso externo e o pppoeconf para realizar a autenticação e já consigo fazer meu servidor conectar com um modem e liberar o sinal para a rede, mas gostaria de saber se tem como atraves desse metodo abordado pelo artigo eu compartilhar as duas conexões.
[16] Comentário enviado por tosko em 03/04/2010 - 19:09h
ta, disculpe talvez minha ignorancia mas eua inda não entendi uma coisa direito, eu preciso unir 2 links da mesma operadora, eles vão fazer a altenticação no modem mesmo, se eu fizer este bonding ele vai unir as duas velocidades? tipo se for 1 link de 1mb e outro de 1mb vou navegar a 2mb? ele vai dividir a requisição em ambos? como ira funcionar?
[20] Comentário enviado por deborafb em 11/11/2014 - 16:41h
Boa Tarde,
Tenho na minha empresa 4 internet. 1 de 10MB, outra de 30MB, e 2 de 1MB. Preciso fazer com que se caso uma caia, automaticamente passe para outra. Por exemplo:
ETH 1
ETH 2
ETH 3
ETH 4
Se eth 1 cair, automaticamente passa para eth 2 ou eth 3. O importante é que preciso que se eth 1,2,3 e 4 cair eu quero ser informada.
Fiquei sabendo que consigo fazer isso pelo loadbalance. Mas não sei como faço isso.