Como configurar o Bonding para balanceamento e alta disponibilidade

Want create site? Find Free WordPress Themes and plugins.
Como configurar o Bonding para balanceamento e alta disponibilidade
O Bonding vem se tornando popular entre os usuários Linux em especial porque ele é módulo do Kernel Linux e que permite usar váris interface de rede em uma única interface lógica, não é tão complicado de fazer, e por sinal anda bem documentado, mas é bem complicado encontrar tutoriais claros que orientem como configurar o Bonding para balanceamento e alta disponibilidade.

Bonding: Modos e configuração

Configurando várias interfaces de rede em um servidor para que haja balanceamento de carga e alta disponibilidade.
Usaremos o pacote ifenslave no Debian 8, execute os comandos abaixo como ROOT:
[apt-get install ifenslave]
Depois da instalação é hora de decidir qual modelo de bond aplicar nas interfaces, uns são fáceis de aplicar, outros já nessecitam de configurações especiais sobre os router e switch.
  • [message]
    • Dica
      • Clique em cada Accordion para abrir a descrição!

    • 1) Mode=0 (balanceamento round-robin)
      • Neste modo é feito um balanceamento round-robin entre as interfaces slaves. Por exemplo. Se tivermos 2 interfaces slaves ao recebermos 2 pacotes o primeiro irá pela interface1 disponível e o segundo irá pela inteface2. Um terceiro pacote irá novamente pela interface1 e assim por diante. Este modo provê balanceamento de carga e tolerância a falhas.
    • 2) Mode=1 (ativo-backup)
      • Neste modo as interfaces participantes do bond funcionarão no modo ativo/backup, ou seja, somente 1 interface física será usada. A outra somente será usada caso a primeira falhe. Este modo provê somente tolerância a falha.
    • 3) Mode=2 (balanceamento XOR)
      • Neste modo o MAC de destino do pacote será associado a uma interface slave participante. Assim uma mesma conexão será usada pela mesma interface.
    • 4) Mode=3 (broadcast)
      • Este modo é similar ao modo=0 porém o balanceamento é feito de forma aleatória. Provê somente tolerância a falha.
    • 5) Mode=4 (802.3ad)
      • Este modo também é conhecido como DLA ( Dynamic Link Aggregation ). Ele agrupa interfaces com mesmas características de velocidade e configuração duplex. Neste modo é necessário um switch que suporte o padrão IEEE 802.3ad.
    • 6) Mode=5 (balanceamento-tlb)
      • Também conhecido como Balanceamento de Carga com transmissão adaptativa ( Adaptative transmit load balance ). O tráfego de saída é balanceado de acordo com a carga e fila ( queue ) em cada interface slave.
    • 7) Mode=6 (balanceamento-alb)
      • Conhecido como Balanceamento de carga adaptativa ( Adaptative load balance ). Inclui rlb+tlb ( receive load balance + transmitt load balance ). Neste modo o bond intercepta do pacote ARP respondido pelo servidor alterando o MAC de origem para o MAC da interface slave elegida.

Em meu caso, usei em um servidor de arquivos, logo minha opção foi a bond-mode 0

