Alta disponibilidade com IP compartilhado - UCARP

Este artigo visa mostrar como implementar uma solução um pouco mais simples de Alta Disponibilidade no estilo ativo/passivo com qualidade. A idéia é simples, temos duas máquinas, cada uma com seu próprio IP e ambas compartilhando um terceiro IP. Quando a máquina master cair, a slave assume o controle sobre o IP compartilhado.

[ Hits: 86.992 ]

Por: Allan GooD em 21/02/2005


Esclarecimentos



Público alvo


Conhecimentos prévios: Bons conhecimentos sobre *nix e ótimos conhecimentos sobre TCP/IP.

UCARP vem de Userland CARP (Common Address Redundancy Protocol), que é um protocolo que serve para duas máquinas compartilharem o mesmo IP, uma alternativa ao VRRP (Virtual Router Redundancy Protocol). Este "userland" significa que ele funciona em modo usuário - o que facilita o processo de implementação por não precisar aplicar nenhum patch ao kernel.

Este artigo abordará a implementação de um cluster do tipo ativo/passivo.

Pacotes necessários


Vantagens do UCARP sobre o heartbeat

  • Facilidade de implementação;
  • Velocidade do Take Over/Take Back (menos de 5 segundos);
  • Baixo uso da rede: utiliza pacotes pequenos para verificar o estado dos nós;
  • Pela razão acima, não necessita de uma interface de rede exclusiva para o cluster;

    Próxima página

Páginas do artigo
   1. Esclarecimentos
   2. Introdução
   3. Implementação
   4. Conclusão
Outros artigos deste autor

Controle de conteúdo: Como proteger seus usuários deles mesmos

Nagios Falante

Filtragem de vírus com pop3 transparente: pop3vscan

Leitura recomendada

Entendendo o ataque ARP spoofing + SSLStrip

Enganando invasores com Honeyperl

Bloqueio de usuários com o chroot

Reforçando a segurança das conexões HTTPS no Apache

Melhorando a segurança do Firewall com Bridges usando Snort_Inline no Debian Etch

  
Comentários
[1] Comentário enviado por fabio em 22/02/2005 - 10:20h

Artigo adicionado à minha pasta de favoritos. Creio que um dia eu vá precisar dele :)

Meus parabéns Allan, mais um excelente artigo pra variar!

[]'s

[2] Comentário enviado por allangood em 22/02/2005 - 11:25h

Obrigado Fábio. Está é a intenção, escrever coisas úteis! :)
Espero que mais pessoas também gostem e usem no seu dia-a-dia.
Esta solução já me rendeu boas noites de sono! :)

Até mais.

[3] Comentário enviado por pingofdeath em 22/03/2005 - 17:44h

Caro Allan,
Estamos com um projeto de formatura (do curso de telemática) e não sabemos nem por onde começar....O projeto é sobre Servidor web de alta disponibilidade rodando no Fedora Core 3 ....Será q vc pode nos ajudar.... mande um e-mail pra mim ag_pereiras@yahoo.com.br....blz..agradecemos a sua colaboração...

[4] Comentário enviado por Good_speed em 13/04/2006 - 08:01h

Oi Allan,

Cara quero dar meus parabéns pelo seu artigo sobre (Alta disponibilidade com IP compartilhado – UCARP) ficou uma blz. Gostaria da sua ajuda p/ a seguinte situação, tenho 02 servidores com 02 placa de redes cada, e gostaria que as 02 placas trabalhasse com o mesmo sistema, pois pelo q entendei seu artigo ele só funciona em maquina que tem so uma placa de rede, será que funciona com duas com ips diferentes?


DADOS:

Virtual
Eth0 - 200.xxx.xxx.137
Eth1 – 10.10.2.10

Servidor(1)
Eth0 – 200.xxx.xxx.138
Eth1 – 10.10.2.8

Servidor(2)
Eth0 – 200.xxx.xxx.139
Eth1 – 10.10.2.7

Grato,

[5] Comentário enviado por rsmartins em 25/07/2006 - 09:15h

Pessoal ....

Testei o UCARP no Debian Sarge e no Fedora 3 e funcionou tranquilo ...
Porém estou precisando usá-lo no Fedora 5, qnd eu "starto" o ucarp não vejo nenhum processo rodando .... "ps aux | grep ucarp" e o IP compartilhado nçao eh setado ....

Alguém poderia ajudar ?

[6] Comentário enviado por vinicius.almeida em 03/04/2007 - 10:29h

este cluster funciona num servidor de email ?

[7] Comentário enviado por allangood em 03/04/2007 - 10:44h

Olá Vinicius (unimedvr),

Este procedimento funciona com qualquer serviço, mas cada um tem um grau de complexidade. No caso do e-mail você precisará solucionar os seguinte problema:

