Antes de entrarmos no assunto, quero deixar claro que escrevi este artigo pois li o artigo
Alta disponibilidade com IP compartilhado - UCARP do nosso amigo
allangood e fiquei interessado na solução.
Pesquisando sobre o assunto cheguei nos BSD's (linuxers, não me apedrejem, eu não virei a casaca... brincadeira). E caso vocês queiram usar o CARP com BSD, esta aí.
O segundo motivo é que eu queria fazer isto com o
FreeBSD, porém não sabia como recompilar/preparar o sistema para o CARP e tive que descobrir sozinho, pois não achei nenhuma referência na internet, apenas para o
OpenBSD.
Um pouco sobre o protocolo CARP
CARP (
Common Address Redundancy Protocol) é um protocolo que permite que múltiplos hosts (até 255) em uma rede local compartilhem de um mesmo endereço IP. Algumas de suas funcionalidades são similares ao VRRP, mas o CARP difere em alguns aspectos significantes: CARP foi desenhado para prover segurança e ser um protocolo independente (assim ele pode suportar IPv4 e IPv6), pode-se trabalhar com load balancing e com isto alta disponibilidade.
CARP, cujo desenvolvimento foi iniciado pelo projeto OpenBSD há cerca de dois anos, foi implementado no FreeBSD de forma nativa a partir da versão 5.4. Saiba mais a respeito do CARP através do site.
O que quero mostrar com este artigo é: como preparar os sistemas para trabalhar com o protocolo CARP e como configurá-lo. Embora seja nativo no FreeBSD, a partir da versão 5.4 ainda é preciso recompilar seu kernel para que o mesmo trabalhe com o CARP, porém no OpenBSD já é possível configurar as interfaces sem precisar recompilar o kernel.
Após preparar o sistema (instalação/recompilação do kernel), a única coisa que precisamos fazer é configurar as interfaces de rede e para que possamos fazer testes e ver seu funcionamento, precisaremos de pelo menos 2 máquinas com 2 IPs válidos na internet e conseqüentemente 2 IPs para a rede interna ou LAN.
Se você ainda não entendeu, acalme-se :), o que o protocolo CARP permite trocando em miúdos é: em caso de falhas de hardware, colocar uma segunda máquina para trabalhar no lugar daquela que apresentou problema.
Digamos que tenhamos duas máquinas.
Máquina 1 (master): 192.168.0.1
Máquina 2 (backup): 192.168.0.2
A máquina 1 é a principal ou master, é o gateway da rede, porém nossas estações estão configuradas para acessar o gateway pelo IP 192.168.0.254, então logo se tentarmos acessar a internet, as estações não irão acessar.
Então vamos usar o protocolo CARP para criar uma segunda interface de rede com o IP 192.168.0.254 e dizer que a máquina é a "master" e a máquina 2 é a "backup". se a 1 falhar a 2 assume e quando a 1 voltar a funcionar, ela fica como backup da 2 até haver falha.
Vamos para a prática?
OBS: Caso você não tenha duas máquinas, é possível criar um ambiente de testes com o VMware por exemplo.