Instalando e Configurando Bonding no Debian Squeeze

4 de novembro de 2013


Ethernet bonding, regulado pela norma IEEE 802.3ad com o título link aggregation é uma técnica em redes de computadores usada para o acoplamento de dois ou mais canais Ethernet em paralelo para produzir um único canal de maior velocidade e/ou aumentar a disponibilidade e redundância desse canal.
Aqui vamos configurar o bonding para mantermos a redundância de uma conexão de rede.
Prepare o seu sistema com o seguinte script http://www.douglas.wiki.br/doku.php?id=confinicialsqueeze para que não falte nenhum pacote ou configuração.
Aqui vamos precisar de uma máquina com duas interfaces de rede no mínimo eu vou utilizar uma VM com 3 interfaces para demostrar a utilização.
Vamos instalar os pacotes necessários
aptitude update && aptitude install ifenslave ethtool -y
Agora vamos inserir o módulo do bonding para ser carregado com o sistema
echo "alias bond0 bonding" >> /etc/modprobe.d/bonding.conf  echo "options bonding mode=0 miimon=100" >> /etc/modprobe.d/bonding.conf
Vamos dar uma olhadas nas opções acima que vamos utilizar para o bond
Na primeira linha estamos carregando o modulo bonding e criando a interface virtual bond0. Na segunda linha informa que o módulo bonding deve operar em mode 0. Veja os diferentes tipos de configuração do módulo bonding:
  1. mode 0 - balance-rr - Balanceamento entre as interfaces usando o algoritmo Round-Robin. Transmite os pacotes em uma ordem seqüencial, da primeira a última placa de rede agregada ao bonding que estiver disponível. Este modo provê o balanceamento da carga e tolerância as falhas.
  2. mode 1 - active-backup - Apenas uma das interfaces agregadas ao bonding fica ativa. Outra interface se torna ativa se, e somente se, a interface atualmente ativa vier a falhar. O endereço MAC da interface bonding fica visível externamente em apenas uma placa de rede, para evitar confusão no switch. Este modo provê tolerancia à falhas.
  3. mode 2 - balance-xor - Balanceamento usando o algorítimo Xor, com o MAC da placa de rede de destino do pacote, para selecionar a interface de rede que será utilizada. O bonding ultilizará sempre a mesma placa de rede para cada endereço MAC de destino. Este modo provê o balanceamento da carga e tolerancia à falhas.
  4. mode 3 - broadcast - Transmissão dos pacotes utilizando o conceito de broadcast. Os pacotes são transmitidos em todas as interfaces agregadas ao bonding. Este modo provê tolerancia à falhas.
  5. mode 4 - 802.3ad - Agregação de links dinamicamente. Criação de grupos de agregações que possuem a mesma velocidade e definições de comunicação (duplex). Transmite e recebe dados em todas as interfaces do grupo. Prerequisitos: 1) Suporte ao Ethtool para obeter as informações de velocidade e definições de comunicação (duplex) de cada placa de rede. 2) Switch com suporte aos padrões IEEE 802.3ad e agregação dinâmica de links.
  6. mode 5 - balance-tlb - Balanceamento de carga de transmissão adaptativa. Não requer switch com características especificas. O tráfego de saída é distribuido de acordo com a capacidade e o uso atual de cada placa de rede agregada ao bonding. O tráfego de entrada é recebido pela placa de rede atualmente em uso. Se a placa de rede que está recebendo dados vier a falhar, outra placa de rede assume seu MAC, e passa a receber os dados em seu lugar. Prerequisitos: 1) Suporte ao Ethtool para obeter as informações de velocidade de cada placa de rede.
  7. mode 6 - balance-alb - Balanceamento de carga adaptativo para transmissão e recebimento de informações para o protocolo IPV4. Não requer switch com características especificas. O balanceamento da carga é feito utilizando negociações ARP interceptadas pelo driver bonding. Prerequisitos: 1) Suporte ao Ethtool para obeter as informações de velocidade de cada placa de rede. 2) Driver de rede com suporte à alteração do endereço MAC da placa com a mesma em uso.
  • miimon - Especifica a frequência de monitorização MII link em milissegundos. Isto determina quantas vezes o estado do link de cada slave é inspecionados para falhas de link. Um valor de zero desativa MII monitoramento de links. Um valor de 100 é um bom ponto de partida.
