Load balance e alta disponibilidade com Bonding

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.

[ Hits: 168.967 ]

Por: Edwin Floriani em 01/05/2006


Configuração modo balance-rr



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.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação ou preparação
   3. Configuração modo balance-rr
   4. Configuração modo active-backup
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Configuração de Vídeo - SIS530, SIS620 e CIA...

Xen: Criando dom0 e domU no Fedora

Criando wallpapers animados para o Enlightenment 17

Execução automática de comandos na inicialização do modo gráfico

Habilitando multilib no Slackware - Atualizado e simplificado

  
Comentários
[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 ?

[]'s
Thiago Nobrega

[2] Comentário enviado por efloriani em 02/05/2006 - 14:10h

Esta alta disponibilidade e/ou balanceamento, não é para conexão
internet a 2 provedores, ou 2 links. Ela é para balanceamento e HA
local na rede.

Caso 1 - balance-rr - Imagine a figura abaixo

Usando 2 hosts

+----------+ +----------+
| |eth0 eth0| |
| Host A +--------------------------+ Host B |
| +--------------------------+ |
| |eth1 eth1| |
+----------+ +----------+

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.

Caso 2 - active-backup - Imagine a figura abaixo


| |
|port3 port3|
+-----+----+ +-----+----+
| |port7 ISL port7| |
| switch A +-------------------------+ switch B |
| +-------------------------+ |
| |port8 port8| |
+----++----+ +-----++---+
port2||port1 port1||port2
|| +-------+ ||
|+-------------+ host1 +---------------+|
| eth0 +-------+ eth1 |
| |
| +-------+ |
+--------------+ host2 +----------------+
eth0 +-------+ eth1

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..

Edwin Floriani

[3] Comentário enviado por thiagonobrega em 02/05/2006 - 15:06h

Pra mim já tam massa ...
tua explicação mais um link que achei ja deu para enteder bem ,,,

Valeu pela aula :D ...

ps : isso da um outro artigo rsrsrsrsrsrsr ...

[]'s
Thiago Nobrega


[4] Comentário enviado por mbmaciel em 04/05/2006 - 08:38h

Artigo de alto nível
Parabéns !!


[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 .


Muito obrigado pela atenção.

Qualquer resposta será bem vinda .

[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?

[7] Comentário enviado por rduarte em 01/02/2007 - 17:04h

Tentei implementar usando o samba não funcionou o samba não consegue carregar tenho um trafego de rede pesado alguem tem alguma dica

[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.

[10] Comentário enviado por efloriani em 18/02/2008 - 18:05h

Ola,

Não entendi o que está faltando. Trabalhar com Bonding é extremente simples. O artigo postado faz o trabalho de fail over e load balance.

É interessante ter o bonding como módulo para carregar com as opções que você deseja.

Aguardo uma pergunta.

[11] Comentário enviado por oberdan.soares em 18/04/2008 - 17:02h

Boa Tarde, estou com problema quando vou usar o bonding em modo 1... que seria o backup:

eth0 - 192.168.200.1 -> rede interna
eth1 - 192.168.0.2 -> gvt - link principal
eth2 - 192.168.1.2 -> brt

modprobe bonding

adicionei no /etc/modules.conf.local

alias bond0 bonding
options bond0 mode=1 miimon=100 downdelay=200 updelay=200

dei os comandos:

ip addr add 192.168.0.2/24 brd + dev bond0
ip link set dev bond0 up
ifenslave bond0 eth1 eth2

digitei os comandos sem problema... mas a eth1 e a eth2 ficou com o ip 192.168.0.2...

deixei os 2 modem.. com o ip 192.168.0.1

estava sem nenhuma rota configurada, adicionei a rota

route add default gw 192.168.0.1

do meu micro pinga

mas perde pacote pra cara*** quando tiro um dos cabos de rede, o ping funciona filé... oq pode estar errado nessa configuracao?

[12] Comentário enviado por mauromx em 24/06/2008 - 11:09h

No Fedora
eth0 = adsl1
eth1= rede interna
eth2 = adsl2
eth3 = adsl3

Como ficaria minha configuracao de bonding?

Grato desde ja!

[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.

Uso o ubuntu 9.04 desktop

Obrigado!

[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?

[17] Comentário enviado por rafamagalhaes em 16/01/2012 - 13:40h

Qual a configuração de hardware recomendada para implementação desta solução?

[18] Comentário enviado por dead_pixell em 19/07/2012 - 16:58h

o sofisticado esta no simples.

[19] Comentário enviado por batista em 28/07/2012 - 01:30h

Bom artigo. Agora quem usa Mandriva nas versoes 2010 e 2011 pode fazer uso desta tecnica seguindo este link http://www.mandrivabrasil.org/site/forum/index.php?topic=13203.0
Fiz as configuraçoes conforme esta no link e funcionou de primeira.

[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.

[21] Comentário enviado por efloriani em 11/11/2014 - 16:49h

Olá Deborafb, na verdade esse artigo foi criado a algum tempo. Hoje eu recomendaria outras tecnologias. Você pode me enviar mensagem que conversamos.

[22] Comentário enviado por deborafb em 11/11/2014 - 17:03h


[21] Comentário enviado por efloriani em 11/11/2014 - 16:49h:

Olá Deborafb, na verdade esse artigo foi criado a algum tempo. Hoje eu recomendaria outras tecnologias. Você pode me enviar mensagem que conversamos.


Quais outras tecnologias? Tem algum email para entrar em contato com você?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts