Linux link agregation (bonding) múltiplas interfaces - Load Balance

De Wiki do Ouro Minas Palace Hotel
Ir para navegação Ir para pesquisar

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


Danton Cancella (31-8456-6829) (discussão)