Em caso de queda, os arquivos da máquina "master" devem passar para a "slave" ou os usuários não terão acesso a seus e-mails antigos.

Uma boa solução para isso é usar o DRBD (http://www.drbd.org) para fazer um espelhamento de HD em um disco remoto ou caso deseje algo mais robusto, usar o GFS ou OCFS2 para fazer um cluster do tipo ativo/ativo, desta forma 2 ou mais máquinas conseguem escrever em um mesmo disco ao mesmo tempo.

Este programa (ucarp) é para coisas bem simples, como um servidor web, para coisas mais complexas, aconselho usar o HeartBeat ou ultra monkey.

http://linux-ha.org => Heartbeat
http://www.ultramonkey.org => Ultra Monkey

Até mais.

[8] Comentário enviado por vinicius.almeida em 03/04/2007 - 11:26h

allangood, Obrigado pela resposta!
Você tem algum tutorial ensinando a utilizar estes programas (Heartbeat
Ultra Monkey)

[9] Comentário enviado por allangood em 03/04/2007 - 11:33h

Nos sites você vai encontrar toda a documentação necessária, passo-a-passo, com diversos exemplos. Muito melhor que qualquer tutorial.

Até mais.

[10] Comentário enviado por whonix em 09/08/2007 - 09:49h

Allan, eu fiz as configurações mais aqui não esta funcionando totalmente.

o ip do micro 1 é 192.168.0.210;
o ip do micro 2 é 192.168.0.220;
o ip virtual 192.168.0.200;

eu consigo conectar no ip virtual na maquina 1 so que quando tiro o cabo de rede desta a segunda maquina não entra no lugar.

o q pode ser?

desde já agradeço.

[11] Comentário enviado por allangood em 09/08/2007 - 10:25h

Ok, vamos lá.
Um checklist rápido:
- As duas estão rodando o ucarp?
- As duas possuem os scripts configurados?
- As duas compartilham a mesma senha?
- Ao subir o daemon (ucarp) foi definido quem seria o master?

Cheque tudo e teste novamente ok?

Até mais.

[12] Comentário enviado por whonix em 09/08/2007 - 10:39h

as duas estão rodando ucarp - ok
os scripts estão configurados conforme o tutorial - ok
nas duas tem um usuario com a mesma senha, inclusive o root - ok

o ucarp só ta subindo quando eu executo o .sh com as linhas descritas no tutorial.
mais como eu defino o master? pela opção -P?

Obrigado mais uma vez.

[13] Comentário enviado por allangood em 09/08/2007 - 10:49h

A senha que me referi é do ucarp "-p password".
Algumas coisas mudaram desde que escrevi este tutorial.
Você deve colocar a opção -P em todos os nós e definir quem é o master com a opção "-b" seguida de um número. O menor número é o master.
Exemplo:

Master:
/sbin/ucarp -v 42 -P -p senha -b 1 -a 10.1.1.252 -s 10.1.1.1

Slave:
/sbin/ucarp -v 42 -P -p senha -b 10 -a 10.1.1.252 -s 10.1.1.2

Até mais.

[14] Comentário enviado por whonix em 09/08/2007 - 11:52h

ok...

eu deixei as linhas de comando da seguinte forma agora:

Micro1:

concta.sh
ucarp -i eth0 -P -k 1 -s 192.168.0.210 -v 42 -p password -b 1 -a 192.168.0.200 -u /etc/ucarp.d/vip-up.sh -d /etc/ucarp.d/vip-down.sh -B

vip-up.sh
/sbin/ip addr add 192.168.0.200/24 dev eth0

vip-down.sh
/sbin/ip addr del 192.168.0.200/24 dev eth0


Micro2:
conecta.sh
ucarp -i eth0 -P -k 1 -s 192.168.0.220 -v 42 -p password -b 10 -a 192.168.0.200 -u /etc/ucarp.d/vip-up.sh -d /etc/ucarp.d/vip-down.sh -B

vip-up.sh
/sbin/ip addr del 192.168.0.200/24 dev eth0

vip-down.sh
/sbin/ip addr addl 192.168.0.200/24 dev eth0


ta conectando no ip 192.168.0.200 o problema esta na hora q esta maquina fica off-line.

eu ja fiz os testes tirando algumas opções mais não obtive sucesso.

mais uma vez agradeço a atenção.

[15] Comentário enviado por anfm em 09/08/2007 - 16:40h

Onde encontro manual para o UCARP? Procurei no site ucarp.org e nao encontrei.

Desde j'a agradeco.

[16] Comentário enviado por osvalcde em 14/08/2007 - 20:03h

oi..

to trabalhando nom cluster trabanho da facultade..

to utilizando o manual de Ultramonkey http://www.ultramonkey.org/3/topologies/hc-ha-lb-eg.html
eu fiz todo perfeito, mais aparece um problema de conexao.. disculpa o meu portugueis

meu cluster consiste em 4 maquinas 2 Diretores un Ativo o outro backup e 2 Servidores Reais.. to trabalhando en Debian 3.1 com kernel 2.6

tris is my problem, only 1 conect
# ipvsadm -ln
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.18.200.33:21 rr
-> 172.18.200.31:21 Route 0 0 0
-> 172.18.200.32:21 Route 0 0 0
-> 127.0.0.1:21 Local 1 0 0
TCP 172.18.200.33:80 rr
-> 172.18.200.32:80 Route 0 0 0
-> 172.18.200.31:80 Route 1 0 0
TCP 172.18.200.33:443 rr
-> 172.18.200.32:443 Route 0 0 0
-> 172.18.200.31:443 Route 0 0 0
-> 127.0.0.1:443 Local 1 0 0
-----------------------------------------------------------------------------------------------------------

# ipvsadm -lcn
IPVS connection entries
pro expire state source virtual destination
TCP 00:40 SYN_RECV 172.18.200.39:2841 172.18.200.33:21 127.0.0.1:21
TCP 00:43 SYN_RECV 172.18.200.39:2852 172.18.200.33:21 127.0.0.1:21
TCP 00:46 SYN_RECV 172.18.200.39:2861 172.18.200.33:21 127.0.0.1:21
TCP 00:44 SYN_RECV 172.18.200.39:2855 172.18.200.33:21 127.0.0.1:21
TCP 00:47 SYN_RECV 172.18.200.39:2862 172.18.200.33:443 127.0.0.1:443
TCP 00:39 SYN_RECV 172.18.200.39:2838 172.18.200.33:21 127.0.0.1:21
TCP 00:38 SYN_RECV 172.18.200.39:2834 172.18.200.33:21 127.0.0.1:21
TCP 00:45 SYN_RECV 172.18.200.39:2858 172.18.200.33:21 127.0.0.1:21
TCP 00:42 SYN_RECV 172.18.200.39:2849 172.18.200.33:21 127.0.0.1:21
TCP 00:31 SYN_RECV 172.18.200.39:2828 172.18.200.33:21 127.0.0.1:21
TCP 00:41 SYN_RECV 172.18.200.39:2846 172.18.200.33:21 127.0.0.1:21

por favor algen pode me dar uma mao.. osvalcde@gmail.com

[17] Comentário enviado por allangood em 15/08/2007 - 12:15h

Olá Osvaldo,

Parece que você está enfrentando o problema do ARP.
Pela sua topologia (pelo que puder ver) você precisa colocar o IP do cluster (IP Virtual - VIP) na interface de loopback de todos os nós do cluster:
# ip addr del 10.1.1.1/32 dev lo
E coloque isso no seu /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

Até mais.

[18] Comentário enviado por baleis em 04/05/2009 - 13:16h

Allan, como posso configurar para varios ip virtuais, ou seja tenho no firewall 13 ip da rede 200.x.x.x/240 em eth0 que devem ser assumidos na outra maquina caso uma delas falhe ?
Obrigado

[19] Comentário enviado por drakula em 03/06/2009 - 21:58h

não sabia que tinham portado o CARP dos BSD pra linux, valeu o artigo é bem mais simples e mais eficiente usar CARP do que DRDB valeu, podiam portar a padronização também ehehheheh

[20] Comentário enviado por yurirohr em 24/07/2009 - 11:57h

Ola, estou com um problema e gostaria de saber se alguem pode me ajudar. Utilizo OpenSUSE 11 instalei o pacote RPM do Ucarp com o comando rpm -ihv, naum apareceu nenhum erro, porem naum localizo no sysctl -a nada do carp, o carp até funciona porém a função preempt naum, gostaria de saber se alguem já viu alguma coisa parecida...

[21] Comentário enviado por Tacioandrade em 14/07/2012 - 09:54h

Cara ótimo artigo, muito bom mesmo. Só tenho uma duvida. No meu caso nos scripts de vip-up.sh e vip-down.sh eu posso colocar qualquer tipo de comando, como por exemplo subir um sgbd ou algo do tipo?

Pergunto isso pois penso em usar a ideia para montar um Cluster de alta disponibilidade para um SGBD.


Att. Tácio Andrade.

[22] Comentário enviado por debianwoman em 21/05/2014 - 23:34h

Tácio Andrade,

Cluster para SGBD, aconselho usar o Red Hat Suite Cluster, os arquivos de instalação todos existentes na mídia. Aconselho usar a versão acima da 6.0

Além da linha de comando também tem opção de interface gráfica.
UCARP bem simples e mais usado para GW/Firewall como mencionado.


Att.
Priscilla Pedde


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts