Linux link agregation (bonding) múltiplas interfaces - Load Balance
Introdução
Configurar um ambiente linux com múltiplas interfaces para alta disponibilidade e performance. Não é necessário nenhuma configuração de switche como é o caso do etherchannel.
Ambiente
Sistema operacional
# lsb_release -a Distributor ID: CentOS Description: CentOS release 6.4 (Final) Release: 6.4 Codename: Final
Interfaces de rede instaladas
# lspci | grep -i ether 01:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express 02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express
Esquema do ambiente
Switch Servidor Linux +--+ +-----------------------------------------+ | o | | | o------------o eth0 (SLAVE) | | o / | | o bond0 <--- Bonding, mode=balance-alb miimon=100 | | o \ | | o------------o eth1 (SLAVE) | | o | | +--+ +-----------------------------------------+
Configuração dos arquivos das interfaces
Arquivos master bond0
- /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 IPADDR=192.168.1.234 NETWORK=192.168.1.0 NETMASK=255.255.255.0 GATEWAY=192.168.1.15 USERCTL=no BOOTPROTO=none ONBOOT=yes
Arquivo slave eth0
- /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none
Arquivo slavve eth1
- /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none
Configurando o sistema para carregar o driver
No CentOS versão 6.x o diretório /etc/modprobe.d mantém os drivers separados por arquivo, nas versões anteriores basta adicionar as linhas deste arquivo no /etc/modprobe.conf
# cat /etc/modprobe.d/bonding.conf alias bond0 bonding options bond0 mode=balance-alb miimon=100
Testando a configuração
Ao carregar o driver perdi a conexão ao servidor via rede, foi necessário executar o service network restart diretamente da console e a comunicação se estabeleceu normalmente, se tiver remoto sugiro: executar o comando em sequencia.
# modprobe bonding; service network restart
Verificando os endereços
Tive que colocar a configuração de um segundo IP por causa da configuração do vmware, que estava fazendo a pesquisa por eles:
# ifconfig bond0:1 192.168.1.196/24 up
Arquivo de configuração para o startup automático do alias definido acima
- /etc/sysconfig/network-scripts/ifcfg-bond0:1
DEVICE=bond0:1 BOOTPROTO=none ONBOOT=yes NETWORK=192.168.1.0 NETMASK=255.255.255.0 IPADDR=192.168.1.196 USERCTL=no
Verificando os endereços configurados
# ifconfig -a
bond0 Link encap:Ethernet Endereço de HW 00:1E:C9:28:25:D2
inet end.: 192.168.1.234 Bcast:192.168.1.255 Masc:255.255.255.0
endereço inet6: fe80::21e:c9ff:fe28:25d2/64 Escopo:Link
UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
RX packets:827709 errors:0 dropped:0 overruns:0 frame:0
TX packets:2070826 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:465503962 (443.9 MiB) TX bytes:2793744553 (2.6 GiB)
bond0:1 Link encap:Ethernet Endereço de HW 00:1E:C9:28:25:D2
inet end.: 192.168.1.196 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
eth0 Link encap:Ethernet Endereço de HW 00:1E:C9:28:25:D2
UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
RX packets:641275 errors:0 dropped:0 overruns:0 frame:0
TX packets:2047683 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:250440669 (238.8 MiB) TX bytes:2792189992 (2.6 GiB)
IRQ:16
eth1 Link encap:Ethernet Endereço de HW 00:1E:C9:28:25:D3
UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
RX packets:186434 errors:0 dropped:0 overruns:0 frame:0
TX packets:23143 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:215063293 (205.1 MiB) TX bytes:1554561 (1.4 MiB)
IRQ:17
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: adaptive load balancing Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:1e:c9:28:25:d2 Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:1e:c9:28:25:d3 Slave queue ID: 0