Vamos supor que tenhamos dois servidores rodando o Squid (pode ser com qualquer software). O master está com o ip 10.50.0.144, e o slave com 10.50.0.146. O cluster funciona disponibilizando um terceiro ip 10.50.0.145 que vai migrar entre os servidor em caso de pane no master.
O primeiro passo é instalar o Ucarp. No Debian, use:
$ apt-get install ucarp
As opções do Ucarp são as seguintes:
-i Interface de rede a ser monitorada. Ex: -i eth0
-s Ip real da interface. Ex: -s 10.50.0.144
-v Id da vlan. Podem haver outros dispositivos em cluster na rede. Cada conjunto deve conter um id único. Ex: -v 140
-p Senha usada no cluster. Ex: -p 123456
-a Ip virtual da interface. Ex: -a 10.50.0.145
-u Script a ser executado quando o equipamento em questão assumir o cluster. Ex: -a /usr/local/sbin/up.sh
-d Script a ser executado quando o equipamento em questão deixar de ser o master no cluster. Ex: -d /usr/local/sbin/down.sh
-P Diz ao ucarp para sempre tentar ser o master no cluster, mesmo após um problema neste nó. Se essa opção não for especificada, caso aconteça algo no master, o cluster vai migrar para o slave, mas não voltará quando o master voltar a operar normalmente.
-B Faz o ucarp rodar em segundo plano.
No nosso exemplo, basta colocar a seguinte linha dentro do arquivo /etc/rc.local do servidor que será master.
/usr/sbin/ucarp -i eth0 -s 10.50.0.144 -v 140 -p 123456 -a 10.50.0.145 -u /usr/local/sbin/up.sh -d /usr/local/sbin/down.sh -P -B
No slave, inclua a mesma linha, omitindo o parâmetro -P
/usr/sbin/ucarp -i eth0 -s 10.50.0.144 -v 140 -p 123456 -a 10.50.0.145 -u /usr/local/sbin/up.sh -d /usr/local/sbin/down.sh -B
Em seguida, crie o arquivo /usr/local/sbin/up.sh em ambos os servidores. Este arquivo deve conter os comandos necessários para que o servidor assuma as funções de master, como por exemplo levantar a interface virtual e reiniciar os processos para que estes façam bind na nova interface. No nosso exemplo, o script terá o seguinte conteúdo:
#!/bin/bash
/sbin/ifconfig eth0:0 10.50.0.145 netmask 255.255.255.0
/etc/init.d/squid3 start
/sbin/ifconfig eth0:0 10.50.0.145 netmask 255.255.255.0
/etc/init.d/squid3 start
Crie também o arquivo /usr/local/sbin/down.sh em ambos os servidores. Esse arquivos deve conter os comandos necessários para que o servidor deixe de ser master. No nosso exemplo, bastaria o seguinte:
#!/bin/bash
/sbin/ifconfig eth0:0 down
/etc/init.d/squid3 stop
Torne os dois arquivos executáveis em ambos os servidores.
$ chmod +x /usr/local/sbin/up.sh /usr/local/sbin/down.sh
Reinicie os servidores e faça os testes. Eu uso o Ucarp em cluster de gateways, proxys e bancos de dados há quase dois anos e ele sempre funcionou perfeitamente.
Obs: Essa solução envolve alta disponibilidade para problemas de rede. Problemas com desempenho e bug em aplicações não são contemplados nesta solução.
Nenhum comentário:
Postar um comentário