Vamos listar as interfaces de rede
mii-tool   eth0: no autonegotiation, 1000baseT-FD flow-control, link ok  eth1: no autonegotiation, 1000baseT-FD flow-control, link ok  eth2: no autonegotiation, 1000baseT-FD flow-control, link ok
Agora vamos configurar o bonding, podemos deixar o arquivo como abaixo, não precisamos configurar a interface eth0 e eth1 somente a interface bond0 no meu caso ;)
vim /etc/network/interfaces  #Interface de Loopback  auto lo  iface lo inet loopback     #Interface Interna  auto eth0  iface eth0 inet static          address 10.101.0.25          netmask 255.255.255.0          network 10.101.0.0          broadcast 10.101.0.255     #Interface do bonding  auto bond0          iface bond0 inet static          address 10.101.0.23          netmask 255.255.255.0          network 10.101.0.0          gateway 10.101.0.254          bond-slaves eth1 eth2
Agora vamos reiniciar o servidor para testarmos, pois como vamos tirar a configuração de alguma outra interface e subir ela em conjunto o sistema se perde o mais fácil é reiniciar
reboot
Agora vamos visualizar as interfaces com o mii-tool
mii-tool   eth0: no autonegotiation, 1000baseT-FD flow-control, link ok  eth1: no autonegotiation, 1000baseT-FD flow-control, link ok  eth2: no autonegotiation, 1000baseT-FD flow-control, link ok
Agora vamos visualizar o status das interfaces
ip link show  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN       link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000      link/ether 08:00:27:3f:b0:b8 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 08:00:27:9d:8e:f7 brd ff:ff:ff:ff:ff:ff 4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 08:00:27:ff:cd:7c brd ff:ff:ff:ff:ff:ff 5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 08:00:27:ff:cd:7c brd ff:ff:ff:ff:ff:ff
Vamos Conferir com o ifconfig
ifconfig  bond0     Link encap:Ethernet  Endereço de HW 08:00:27:ff:cd:7c              inet end.: 10.101.0.23  Bcast:10.101.0.255  Masc:255.255.255.0            endereço inet6: fe80::a00:27ff:feff:cd7c/64 Escopo:Link            UP BROADCASTRUNNING MASTER MULTICAST  MTU:1500  Métrica:1            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:65 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:2946 (2.8 KiB)   eth0 Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8 inet end.: 10.101.0.25 Bcast:10.101.0.255 Masc:255.255.255.0 endereço inet6: fe80::a00:27ff:fe3f:b0b8/64 Escopo:Link UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 RX packets:2825 errors:0 dropped:< font colo r="#cc66cc">0 overruns:0 frame:0 TX packets:59 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:207738 (202.8 KiB) TX bytes:12344 (12.0 KiB)   eth2 Link encap:Ethernet Endereço de HW 08:00:27:ff:cd:7c UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:65 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:2946 (2.8 KiB)   lo Link encap:Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina< /font> UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:46 errors:0 dropped:0 overruns:0 frame:0 TX packets:46 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:4578 (4.4 KiB) TX bytes:4578 < span style="font-style: normal">(4.4 KiB)
Agora vamos fazer um teste simples de ping
ping -c 5 10.101.0.23  PING 10.101.0.23 (10.101.0.23) 56(84) bytes of data.  64 bytes from 10.101.0.23: icmp_req=1 ttl=64 time=0.383 ms  64 bytes from 10.101.0.23: icmp_req=2 ttl=64 time=0.383 ms  64 bytes from 10.101.0.23: icmp_req=3 ttl=64 time=0.361 ms  64 bytes from 10.101.0.23: icmp_req=4 ttl=64 time=0.354 ms  64 bytes from 10.101.0.23: icmp_req=5 ttl=64 time=0.353 ms     --- 10.101.0.23 ping statistics ---  5 packets transmitted, 5 received, 0% packet loss, time 3997ms  rtt min/avg/max/mdev = 0.353/0.366/0.383/0.027 ms
Agora vamos desativar uma interface, vou desativar a interface eth1 e vamos ver o status dela
mii-tool   eth0: no autonegotiation, 1000baseT-FD flow-control, link ok  eth1: no autonegotiation, 1000baseT-FD flow-control, no link  eth2: no autonegotiation, 1000baseT-FD flow-control, link ok
Agora vamos efetuar o teste de ping novamente
ping -c 5 10.101.0.23  PING 10.101.0.23 (10.101.0.23) 56(84) bytes of data.  64 bytes from 10.101.0.23: icmp_req=1 ttl=64 time=0.383 ms  64 bytes from 10.101.0.23: icmp_req=2 ttl=64 time=0.352 ms  64 bytes from 10.101.0.23: icmp_req=3 ttl=64 time=0.350 ms  64 bytes from 10.101.0.23: icmp_req=4 ttl=64 time=0.291 ms  64 bytes from 10.101.0.23: icmp_req=5 ttl=64 time=0.239 ms     --- 10.101.0.23 ping statistics ---  5 packets transmitted, 5 received, 0% packet loss, time 3997ms  rtt min/avg/max/mdev = 0.239/0.323/0.383/0.051 ms
Funcionando Agora vamos habilitar a interface novamente, e vamos ver o seu status
mii-tool   eth0: no autonegotiation, 1000baseT-FD flow-control, link ok  eth1: no autonegotiation, 1000baseT-FD flow-control, link ok  eth2: no autonegotiation, 1000baseT-FD flow-control, link ok
Vamos efetuar um teste com ping novamente
ping -c 5 10.101.0.23  PING 10.101.0.23 (10.101.0.23) 56(84) bytes of data.  64 bytes from 10.101.0.23: icmp_req=1 ttl=64 time=0.395 ms  64 bytes from 10.101.0.23: icmp_req=2 ttl=64 time=0.376 ms  64 bytes from 10.101.0.23: icmp_req=3 ttl=64 time=0.359 ms  64 bytes from 10.101.0.23: icmp_req=4 ttl=64 time=0.380 ms  64 bytes from 10.101.0.23: icmp_req=5 ttl=64 time=0.369 ms     --- 10.101.0.23 ping statistics ---  5 packets transmitted, 5 received, 0% packet loss, time 3997ms  rtt min/avg/max/mdev = 0.359/0.375/0.395/0.027 ms
Agora vamos desativar uma interface, vou desativar a interface eth2 e vamos ver o status dela
mii-tool   eth0: no autonegotiation, 1000baseT-FD flow-control, link ok  eth1: no autonegotiation, 1000baseT-FD flow-control, link ok  eth2: no autonegotiation, 1000baseT-FD flow-control, no link
Agora vamos efetuar mais um teste com o ping
ping -c 5 10.101.0.23  PING 10.101.0.23 (10.101.0.23) 56(84) bytes of data.  64 bytes from 10.101.0.23: icmp_req=1 ttl=64 time=0.416 ms  64 bytes from 10.101.0.23: icmp_req=2 ttl=64 time=0.342 ms  64 bytes from 10.101.0.23: icmp_req=3 ttl=64 time=0.354 ms  64 bytes from 10.101.0.23: icmp_req=4 ttl=64 time=0.350 ms  64 bytes from 10.101.0.23: icmp_req=5 ttl=64 time=0.377 ms     --- 10.101.0.23 ping statistics ---  5 packets transmitted, 5 received, 0% packet loss, time 3997ms  rtt min/avg/max/mdev = 0.342/0.367/0.416/0.036 ms
Como pode ser notado temos a nossa redundância com interfaces de Rede ;)

Fonte:http://www.douglas.wiki.br/doku.php?id=instalando_e_configurando_bonding_no_debian_squeeze





0 comentários:

Postar um comentário

Veja outras Publicações