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.972 ]

Por: Allan GooD em 21/02/2005


Conclusão



Feito isso, seu cluster está pronto para subir. Simples assim!!!

Observe que os scripts são "invertidos", ou seja, quando um assume o outro deve "abandonar" o VIP.

Outra coisa que você deve tomar cuidado é apontar os serviços para o VIP e não para os IPs reais.

Até mais.

OBS: Eu e o Felipe Kellermann <stdfk at terra dot com dot br> acabamos de traduzir o UCARP para o português e acredito que as próximas versões venham traduzidas.

Página anterior    

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

Nagios Falante

Filtragem de vírus com pop3 transparente: pop3vscan

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

Leitura recomendada

Instalação do Fail2Ban no CentOS 7

Armazenamento de senhas no Linux

Bloqueio de usuários com o chroot

Entendendo o ataque ARP spoofing + SSLStrip

Netcat - O canivete suíco do TCP/IP

  
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