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.

  1. 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.

  1. 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.

  1. 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-bond0
DEVICE=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-eth0
DEVICE=eth0  
TYPE=Ethernet  
ONBOOT=yes  
NM_CONTROLLED=no  
MASTER=bond0  
SLAVE=yes 
vi ifcfg-eth1
DEVICE=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.conf
alias 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 restart
Desligando 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.

ifconfig
bond0 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/bond0
Driver 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.

  1. 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.80
ping 172.20.43.110
PING 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 eth0
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 (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/bond0
Driver 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/bond0
Driver 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 eth1
cat /proc/net/bonding/bond0
Driver 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.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.