Rede · 11 min read · Nov 30, 2025
Como configurar a agregação de rede de failover e alta disponibilidade no Linux
Este tutorial explica como configurar a agregação de rede em um servidor Linux. Antes de começar, deixe-me explicar o que é a agregação de rede e o que ela faz. Em um ambiente Windows, a agregação de rede é chamada de network teaming, esta é uma funcionalidade que ajuda qualquer arquitetura de servidor a fornecer alta disponibilidade e failover em cenários onde um dos principais cabos ethernet apresenta uma falha ou está mal configurado.
Normalmente, é uma boa prática e uma funcionalidade indispensável a ser implementada ao configurar um servidor para fins de produção. Embora essa funcionalidade possa ser realizada em uma configuração de ambiente Linux, você deve primeiro confirmar com seu administrador de rede para garantir que os switches que estão conectados ao seu servidor têm suporte para agregação de rede. Existem vários modos de agregação que podem ser implementados em seu ambiente de servidor. Abaixo está uma lista dos modos disponíveis e o que eles fazem:
- Balance-rr
Este modo fornece recursos de balanceamento de carga e tolerância a falhas (failover) por meio da política de round-robin. Isso significa que ele transmite pacotes em ordem sequencial do primeiro escravo disponível até o último. - Active-Backup
Este modo fornece recursos de tolerância a falhas por meio da política de active-backup. Isso significa que, uma vez que a agregação ethernet está ativa, apenas 1 dos escravos ethernet está ativo. O outro escravo ethernet só se tornará ativo se e somente se o escravo ativo atual falhar. Se você escolher este modo, notará que o endereço MAC da agregação é visível externamente em apenas um adaptador de rede. Isso é para evitar confundir o switch. - Balance-xor
Este modo fornece balanceamento de carga e tolerância a falhas. Ele transmite com base na política de hash de transmissão selecionada. Políticas de transmissão alternativas podem ser selecionadas por meio da opção xmit_hash_policy. - Broadcast
Este modo fornece apenas tolerância a falhas. Ele transmite tudo em todas as interfaces ethernet escravas. - 802.3ad
Este modo fornece balanceamento de carga e tolerância a falhas. Ele cria um grupo de agregação que compartilha as mesmas configurações de velocidade e duplex. Ele utiliza todas as interfaces ethernet escravas no agregador ativo, é baseado na especificação 802.3ad. Para implementar este modo, o ethtool deve suportar os drivers base para recuperar a velocidade e o modo duplex de cada escravo. O switch também deve suportar agregação de link dinâmica. Normalmente, isso requer a intervenção de um Engenheiro de Rede para configuração detalhada. - Balance-TLB
Este modo fornece capacidades de balanceamento de carga, como o nome TLB representa transmit load balancing. Para este modo, se a configuração tlb_dynamic_lb = 1, então o tráfego de saída é distribuído de acordo com a carga atual em cada escravo. Se a configuração tlb_dynamic_lb = 0, então o balanceamento de carga é desativado, mas a carga é distribuída apenas usando a distribuição hasd. Para este modo, o ethtool deve suportar os drivers base para recuperar a velocidade de cada escravo. - Balance-ALB
Este modo fornece capacidades de balanceamento de carga, como o nome TLB representa adaptive load balancing. Semelhante ao balance-tlb, exceto que tanto o tráfego de envio quanto o de recebimento estão agregados. Ele recebe balanceamento de carga alcançando a negociação ARP. O driver de agregação intercepta as Respostas ARP enviadas pelo sistema local em seu caminho de saída e sobrescreve o endereço de hardware de origem com o endereço de hardware único de um dos escravos na agregação. Para este modo, o ethtool deve suportar os drivers base para recuperar a velocidade de cada escravo.
- Nota Preliminar
Para este tutorial, estou usando o Oracle Linux 6.4 na versão de 32 bits. Observe que, embora a configuração seja feita no Oracle Linux, os passos também são aplicáveis ao CentOS e Red Hat OS distro e a sistemas de 64 bits também. O resultado final da nossa configuração de exemplo mostrará que a conexão feita ao nosso servidor de agregação permanecerá conectada, mesmo que eu tenha desativado 1 das redes ethernet. Neste exemplo, mostrarei como aplicar a agregação de rede usando o modo 1, que é a política de active-backup.
- Fase de Instalação
Para este processo, não há necessidade de instalação. Uma instalação padrão do Linux em um servidor inclui todos os pacotes necessários para uma configuração de agregação de rede.
- Fase de Configuração
Antes de começarmos a configuração, primeiro precisamos garantir que temos pelo menos 2 interfaces ethernet configuradas em nosso servidor. Para verificar isso, vá para a pasta de configuração de rede e liste as interfaces ethernet disponíveis. Abaixo estão os passos:
cd /etc/sysconfig/network-scripts/
ls *ifcfg*eth*O resultado é:
ifcfg-eth0 ifcfg-eth1 Observe que atualmente temos 2 interfaces ethernet configuradas em nosso servidor, que são ETH0 e ETH1.
Agora vamos configurar uma interface de agregação chamada BOND0. Esta interface será uma interface ethernet virtual que contém as interfaces ethernet físicas de ETH0 e ETH1. Abaixo estão os passos:
vi ifcfg-bond0DEVICE=bond0
ONBOOT=yes
MASTER=yes
IPADDR=172.20.43.110
NETMASK=255.255.255.0
GATEWAY=172.20.43.1
BONDING_OPTS="mode=1 miimon=100"
TYPE=Ethernet Então execute:
ls *ifcfg*bon*O resultado é:
ifcfg-bond0 Isso é tudo. Observe que dentro da interface BOND0, incluí um endereço IP. Este endereço IP será o único endereço IP conectado ao nosso servidor. Para prosseguir no processo, precisamos modificar a interface ethernet física relacionada à interface BOND0. Abaixo estão os passos:
vi ifcfg-eth0DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes vi ifcfg-eth1DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes Pronto. Fizemos a modificação das interfaces ETH0 e ETH1. Observe que removemos o endereço IP dentro de ambas as interfaces e adicionamos MASTER = bond0. Isso é necessário para validar que ambas as interfaces serão interfaces virtuais dedicadas à interface ethernet BOND0.
Para prosseguir com a configuração. Vamos criar um arquivo de configuração de agregação chamado bonding.conf em /etc/modprobe.d. Abaixo estão os passos:
vi /etc/modprobe.d/bonding.confalias bond0 bonding
options bond0 mode=1 miimon=100 modprobe bonding Com base na configuração acima, configuramos um módulo de agregação usando a interface BOND0. Também atribuímos a configuração de agregação para usar o modo = 1, que é a política de active-backup. A opção miimon = 100 representa a frequência de monitoramento para nosso servidor de agregação monitorar o status da interface em milissegundos. Conforme descrito acima, este modo fornecerá recursos de tolerância a falhas na configuração de rede do servidor.
Como tudo está configurado, vamos reiniciar o serviço de rede para carregar a nova configuração. Abaixo estão os passos:
service network restartDesligando a interface eth0: [ OK ]
Desligando a interface eth1: [ OK ]
Desligando a interface de loopback: [ OK ]
Ativando a interface de loopback: [ OK ]
Ativando a interface bond0: [ OK ] Excelente, agora carregamos a nova configuração que fizemos acima. Você notará que a nova interface chamada BOND0 será exibida na lista de rede. Você também notará que não há endereço IP atribuído às interfaces ETH0 e ETH1, apenas a interface BOND0 mostra o IP.
ifconfigbond0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:172.20.43.110 Bcast:172.20.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:1723 errors:0 dropped:0 overruns:0 frame:0
TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:147913 (144.4 KiB) TX bytes:108429 (105.8 KiB) eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (101.0 KiB) TX bytes:105439 (102.9 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:632 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44487 (43.4 KiB) TX bytes:3288 (3.2 KiB) 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:16436 Metric:1
RX packets:208 errors:0 dropped:0 overruns:0 frame:0
TX packets:208 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:18080 (17.6 KiB) TX bytes:18080 (17.6 KiB) Você também pode verificar o status da agregação através deste comando:
cat /proc/net/bonding/bond0Driver de Agregação de Canal Ethernet: v3.6.0 (26 de setembro de 2009) Modo de Agregação: tolerância a falhas (active-backup)
Escravo Primário: Nenhum
Escravo Ativo Atualmente: eth0
Status MII: up
Intervalo de Polling MII (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0 Interface Escrava: eth0
Status MII: up
Velocidade: 1000 Mbps
Duplex: full
Contagem de Falhas de Link: 0
Endereço HW permanente: 08:00:27:61:e4:88
ID da fila escrava: 0 Interface Escrava: eth1
Status MII: up
Velocidade: 1000 Mbps
Duplex: full
Contagem de Falhas de Link: 0
Endereço HW permanente: 08:00:27:c8:46:40
ID da fila escrava: 0 Observe que, acima, conseguimos converter com sucesso as interfaces ETH0 e ETH1 em uma configuração de agregação usando o modo active-backup. Também foi declarado que agora o servidor está usando a interface ETH0, enquanto ETH1 será a interface de backup.
- Fase de Teste
Agora que tudo está configurado como esperado. Vamos fazer um teste simples para garantir que a configuração que fizemos está correta. Para este teste, faremos login em um novo servidor (ou desktop Linux) e começaremos a pingar nosso servidor de agregação para ver se há uma conexão intermitente durante o teste. Abaixo estão os passos:
login as: root
[email protected]'s password:
Último login: Qua Set 14 12:50:15 2016 de 172.20.43.80ping 172.20.43.110PING 172.20.43.110 (172.20.43.110) 56(84) bytes de dados.
64 bytes de 172.20.43.110: icmp_seq=1 ttl=64 time=0.408 ms
64 bytes de 172.20.43.110: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes de 172.20.43.110: icmp_seq=3 ttl=64 time=0.415 ms
64 bytes de 172.20.43.110: icmp_seq=4 ttl=64 time=0.427 ms
64 bytes de 172.20.43.110: icmp_seq=5 ttl=64 time=0.554 ms
64 bytes de 172.20.43.110: icmp_seq=6 ttl=64 time=0.443 ms
64 bytes de 172.20.43.110: icmp_seq=7 ttl=64 time=0.663 ms
64 bytes de 172.20.43.110: icmp_seq=8 ttl=64 time=0.961 ms
64 bytes de 172.20.43.110: icmp_seq=9 ttl=64 time=0.461 ms
64 bytes de 172.20.43.110: icmp_seq=10 ttl=64 time=0.544 ms
64 bytes de 172.20.43.110: icmp_seq=11 ttl=64 time=0.412 ms
64 bytes de 172.20.43.110: icmp_seq=12 ttl=64 time=0.464 ms
64 bytes de 172.20.43.110: icmp_seq=13 ttl=64 time=0.432 ms Durante esse tempo, vamos voltar ao nosso servidor de agregação e desligar a interface ethernet ETH0. Abaixo estão os passos:
ifconfig eth0eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (201.0 KiB) TX bytes:105439 (122.9 KiB) ifdown eth0 Agora desligamos os serviços para a interface de rede ETH0. Vamos verificar o status da agregação. Abaixo estão os passos:
cat /proc/net/bonding/bond0Driver de Agregação de Canal Ethernet: v3.6.0 (26 de setembro de 2009) Modo de Agregação: tolerância a falhas (active-backup)
Escravo Primário: Nenhum
Escravo Ativo Atualmente: eth1
Status MII: up
Intervalo de Polling MII (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0 Interface Escrava: eth1
Status MII: up
Velocidade: 1000 Mbps
Duplex: full
Contagem de Falhas de Link: 0
Endereço HW permanente: 08:00:27:c8:46:40
ID da fila escrava: 0 Você notará que agora a interface ETH0 não existe mais no status de agregação. Durante esse tempo, vamos voltar ao servidor de teste anterior e verificar o ping contínuo para nosso servidor de agregação.
64 bytes de 172.20.43.110: icmp_seq=22 ttl=64 time=0.408 ms
64 bytes de 172.20.43.110: icmp_seq=23 ttl=64 time=0.402 ms
64 bytes de 172.20.43.110: icmp_seq=24 ttl=64 time=0.437 ms
64 bytes de 172.20.43.110: icmp_seq=25 ttl=64 time=0.504 ms
64 bytes de 172.20.43.110: icmp_seq=26 ttl=64 time=0.401 ms
64 bytes de 172.20.43.110: icmp_seq=27 ttl=64 time=0.454 ms
64 bytes de 172.20.43.110: icmp_seq=28 ttl=64 time=0.432 ms
64 bytes de 172.20.43.110: icmp_seq=29 ttl=64 time=0.434 ms
64 bytes de 172.20.43.110: icmp_seq=30 ttl=64 time=0.411 ms
64 bytes de 172.20.43.110: icmp_seq=31 ttl=64 time=0.554 ms
64 bytes de 172.20.43.110: icmp_seq=32 ttl=64 time=0.452 ms
64 bytes de 172.20.43.110: icmp_seq=33 ttl=64 time=0.408 ms
64 bytes de 172.20.43.110: icmp_seq=34 ttl=64 time=0.491 ms Ótimo, agora você verá que, mesmo que tenhamos desligado a interface ETH0, ainda conseguimos pingar e acessar nosso servidor de agregação. Agora vamos fazer mais um teste. Ligue novamente a interface ETH0 e desligue a interface ETH1.
ifup eth0
cat /proc/net/bonding/bond0Driver de Agregação de Canal Ethernet: v3.6.0 (26 de setembro de 2009) Modo de Agregação: tolerância a falhas (active-backup)
Escravo Primário: Nenhum
Escravo Ativo Atualmente: eth1
Status MII: up
Intervalo de Polling MII (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0 Interface Escrava: eth1
Status MII: up
Velocidade: 1000 Mbps
Duplex: full
Contagem de Falhas de Link: 0
Endereço HW permanente: 08:00:27:c8:46:40
ID da fila escrava: 0 Interface Escrava: eth0
Status MII: up
Velocidade: 1000 Mbps
Duplex: full
Contagem de Falhas de Link: 0
Endereço HW permanente: 08:00:27:61:e4:88
ID da fila escrava: 0 Como a interface ETH0 já estava ativa, vamos desligar a interface ETH1.
ifdown eth1cat /proc/net/bonding/bond0Driver de Agregação de Canal Ethernet: v3.6.0 (26 de setembro de 2009) Modo de Agregação: tolerância a falhas (active-backup)
Escravo Primário: Nenhum
Escravo Ativo Atualmente: eth0
Status MII: up
Intervalo de Polling MII (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0 Interface Escrava: eth0
Status MII: up
Velocidade: 1000 Mbps
Duplex: full
Contagem de Falhas de Link: 0
Endereço HW permanente: 08:00:27:61:e4:88
ID da fila escrava: 0 Agora vamos voltar ao servidor de teste e verificar o que acontece com o ping contínuo feito ao nosso servidor de agregação.
64 bytes de 172.20.43.110: icmp_seq=84 ttl=64 time=0.437 ms
64 bytes de 172.20.43.110: icmp_seq=85 ttl=64 time=0.504 ms
64 bytes de 172.20.43.110: icmp_seq=86 ttl=64 time=0.401 ms
64 bytes de 172.20.43.110: icmp_seq=87 ttl=64 time=0.454 ms
64 bytes de 172.20.43.110: icmp_seq=88 ttl=64 time=0.432 ms
64 bytes de 172.20.43.110: icmp_seq=89 ttl=64 time=0.434 ms
64 bytes de 172.20.43.110: icmp_seq=90 ttl=64 time=0.411 ms
64 bytes de 172.20.43.110: icmp_seq=91 ttl=64 time=0.420 ms
64 bytes de 172.20.43.110: icmp_seq=92 ttl=64 time=0.487 ms
64 bytes de 172.20.43.110: icmp_seq=93 ttl=64 time=0.551 ms
64 bytes de 172.20.43.110: icmp_seq=94 ttl=64 time=0.523 ms Aplausos! Conseguimos configurar e provar que nosso servidor de agregação consegue atender ao cenário de recuperação de desastres em uma condição de failover de rede.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.