Clusters de alta disponibilidade (HA – High Availability)

Autor: Tiago Almeida <talmeida.silva at hotmail.com>

Configurando um cluster de alta disponibilidade para servidor WWW

Essas configurações podem ser feitas facilmente e adaptadas para outros servidores como FTP, e-mail, Samba, banco de dados etc.

Instalações das placas de rede:

O procedimento de instalação de duas placas de rede, para os computadores ha-1.talmeida.com.br e ha-2.talmeida.com.br, que hospedam o cluster de alta disponibilidade. Instalamos duas placas de rede em cada um deles.

Configuração da rede cluster talmeida

As configurações para as placas de rede dos servidores ha-1.talmeida.com.br e ha-2.talmeida.com.br são:

  • Hostname: ha-1.talmeida.com.br
  • Endereço IP (eth0): 192.168.1.51
  • Máscara de rede (eth0): 255.255.255.0
  • Endereço da rede (eth0): 192.168.1.0
  • Endereço de broadcast (eth0): 192.168.1.255
  • Endereço IP (eth1): 10.0.0.1
  • Máscara de rede (eth1): 255.0.0.0.0
  • Endereço da rede (eth1): 10.0.0.0
  • Endereço de broadcast (eth1): 10.255.255.255
  • Gateway: 192.168.1.1
  • DNS primário: 192.168.1.2
  • DNS secundário: 192.168.1.3
  • Nome do domínio: talmeida.com.br
  • Hostname: ha-2.talmeida.com.br
  • Endereço IP (eth0): 192.168.1.52
  • Máscara de rede (eth0): 255.255.255.0
  • Endereço da rede (eth0): 192.168.1.0
  • Endereço de broadcast (eth0): 192.168.1.255
  • Endereço IP (eth1): 10.0.0.2
  • Máscara de rede (eth1): 255.0.0.0.0
  • Endereço da rede (eth1): 10.0.0.0
  • Endereço de broadcast (eth1): 10.255.255.255
  • Gateway: 192.168.1.1
  • DNS primário: 192.168.1.2
  • DNS secundário: 192.168.1.3
  • Nome do domínio: talmeida.com.br

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".

Configurando o RSync

O RSync é um programa para sincronização de discos que pode ser utilizado como alternativa para distribuições Linux que não possuem o DRBD.

Edite o arquivo /etc/ha.d/resource.d/hasync do servidor ha-1.talmeida.com.br da seguinte forma:

#!/bin/bash

if [ -f "/var/lock/subsys/mirror" ]
then
exit
if
echo -n "sincronizando o servidor secundário"
touch /var/lock/subsys/mirro
rsync -avz /var/www/* ha-2.talmeida.com.br:/var/www
rm -f /var/lock/subsys/mirro

Coloque esse arquivo como executável para facilitar:

# chmod 755 /etc/ha.d/resource.d/hasync

Execute o comando no servidor ha-1.talmeida.com.br:

# crontab -e

*/10 * * * * /etc/ha.d/resource.d/hasync # atualizará o servidor secundário a cada 10 minutos

Edite o arquivo /etc/ha.d/resource.d/datadisk do servidor ha-1.talmeida.com.br:

#!/bin/bash
case "$1" in
start)
touch /var/lock/subsys/mirror

if [ -f "/var/lock/subsys/mirroslave" ]
then
rsync -avz ha-2.talmeida.com.br:/var/www/* /var/www
rm -f /var/lock/subsys/mirror
fi
rm -f /var/lock/subsys/mirror
;;
stop)
if [ -f "/var/lock/subsys/mirror"]
then
exit
fi
touch /var/lock/subsys/mirror
rsync – avz /var/www/* ha-2.talmeida.com.br:/var/www
rm -f /var/lock/subsys/mirror
;;
restart)
$0 stop
$1 start
;;
status)
echo -n alo
;;
*)
echo "uso: datadisk {start|stop|restart|status}
exit 1
esac

Coloque esse arquivo como executável para facilitar:

# chmod 755 /etc/ha.d/resource.d/datadisk

Edite o arquivo /etc/ha.d/resource.d/datadisk do servidor ha-2.talmeida.com.br:

#!/bin/bash
case "$1" in
start)
# não faz nada
;;
stop)
rsh ha-1.talmeida.com.br touch /var/lock/subsys/mirroslave
;;
restart)
$0 stop
$1 start
;;
status)
echo -n alo
;;
*)
echo "Uso: datadisk {start|stop|restart|status}
exit 1
esac
exit 0

Coloque esse arquivo como executável para facilitar:

# chmod 755 /etc/ha.d/resource.d/datadisk

Ativando a sincronização dos discos na inicialização do Linux:

Execute o programa ntsysv no computador ha-1.talmeida.com.br e marque o serviço crond.

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.


http://www.vivaolinux.com.br/artigo/Clusters-de-alta-disponibilidade-(HA-High-Availability)

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s