Clusters de alta disponibilidade (HA - High Availability)

Nesse artigo tratarei sobre a configuração de clusters de alta disponibilidade. Os computadores dessa classe possuem uma disponibilidade de 99,99% a 99,999%, isso significa que em um ano de operação o servidor ficará indisponível por um período de pouco mais de 5 minutos (se ficar).

[ Hits: 66.883 ]

Por: Smurf em 06/10/2009


Heartbeat



Heartbeat significa batimento cardíaco. Esse termo é usado para definir os pulso enviados entre dois computadores que indicam que estão vivos, ou seja, estão funcionando e disponíveis para executar tarefas.

O Heartbeat trabalha enviando pulso entre dois servidores através de uma porta serial, um placa de rede ou ambas. Se o pulso falhar, o servidor secundário irá assumir que o servidor primário falhou e tomar os serviços que estavam rodando no servidor primário.

O Heartbeat define um endereço IP para o cluster, que deve ser diferente dos endereços IP dos servidores primário e secundário, e que será o endereço IP procurado pelos clientes. O servidor que esta ativo, não importa se for o primário ou o secundário assumirá o endereço do cluster.

Fonte: http://www.opens.com.br/documentacao/HA/Portugues/heartbeat.html

Configuração do Heartbeat

Edite o arquivo /etc/ha.d/ha.cf em ambos os servidores do cluster (se por pela porta serial):

serial /dev/ttys1 # porta serial usada pelo heartbeat.
baud 19600 # taxa de transferência da porta serial
debugfile /var/log/ha-debug
logfile /var/log/ha-log # arquivo de log
logacility local0
keepalive 2 # define o tempo entre os heartbeats
deadtime 10 # o nó será declarado como indisponível depois de 10 segundos

node ha-1.talmeida.com.br
node ha-2.talmeida.com.br

Para testar a comunicação da porta serial, execute os seguintes comandos.

No servidor ha-1.talmeida.com.br:

# cat < /dev/ttyS1

No servidor ha-2.talmeida.com.br:

# echo teste > /dev/ttyS1

A palavra teste irá aparecer no servidor ha-1.talmeida.com.br.

Edite o arquivo /etc/ha.d/ha.cf em ambos os servidores do cluster (se for usada a placa de rede):

udpport 694 # porta usada pelo protocolo udp.
Udp eth1 # placa de rede usada pelo heartbeat.
debugfile /var/log/ha-debug
logfile /var/log/ha-log # arquivo de log
logfacility local0
keepalive 2 # define o tempo entre os heartbeat
deadtime 10 # o nó será declarado como indisponível depois de 10 segundos

node ha-1.talmeida.com.br
node ha-2.talmeida.com.br

Edite o arquivo /etc/ha.d/haresources em ambos os servidores do cluster, da seguinte forma:

ha-1.talmeida.com.br 192.168.1.53 datadisk www

Essa linha indica que o endereço do cluster é 192.168.1.53 e inicializa o script datadisk, que negocia a troca do dispositivo drbd de secundário para o primário, monta as partições drbd especificadas no fstab e inicializa o servidor WWW. Ao desligar, Heartbeat irá primeiro parar o servidor WWW, o drbd e depois liberar o endereço IP para que o outro servidor do cluster possa assumí-lo.

Edite o arquivo /etc/ha.d/authkeys em ambos os servidores do cluster, da seguinte forma:

auth 1
1 crc

Esse arquivo define o tipo de autenticação utilizado pelo Heartbeat. Existem três métodos de autenticação disponíveis: crc, md5, sha1. O crc é o mais simples, recomendável na maioria das situações. O md5 tem um nível de segurança médio. Já o sha1 é o mais seguro de todos, mas também o mais lento. O formato desse arquivo é o seguinte:

auth <number>
<number> <authmethod> [authkey]

Obs.: O crc não usa chave de autenticação.

# chmod 600 /etc/ha.d/authkeys

Execute o programa ntsysv em ambos os servidores do cluster e selecione o serviço heartbeat.

Página anterior    

Páginas do artigo
   1. Configurando um cluster de alta disponibilidade para servidor WWW
   2. DRBD (Data Replicator Block Device)
   3. Configurando o RSync
   4. Heartbeat
Outros artigos deste autor

Ferramentas de monitoria de tráfego

