Como configurar o Bonding para balanceamento e alta disponibilidade

Want create site? Find Free WordPress Themes and plugins.
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árias interfaces 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

Para configurar 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, já outras, necessitam de configurações especiais sobre os router e switch.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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:

 

# vim /etc/networking/interfaces
Minha configuração ficou da seguinte forma:
# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

#iface lo inet loopback

auto bond0

iface bond0 inet static

address 10.1.1.58

netmask 255.255.255.0

gateway 10.1.1.1

bond-mode 0

bond-slaves eth0 eth1

bond-miimon 100

bond-downdelay 400

bond-updelay 800]
 

Considerações

  • bond-mode – vou usar o bond para balanceamento de carga e backup;
  • 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;
  • bond-miimon – Diz ao kernel que o link será inspecionado a cada 100 milissegundos (no meu caso);
  • 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 milissegundos);
  • 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. Então, feitas 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
Terá como saída algo como:
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

Teste do 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

 

Tecmint                Welrbraga

Artigo enviado por: Benedito Gonçalves

 

Did you find apk for android? You can find new Free Android Games and apps.
Fonte TECMINT WELRBRAGA

Comentários