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

Publicado por Leonardo Macedo Cerqueira em 11/11/2013

[ Hits: 12.608 ]

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

Squid: Bloquear MSN de forma transparente

SSH - Apagando conflitos de chaves RSA no arquivo known_hosts

Expandir ou aumentar discos de VMs (Virtual Machine) XEN

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

Instalação do plugin Java no Google Chrome

Leitura recomendada

Ambiente Java no Debian 4

Kpackage - Instalando pacotes no Conectiva Linux 10

Fazendo cópia de CDs via prompt

Explorando e resolvendo vulnerabilidade local no kernel Linux

VeryNice - Controle e gestão automática de serviços no Linux

  

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