Alta disponibilidade - HA - Channel Bonding em 5 minutos - CentOS 6.x

Publicado por Leonardo Macedo Cerqueira em 11/11/2013

[ Hits: 12.579 ]

Blog: http://devopslab.com.br/

 


Alta disponibilidade - HA - Channel Bonding em 5 minutos - CentOS 6.x



Passo a passo para configurar um servidor com placa de rede tolerante a falhas ou balanceamento de carga, ou os 2. ;)

Plataforma: CentOS 6.4

Podem ser usados N interfaces de rede. As interfaces de rede precisam estar na mesma VLAN.

1. Configurando o módulo de interface.

Crie o arquivo bonding.conf em /etc/modprobe.d/bonding.conf:

alias bond0 bonding
options bond0 miimon=100 mode=0

Onde bond0, é como vai se chamar a interface de rede virtual. E mode=0, é o modo de operação do channel bonding (ver mais modos de operação no final).

2. Criando os arquivos ifcfg-xxxx:

bond0 :: /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
IPADDR=172.20.11.200
NETMASK=255.255.254.0
GATEWAY=172.20.11.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no

eth0 :: /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes

eth1 :: /etc/sysconfig/network-scripts/ifcfg-bond1

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes

Configurado as interfaces de rede, reinicie o servidor.

3. Checando as interfaces de rede:

# ifconfig -a
 bond0     Link encap:Ethernet  HWaddr 00:50:56:93:01:E7
           inet addr:172.20.11.200  Bcast:172.20.11.255  Mask:255.255.254.0
           inet6 addr: fe80::250:56ff:fe93:1e7/64 Scope:Link
           UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
           RX packets:100120 errors:0 dropped:0 overruns:0 frame:0
           TX packets:6709 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:6742886 (6.4 MiB)  TX bytes:719297 (702.4 KiB)
   
 eth0      Link encap:Ethernet  HWaddr 00:50:56:93:01:E7
           UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
           RX packets:42558 errors:0 dropped:0 overruns:0 frame:0
           TX packets:2368 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:2852022 (2.7 MiB)  TX bytes:256888 (250.8 KiB)
   
 eth1      Link encap:Ethernet  HWaddr 00:50:56:93:01:E7
           UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
           RX packets:57562 errors:0 dropped:0 overruns:0 frame:0
           TX packets:4341 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:3890864 (3.7 MiB)  TX bytes:462409 (451.5 KiB)
   
   
Obs.: perceba que as interfaces eth0 e eth1, estão setadas como SLAVE MULTICAST e Bond0 como MASTER MULTICAST.

4. Checando o status das interfaces de rede:

# cat /proc/net/bonding/bond0
 Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
  
 Bonding Mode: load balancing (round-robin)
 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:50:56:93:01:e7
 Slave queue ID: 0
 
 Slave Interface: eth1
 MII Status: up
 Speed: 1000 Mbps
 Duplex: full
 Link Failure Count: 0
 Permanent HW addr: 00:50:56:93:01:e8
 Slave queue ID: 0
  
  
5. Testes

a. Derrube a interface eth0:

# ifconfig eth0 down

a.1. Verifique se o IP continua pingando na interface de rede bond0.
a.2. Verifique o status da interface eth0 em /proc/net/bonding/bond0.
a.3. Suba novamente a interface eth0:

# ifconfig eth0 up

a.4. Verifique novamente o status da interface em /proc/net/bonding/bond0.


b. Derrube a interface eth1:

# ifconfig eth1 down

b.1. verifique se o IP continua pingando na interface de rede bond0.
b.2. verifique o status da interface eth1 em /proc/net/bonding/bond0.
b.3. suba novamente a interface eth1:

# ifconfig eth1 up

b.4. verifique o status da interface eth1 em /proc/net/bonding/bond0.


6. Modos de operação do Channel Bonding:

Para alterar o modo de operação, basta alterar a variável mode em /etc/modprobe.d/bonding.conf.

Os modos foram retirados desta fonte:
Abaixo, segue uma breve descrição dos tipos operações:
  • Modo 0 (balance-rr) :: transmite os pacotes em ordem sequencial do primeiro slave ao último. Provê tolerância a falhas e balanceamento. É o modo default, e também o único modo que permite com que o tráfego, seja distribuído entre as interfaces slave simultaneamente (ex.: duas placas 10/1000 serão uma única interface 2x(10/1000), ou seja, 2 Gbit max).
  • Modo 1 (active-backup) :: apenas um slave estará ativo, as demais placas de rede apenas serão ativadas (uma de cada vez) no caso de falha do slave ativo. Provê tolerância a falhas e alta disponibilidade.
  • Modo 2 (balance-xor) :: 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).
  • Modo 3 (broadcast) :: transmite todos os pacotes em todos os slaves. Provê tolerância a falhas e alta disponibilidade.
  • Modo 4 (padrão 802.3ad) :: 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; no switch utilizado neste artigo, esta configuração tem o nome LACP (IEEE 802.3ad Link Aggregation Protocol).
  • Modo 5 (balance-tlb) :: load-balance adaptável. Não requer nenhum suporte especial do switch, 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.
  • Modo 6 (balance-alb) :: o Adaptative Load Balancing provê o Transmit Load Balancing e o Receive Load Balancing 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. De forma bem generalizada é modo 5 turbinado (tlb+rlb).

Abraços.

Leonardo Macedo Cerqueira

Outras dicas deste autor

Como alterar a base de dados padrão do MySQL

SSH - Apagando conflitos de chaves RSA no arquivo known_hosts

Squid: Bloquear MSN de forma transparente

Monitorando tráfego da interface de rede em três comandos

Como obter a certificação Novell CLA (uma vez que você já tenha a certificação LPIC-1)

Leitura recomendada

27 e 28/10 - III Fórum Goiano de Software Livre

PClinuxOS - vale a pena, excelente!

Recuperando a senha de root no Debian

MC - Gerenciador de arquivos em modo texto do Linux

Seu Apache carrega a lista de diretórios e arquivos ao invés do site?

  

Comentários
[1] Comentário enviado por phr4nk em 16/12/2013 - 15:53h

Boa tarde.
Quando executo o comando ifconfig eth0 down, o servidor para de pingar, mas quando executo comando ifconfig eth1 down, continua pingando.

O comando cat /proc/net/bonding/bond0 mostra isso:

Bonding Mode: load balancing (round-robin)
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: 3
Permanent HW addr: 08:00:27:03:06:14
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 08:00:27:30:67:58
Slave queue ID: 0

O que pode ser?

[2] Comentário enviado por fmotta em 24/06/2014 - 22:25h

Coloque isso no /etc/modprobe.d/bonding.conf:

alias bond0 bonding
options bond0 miimon=100 mode=0 fail_over_mac=1



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts