Olá Pessoal.
Um recurso bastante comum na interconexão de dispositivos da infraestrutura e também de servidores em redes de computadores é a agregação de links (ethernet bonding), técnica que permite a criação de uma interface lógica através do acoplamento de dois ou mais canais físicos. O resultado é que o novo canal lógico pode ter maior velocidade através da soma das vazões das interfaces físicas (load balancing), além de aumentar a disponibilidade da conexão por causa dos canais físicos redundantes (failover).
Assim como nos artigos anteriores, estou considerando que o servidor está instalado com a distribuição Debian GNU/Linux (ou seus derivados, como o Ubuntu). A primeira etapa consiste na instalação do pacote denominado ifenslave para que, posteriormente, as configurações de rede do Linux ofereçam suporte à agregação de links. Essa terafa é simples e rápida através do APT:
apt-get install ifenslave
Agora basta editar o arquivo de configuração das interfaces de rede que fica localizado em "/etc/network/interfaces". Criaremos uma nova interface lógica denominada bond0 que estará vinculada às interfaces físicas eth0 e eth1, conforme destacado em amarelo nas configurações abaixo
###--- em /etc/network/interfaces
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto bond0
iface bond0 inet static
address 192.168.0.1
netmask 255.255.255.0
slaves eth0 eth1
bond_mode balance-rr
bond_miimon 100
bond_downdelay 200
bond_updelay 200
Em termos de configuração, é simples assim! É interessante destacar que existem vários modos de operação na agregação de links para prover serviços como disponibilidade (failover) ou balanceamento de carga (load balancing). Na configuração do campo bond_mode (destaque em azul) é possível informar os números ou nomes (entre parênteses) dos modos de operação explicados na sequência.
- modo 00 (balance-rr) - trata-se da opção padrão em que os pacotes são transmitidos sequencialmente de maneira alternada (round-robin) entre todas as interfaces físicas, provendo ambas as funcionalidades de load balance e failover;
- modo 01 (active-backup) - nesse modo de operação apenas uma interface física é utilizada para transmissão de pacotes, sendo que as demais ficam em espera (stand-by) até que a interface ativa venha a cair, provendo apenas a funcionalidade de failover;
- modo 02 (balance-xor) - os pacotes são transmitidos em todas as interfaces físicas com base nos resultados de uma operação xor (ou exclusivo) entre os endereços físicos (MAC) de origem e destino, provendo ambas as funcionalidades de load balancing e failover;
- modo 03 (broadcast) - transmite repetidamente uma cópia dos pacotes em todas as interfaces físicas, provendo apenas a funcionalidade de failover;
- modo 04 (802.3ad) - utiliza o protocolo dinâmico LACP (IEEE 802.3ad) para negociar automaticamente com o dispositivo vizinho (diretamente conectado) se é possível criar uma agregação lógica das interfaces físicas;
- modo 05 (balance-tlb) - trata-se de uma forma especial de balanceamento de carga que não depende de nenhuma configuração no switch diretamente conectado, onde o tráfego de saída é distribuído entre as interfaces físicas (com base na carga de cada uma) e o tráfego de entrada chega em uma única interface ativa;
- modo 06 (balance-alb) - trata-se de uma forma especial de balanceamento de carga que não depende de nenhuma configuração no switch diretamente conectado, onde ambos os tráfegos de saída e entrada são distribuídos entre as interfaces físicas;
A configuração da agregação de link no switch também deve ser devidamente realizada, dependendo do modo utilizado. A agregação lógica de links físicos em switches Cisco Catalyst é denominada Port-Channel (ou Ether-Channel) e bastante simples de ser realizada manualmente, por exemplo através dos comandos abaixo para criar uma nova interface lógica po1 (f0/1 + f0/2).
Switch(config)# interface range f0/1 - 2
Switch(config-if)# channel-group 1 mode on
Obs.: Caso o Linux tenha sido configurado com bond_mode 802.3ad (modo 4), recomendo a leitura abaixo para configuração do protocolo dinâmico LACP (IEEE 802.3ad) no switch.
http://www.cisco.com/c/en/us/td/docs/ios/12_2sb/feature/guide/sbcelacp.html#wp1053817
Façam seus testes...
Samuel.
Olá, interessante a dica, este bonding funcionaria num servidor com 2 placas de rede, uma conectada num modem GVT por exemplo e a outra placa de rede na NET?
ResponderExcluirComo ele saberia se um link caiu para assumir a outra? Ele realiza testes de ping, por exemplo?
obrigado
Não, agregação de link (camada 2) e conexões multi-homed à Internet (camada 3) são duas coisas distintas. Você não pode usar o recurso de agregação de link (camada 2) com dois IPs distintos (camada 3) na mesma interface lógica. Agregação de link é um recurso de camada dois para prover redundância e balanceamento na CONEXÃO FÍSICA ENTRE DISPOSITIVOS VIZINHOS. Para tratar dois links de Internet diferentes você precisa configurar políticas de roteamento (ou features como VRRP, HSRP, GLBP, etc). O que você pode fazer é agregar links em cada uma das conexões individuais, ou seja, você continuaria a ter duas conexões layer-3, mas cada uma delas com agregações em layer-2.
ExcluirPara ter conexões redundantes com a Internet (layer-3), recomendo outro artigo:
Excluirhttp://labcisco.blogspot.com.br/2013/01/rotas-flutuantes-no-ambiente-corporativo.html
Olá Samuel, obrigado pela resposta, entendi melhor o uso do bonding agora, Abraços
ExcluirMuito bom! Vi em https://help.ubuntu.com/community/UbuntuBonding que e preciso a configuração do arquivo “/etc/modules-load/modules.conf”
ResponderExcluir# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
loop
lp
rtc
bonding
Realmente se faz necessário esta configuração?