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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:ff3: 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:TX packets:65 errors:0 dropped:0 overruns:0 frame:0
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