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: 72.951 ]

Por: Smurf em 06/10/2009


DRBD (Data Replicator Block Device)



O DRBD (Data Replicator Block Device - Dispositivo de Bloco de Replicação de Dados) é um modulo de kernel e scripts associados que oferecem um dispositivo de bloco projetado para construir clusters de alta disponibilidade. Isso é feito espelhando um conjunto de blocos via rede dedicada formada pelas placas de rede eth1 dos servidores ha-1.talmeida.com.br e ha-2.talmeida.com.br (endereços IP: 10.0.0.1 e 10.0.0.2). Podemos considerá-lo como RAID via rede.

O DRBD toma conta dos dados escritos no disco rígido local e os envia para outro host. No outro host ele escreve os dados no disco. Os outros componentes necessários são um serviço de relacionamento entre servidores do cluster, o qual pode ser o Heartbeat e algumas aplicações FS ou um banco de dados com capacidade de restauração.

Cada dispositivo (o DRBD providencia mais um desses dispositivos) tem um estado, que pode ser primário ou secundário, No nó com o dispositivo primário a aplicação está executando e tem acesso ao dispositivo (/dev/nbX). Leituras são sempre localizadas localmente.

Se o nó primário falhar, o Heartbeat permutará o dispositivo secundário em primário e iniciará a aplicação ali (se você esta usando um filesystem não journaling, isso implica executar o fsck).

O nó que fechou, ao voltar, se torna o secundário e tem que sincronizar seus dados com o primário. Isso é feito sem nenhuma interrupção do serviço em background.

Obs.: O Red Hat não possui o drbd, use o rsync como substituto.

Fonte de consulta: http://www.noticiaslinux.com.br/nl1077151245.html

Configurando o DRBD

Edite o arquivo /etc/drbd.conf em ambos os servidores do cluster, da seguinte forma:

resource drbd0 # primeiro espelhamento
{
protocolo=B # protocolo usado pelo DRBD
fsckmod=fsck -p -y # comando fsck caso necessário
# inttimeout=60

disk # informações relativas ao disco
{
do-panic # em caso de erro de kernel vai obrigar o servidora parar
# disk-size=xxxxxx # o tamanho do disco deve ser definido se os discos dos servidores do cluster não foram iguais
}

net # informações relativas à rede
{
# sync-rate=250
sync-rate=10M # taxa de transmissão de dados por 10 megabits por segundo.
#skip-sync
tl-size=50000
timeout=60
connect-int=10
ping-int=10
}

on ha-1 # primeiro nó
{
device=/dev/nb0 # dispositivo de drbd
disk=/dev/hda7 # dispositivo de bloco
address=10.0.0.1 # endereço ip
port=7788
}

on ha-2
{
device=/dev/nb0 # dispositivo de drbd
disk=/dev/hda7 # dispositivo de bloco
address=10.0.0.2 # endereço ip
port=7788
}

Ativando o drbd na inicialização do Linux:

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

Página anterior     Próxima página

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

Net TV a cabo no Mandrake 10.1 Community

Fontes True Type no Slackware (sem xfstt e ttmkfdir)

Utilizando certificados e-CNPJ e e-CPF no Linux

Instalando e desmistificando o Debian

Gerenciador de programas no pQui Linux

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts