BONDING: Aumente a disponibilidade e velocidade da sua rede com a combinação de interfaces
Descubra como configurar o BONDING para garantir alta disponibilidade, redundância e maior performance nos servidores, otimizando a infraestrutura de rede.
Introdução ao BONDING: Otimizando a Disponibilidade e Velocidade de Redes
Em ambientes de servidores, garantir alta disponibilidade, redundância e velocidade é essencial para manter a operação contínua e eficiente. O BONDING, uma técnica que combina duas ou mais interfaces de rede para trabalharem como uma única, surge como uma solução poderosa para esses desafios. Ao implementar o BONDING, os administradores de rede podem distribuir o tráfego de dados de forma equilibrada, aumentar a capacidade de transmissão e garantir que, mesmo em caso de falha de uma interface, o sistema continue funcionando sem interrupções. Neste laboratório, exploraremos como configurar e utilizar o BONDING para otimizar sua infraestrutura de rede.
Tabela 1 – Tabela modo de operações Bonding
<table width="758"><tbody><tr><td width="56"><strong>Modo</strong></td><td width="86"><strong>Política</strong></td><td width="359"><strong>Funcionamento</strong></td><td width="85"><strong>Tolerância a erros</strong></td><td width="113"><strong>Balanceamento de carga</strong></td></tr><tr><td width="56">0</td><td width="86">Balance-rr</td><td width="359">Transmite os pacotes de forma sequencial do primeiro ao último slave. Este é o único modo que permite que o tráfego seja distribuído simultaneamente entre as interfaces. (ex. duas placas 10/1000 serão uma única 2x(10/1000), ou seja, 2Gbit max);</td><td width="85"><strong>No</strong></td><td width="113"><span><strong>Yes</strong></span></td></tr><tr><td width="56">1</td><td width="86">Active-Backup</td><td width="359">Apenas um slave fica ativo, os outros ficam em modo standby e só é ativo caso falhe o outro slave;</td><td width="85"><span><strong>Yes</strong></span></td><td width="113"><strong>No</strong></td></tr><tr><td width="56">2</td><td width="86">Balance-xor</td><td width="359">Transmite os pacotes adotando uma política baseado em hashs, provê praticamente as mesmas funcionalidades do modo 0. É possível configurar políticas alternativas, modificando o parâmetro xmit_hash_policy ao carregar o módulo. A política padrão é baseada em MACs (origem/destino XOR’d).</td><td width="85"><span><strong>Yes</strong></span></td><td width="113"><span><strong>Yes</strong></span></td></tr><tr><td width="56">3</td><td width="86">Broadcast</td><td width="359">Transmite todos os pacotes em todos os slaves;</td><td width="85"><span><strong>Yes</strong></span></td><td width="113"><strong>No</strong></td></tr><tr><td width="56">4</td><td width="86">Dynamic Link Aggregation</td><td width="359">Agregação dinâmica de links. É necessário um switch que suporte 802.3ad e que o ethtool consiga configurar os parâmetros speed e duplex em todos os slaves. É necessário também alguma configuração extra no switch;</td><td width="85"><span><strong>Yes</strong></span></td><td width="113"><span><strong>Yes</strong></span></td></tr><tr><td width="56">5</td><td width="86">Transmit Load Balancing (TLB)</td><td width="359">O tráfego de saída é distribuído de acordo com a carga em cada slave. O tráfego de entrada utiliza um único slave, se ele falhar outro assume e clona o MAC do slave que estava ativo;</td><td width="85"><span><strong>Yes</strong></span></td><td width="113"><span><strong>Yes</strong></span></td></tr><tr><td width="56">6</td><td width="86">Adaptive Load Balancing (ALB)</td><td width="359">O <em>Adaptative Load Balancing</em> provê o <em>Transmit Load Balancing</em> e o <em>Receive Load Balancing</em> para o IPv4 por intermédio de negociação ARP. Não requer mudanças no switch, mas se faz necessário a troca do endereço MAC enquanto este estiver aberto.</td><td width="85"><span><strong>Yes</strong></span></td><td width="113"><span><strong>Yes</strong></span></td></tr></tbody></table>
Pré-Requisitos
Neste Lab iremos configurar o netwok bonding no RHEL 7. Sendo necessário:
- Duas placas de rede;
- Carregar o modulo bonding no Linux, por meio do comando: modprobe bonding.
Configurando o modo Adaptive Load Balancing (ALB)
Para certificarmos das informações do módulo bonding, use o seguinte comando:
[root@lab01 ~]# modinfo bondingCriação do arquivo de interface Bond **
**
Será criado o arquivo de configuração (ifcfg-bond0) dentro da pasta “/etc/sysconfig/network-scripts/”
[root@lab01 network-scripts]# vim ifcfg-bond0
DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.249.77
PREFIX=24
GATEWAY=192.168.249.1
DNS1=192.168.249.1
DNS2=8.8.8.8
DNS3=192.168.249.151
BONDING_OPTS="mode=6 miimon=100"Considerações:
BONDING_MASTER=yes > Determina a interface como Master
BONDING_OPTS=”mode=6 miimon=100″ > Descreve o modo a ser utilizado e diz ao kernel que o link será inspecionado a cada 100 milissegundos.
Ajustar as interfaces de rede a serem utilizadas no bonding **
**
[root@lab01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp2s0
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp2s0
ONBOOT=yes
HWADDR="00:e0:4c:44:04:00"
MASTER=bond0
SLAVE=yes[root@lab01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp3s0
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp3s0
ONBOOT=yes
HWADDR="88:d7:f6:65:86:50"
MASTER=bond0
SLAVE=yesConsiderações:
Como podemos verificar nas configurações acima, foram adicionadas as linhas:
MASTER=bond0 > Indica qual a interface Master
SLAVE=yes > determina esta interface como Slave
Nota-se que é necessário o endereço MAC, pois será utilizado pelo modo escolhido (Adaptive Load Balancing) Ajustar as interfaces de rede a serem utilizadas no bonding
**
** Reiniciar o serviço Network
[root@lab01 ~]# systemctl restart networkTestes e verificação da interface bond **
**
[root@lab01 ~]# ifconfigbond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.249.77 netmask 255.255.255.0 broadcast 192.168.249.255
inet6 fe80::2e0:4cff:fe44:400 prefixlen 64 scopeid 0x20<link>
ether 00:e0:4c:44:04:00 txqueuelen 0 (Ethernet)
RX packets 914260 bytes 139186447 (132.7 MiB)
RX errors 0 dropped 269464 overruns 0 frame 0
TX packets 678716 bytes 55386742 (52.8 MiB)
TX errors 0 dropped 4 overruns 0 carrier 0 collisions 0
enp2s0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:e0:4c:44:04:00 txqueuelen 1000 (Ethernet)
RX packets 543073 bytes 69170037 (65.9 MiB)
RX errors 0 dropped 489 overruns 0 frame 0
TX packets 269731 bytes 16380796 (15.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp3s0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 88:d7:f6:65:86:50 txqueuelen 1000 (Ethernet)
RX packets 398917 bytes 73687770 (70.2 MiB)
RX errors 0 dropped 268046 overruns 0 frame 0
TX packets 410337 bytes 39228964 (37.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Loopback Local)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:73:0d:55 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@lab01 ~]# cat /proc/net/bonding/bond0[root@lab01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: enp2s0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: enp2s0
MII Status: up
Speed: 100 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:e0:4c:44:04:00
Slave queue ID: 0
Slave Interface: enp3s0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 88:d7:f6:65:86:50
Slave queue ID: 0[root@lab01 ~]# ifdown enp2s0[root@lab01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: enp3s0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: enp3s0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 88:d7:f6:65:86:50
Slave queue ID: 0
Referências
Oracle Technology NetworkArtigosGrid Computing:https://www.oracle.com/technetwork/pt/articles/grid/grid-infrastructure-12cr1-parte-2-2099500-ptb.html
Configure NIC (Network Interface Card) bonding in CentOS 7 / RHEL 7:https://www.linuxtechi.com/configure-nic-bonding-in-centos-7-rhel-7/
RHEL Networking Guide: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/ch-configure_network_bonding
Atualizado em 16 de setembro de 2024.