Usei duas interfaces de rede (eth0 e eth1). Para configurar o bond edite o arquivo interfaces:
Minha configuração ficou da seguinte forma:
  1. [#vim /etc/networking/interfaces
  2. …………..
  3. # This file describes the network interfaces available on your system
  4. # and how to activate them. For more information, see interfaces(5).
  5. source /etc/network/interfaces.d/*
  6. # The loopback network interface
  7. auto lo
  8. #iface lo inet loopback
  9. auto bond0
  10. iface bond0 inet static
  11. address 10.1.1.58
  12. netmask 255.255.255.0
  13. gateway 10.1.1.1
  14. bond-mode 0
  15. bond-slaves eth0 eth1
  16. bond-miimon 100
  17. bond-downdelay 400
  18. bond-updelay 800]

Considerações:
  1. bond-mode = vou usar o bond para balanceamento de carga e backup 
  2. bond-slaves = São minhas interfaces que trabalharam no bond, se eu tivesse mais interfaces iria incluir junto a eth0 e eth1 separando-as apenas por espaço
  3. bond-miimon = Diz ao kernel que o link será inspecionado a cada 100 milisegundos (no meu caso)
  4. bond-downdelay = É o tempo que o sistema irá aguardar antes de concluir que uma interface ativa caiu, assim, fazendo a outra assumir sozinha (no meu caso 400 milisegunods)
  5. bond-updelay = ao contrário do downdelay

Essas são as minhas configurações, mas podem ser alteradas ou acrescentadas novas opções conforme sua necessidade. Pesquise!

Feita as configurações basta reiniciar o servidor ou reiniciar o serviço de rede

Testando a configuração Bond

Se até agora tudo ocorreu bem o comando ifconfig deve retornar algo assim:
Execute o comando abaixo como ROOT e aguarde as saídas no terminal:

[ifconfig]

Saída do terminal devem ser parecidas com as abaixo:

bond0 Link encap:Ethernet HWaddr 00:1f:d0:e2:06:93

inet addr:10.1.1.58 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::21f:d0ff:fee2:693/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:2393283 errors:0 dropped:0 overruns:0 frame:0
TX packets:32679 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:569079706 (542.7 MiB) TX bytes:2918345 (2.7 MiB)

eth0 Link encap:Ethernet HWaddr 00:1f:d0:e2:06:93
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1196664 errors:0 dropped:0 overruns:0 frame:0
TX packets:16344 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:284857293 (271.6 MiB) TX bytes:1438910 (1.3 MiB)

eth1 Link encap:Ethernet HWaddr 00:1f:d0:e2:06:93
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1196619 errors:0 dropped:0 overruns:0 frame:0
TX packets:16335 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:284222413 (271.0 MiB) TX bytes:1479435 (1.4 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:84 (84.0 B) TX bytes:84 (84.0 B)

É mostrado acima que o bond0 esta ativo (MASTER) com determinado IP, logo abaixo, mostra as interfaces eth0 e eth1 como SLAVE.

Você pode consultar o arquivo bond0 para ver as especificações da sua configuração executando os comandos abaixo:

[cat /proc/net/bonding/bond0]

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 800
Down Delay (ms): 400
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:1f:d0:e2:06:93
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 5c:d9:98:4c:0e:25
Slave queue ID: 0
Um campo interessando nesse arquivo é o “Link Failure Count” que mostra as falhas que a interface teve.
Para testar se realmente seu bond esta funcionando, faça o seguinte:
  1. Feita as configurações acima, reinicie seu servidor que subirá com as configurações do bond;
  2. Instale o iptraf para monitorar as transmissões de pacote, execute o comando abaixo como ROOT:

[apt-get install iptraf]

  1. Baixe algum arquivo grande (como uma iso) usando o wget por exemplo
  2. No momento que o arquivo esta sendo baixado, inicie o iptraf para que ele possa monitorar o download da iso. 
  3. Com o Iptraf ativo, vá em “IP Traffic monitor” – “All interfaces”, você verá as duas interfaces dividindo a recepção do pacote. Concluimos que o modo balanceamento funciona.
  4. Agora desconecte um o cabo de rede da eth0, você verá somente a eth1 funcionando, reconecte, para as duas balancear a carga, retire da eth1, você verá apenas a eth0 funcionando, reconecte. Portanto, o backup também funciona.

Esses teste foi realizado numa máquina física, não funcionou em máquina virtual.

Você pode acompanhar o processo de desativação de interface em um outro tty, de o comando:

[tail -f /var/log/syslog]

Referências:

  • [message]
    • Artigo enviado por:
      • Benedito Gonçalves
Did you find apk for android? You can find new Free Android Games and apps.

Comentários