Leitura recomendada

Remasterizando o Ubuntu

Configurando modem MF622 da Claro no FreeBSD 8.0 e OpenBSD 4.7

Servidor de impressão Linux com clientes Windows 2000

Expandir Disco no Linux - VMware

Cluster Beowulf

  
Comentários
[1] Comentário enviado por cleysinhonv em 06/10/2009 - 15:36h

Olá talmeida,

Gostei do artigo, trata-se de um assunto que estamos debatendo aqui no trabalho. Parabéns.

[2] Comentário enviado por diegofsouza em 06/10/2009 - 20:15h

Ótimo artigo... é um assunto muito interessante.

[3] Comentário enviado por Wakky em 09/10/2009 - 09:09h

Cara...
bom artigo...
Tive pensando... a tempo, precisei de implementar uma solução de um servidor de correio, em que haviam 2 sites remotos em diferentes países.
o problema, é que quando o mail no server tentasse ser acedido por um user no SiteB (ligação 512KB partilhada), e se o mail fosse grandinho e a conexão desse um timeout, o cara da direção pegava logo no telefone e desancava aqui no pessoal...
Tive pensando num cluster, e cada mail era acedido localmente,ficando todo o "trabalho" para os servidores.

Penso que essa solução vai ajudar a resolver esse problema.

[]'s

Wakky

[4] Comentário enviado por removido em 18/10/2009 - 21:28h

Bem Explicado.
Continue Assim.

[5] Comentário enviado por removido em 20/10/2009 - 17:22h

O Artigo ficou bom.

Porém posso resaltar que ficaria melhor se fosse implementado o OCFS2 junto do DRBD, com isso poderia trabalhar no esquema master/master sem precisar ficar fazendo a sincronização por script.

O OCFS2 é um sistema de arquivos da Oracle para Cluster ele trabalha muito bem com o DRBD e o HeartBeat e é Livre.

Quando um dos servidores do DRBD parar tem que passar a função de master para o secundário no seu caso.

Se tiver o OCFS2 se um deles parar e o cluster do Heartbeat estiver utilizando o Stonith, o Stonith vai reiniciar o Nodo que estiver com problemas. E o nodo que estiver trabalhando não vai precisar receber a função de primário pois já vai ser.

Para aumentar ainda mais a disponibilidade poderia ser Utilizado o LVS para fazer o balanceamento da carga que serão entregues para os servidores.

E por fim utilizar o Monit para monitorar tudo e mais ele mesmo.

Quando se fala em disponibilidade.

HeartBeat+LVS+MONIT+DRBD+OCFS2

A Melhor solução com Software.


Douglas Q. dos Santos

[6] Comentário enviado por elsonjunior em 24/11/2009 - 09:22h

Opa,

Muito bom artigo.

Estou aprendendo a trabalhar com linux e estou de encarregado de fazer testes para montar um sistema de alta disponibilidade.

Fiquei com dúvida na hora de editar o arquivo /etc/drbd.conf, pois o arquivo é bem mais extenso.
Devo apagar as outras informações dele? Ou adicionar essas daí no final?

Desde já agradeço.

Abraço.

--
Elson Júnior


[7] Comentário enviado por jhugor em 03/05/2010 - 21:56h

caro talmeida

parabens pelo excelente post

nota 10

gostaria de te perguntar o seguinte:

tenho um micro com debian 5.04 e nele instalei o virtualbox, criei uma maquina virtual com 2003 server onde dentro vao softwares
de automacao comercial

as estacoes acessam via terminal service

gostaria de colocar uma segunda maquina com o debian tambem e nela o virtualbox com outro 2003 server dentro

a ideia era replicar os dados da maquina 1 para a 2

voce ve possibilidade

apreciaria muito tua ajuda parceiro!

outra coisa, nao precisa ser exatamente como eu disse, poderia haver no meio, se necessario uma intervencao tecnica, tipo, desligar
o primeiro que deu pau e mudar um ip no segundo, sei la, algo do tipo

agradeco novamente!



abaixo uma pergunta que fiz no forum, talvez eu tenha sido mais completo la!

http://www.vivaolinux.com.br/topico/Virtual-Box-1/Usando-VirtualBox-para-Servidor-e-Cluster-HA


Contribuir com comentário