Bonding + VLAN + Heartbeat ou UCARP (Debian/RedHat like)

Post original em Do bit Ao Byte

Escrevi sobre cada um desses recursos independentemente em outros posts. Se estiver procurando por algum deles especificamente, basta digitar ali na caixa de pesquisa à direita.
Este post escrevi especificamente por que a configuração desse tipo pode causar algum nó na cabeça, além de ser possível uma variação dela (cuja variação não sei se funciona).

Apresentação
Bonding é a agregação de link, somando a banda das interfaces ou deixando uma como ativa e uma como backup. Para um bom entendimento desse recurso, leiaesse post onde detalho seus principais modos e descrevo as condições de rede para cada tipo.

Para um bom entendimento da configuração de VLAN, recomendo esse outro post. Repare que os links que estou colocando mostram a configuração desses recursos em Debian de forma separada. Aqui serão exibidas as configurações completas, que deverão servir para praticamente todos os Linux.

A configuração detalhada do Heartbeat pode ser vista aqui. Opcionalmente (e preferencialmente), a configuração do UCARP no Debian:

Configurando UCARP
A configuração do UCARP é bastante simples e mais direta do que a configuração do heartbeat. Basicamente instala-se o pacote e suas configurações são feitas diretamente no arquivo /etc/network/interfaces. Para instalar o pacote:


apt-get install ucarp

E sua configuração, supondo uma interface com IP real 192.168.0.1 e IP virtual 192.168.0.254 na eth0:

 

auto eth0
iface eth0 inet static
    address 192.168.0.1
    netmask 255.255.255.0

ucarp-vid 1
ucarp-vip 192.168.0.254
ucarp-password "umaSenha"
ucarp-xparam -n

iface eth0:ucarp inet static
    address 192.168.0.254
    netmask 255.255.255.0

Como se pode ver, seguidamente à configuração da interface física eth0 segue a configuração do UCARP. Define-se seus parâmetros e posteriormente configura-se a interface virtual normalmente.
Na lista de parâmetros estão:
ucarp-vid
O id da configuração. Deve ser igual em ambos os nodes que participam da virtualização do IP 192.168.0.254.

ucarp-vip
O IP virtual a utilizar na interface ucarp.

ucarp-password
Senha a utilizar entre os nodes. Não precisa ser nada complexo, isto é apenas para validação na comunicação entre os nodes.

Em Red-Hat like vocẽ pode seguir esse tutorial.

Iniciando a configuração em sistemas baseados em RedHat
Não é minha preferência, mas já foi há alguns anos. A configuração de interface em RedHat é distribuida em diversos arquivos; o da interface física, o da VLAN, o do bond e com ifconfig também se vê a interface virtual configurada pelo heartbeat, cuja interface é configurada em um outro arquivo, como será visto mais adiante.

 

Para instalar o Heartbeat, foi necessário adicionar o repositório Epel. Depois, faz-se o yum update e instala-se o pacote com yum install heartbeat. Esse foi meu primeiro desagrado; para instalar o HeartBeat, um conjunto de pacotes inúteis são instalados como dependências de cluster, sendo que necessário mesmo é apenas o heartbeat e nada mais.

A primeira configuração a ser feita é o bonding, pois a interface VLAN deve ser criada sobre a interface bond e não sobre as interfaces físicas (por exemplo, eth0 e eth1). Como estamos tratando primeiro da configuração sobre sistemas baseados em Red-Hat, os arquivos de interface ficam em/etc/sysconfig/network-scripts. Considerando apenas 2 interfaces físicas, teremos uma interface virtual chamada bond0, que deve ser criada tal qual fosse uma interface física. Porém, como vamos utilizar VLAN, essa interface não recebe nenhum endereçamento, apenas deve existir para que seja possível configurar a VLAN sobre a interface virtual:


cd /etc/sysconfig/network-scripts
vi ifcfg-bond0

E seu conteúdo:


DEVICE=bond0                                                                    
ONBOOT=yes
BOOTPROTO=none

As interfaces eth0 e eth1 devem ser configuradas para trabalhar como escravas dessa interface virtual. Os arquivos correspondentes são ifcfg-eth0 e ifcfg-eth1. Seu conteúdo deve ser:

 

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

Troque o X em DEVICE pelo número da interface; 0 para eth0 e 1 para eth1 em seus respectivos arquivos, citados anteriormente.
As duas linhas mais importantes que diferem de uma configuração tradicional de interface são MASTER, onde se indica quem é a interface mestre – no caso, a interface virtual bond0 – e SLAVE, que deve ser yes, para subjulgar as interfaces à interface virtual.

Para finalizar a configuração de bonding é necessário configurar o módulo para trabalhar a contento. Para tal, entre em /etc/modprobe.d e crie o arquivobond.conf. Como é possível ter várias interfaces de bonding, o arquivo leva o nome genérico, mas considerando um sistema onde só vá existir uma interface, poderia chamar o arquivo de bond0.conf.

Seu conteúdo


alias bond0 bonding
options bond0 mode=1 miimon=100

Essa configuração é o suficiente para o trabalho do bonding. Para detalhes sobre os parâmetros utilizados e modos de operação, se refira ao link citado no início desse post. É importante que você tenha certeza de estar utilizando o modo de operação certo, pois um erro de configuração com tantas camadas pode causar muito transtorno até se descobrir a causa do problema. Então, se você ainda não leu o post sobre bonding, deixe de ser preguiçoso e faça-o. :-)

Para fazer a vlan, será necessário criar o arquivo da interface seguido da extensão que corresponda ao ID da VLAN, por exemplo 123. Nesse caso, deve-se criar o arquivo /etc/sysconfig/network-scripts/ifcfg-bond0.123 com o seguinte conteúdo:

DEVICE=bond0.123
ONBOOT=yes
VLAN=yes
BOOTPROTO=none
IPADDR=10.0.0.2
NETMASK=255.255.255.0
NETWORK=10.0.0.0
GATEWAY=10.0.0.1

Claro, o endereçamento IP de classe A foi utilizado apenas para exemplificar, a configuração deve corresponder ao endereçamento IP da VLAN pretendida.
Um parametro importante a reparar nessa configuração é VLAN=yes, onde aponta-se explicitamente o modo de funcionamento da interface, mas deve-se dar atenção também ao sufixo dado em DEVICE, incluindo o ID da VLAN em questão.

Assim configurado, faça reboot e veja se tudo está ok. Deve aparecer a interface bond0, eth0 e eth1, todas elas sem configuração de IP e a interface bond0.123 contendo a configuração de interface desse último arquivo criado.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: