Vamos supor que você tem um servidor de arquivo com Linux, ou um servidor Web muito importante para sua empresa que jamais pode ficar fica indisponível, como resolver este problema ?
A resposta disso esta neste tutorial bastante básico de alta disponibilidade entre 2 servidores, vamos usar a distro Ubuntu Server 8.04 e os softwares:
- heartbeat – responsável pela alta disponibilidade
- drbd – responsável pela a “sincronização” de dados entre os servidores
Primeiro coisa é a escolha dos hardware para seus servidores, eu aconselho que as 2 maquinas sejam idênticas ate mesmo para não ter perda de desempenho caso a maquina principal pare de funcionar, caso não de para ter as 2 maquinas idênticas uma coisa é importante é obrigatório, que o espaço para os dados sejam de tamanhos idênticos (exemplo: partição, hd, LVM) senão o DRBD não irar funcionar corretamente, falando nisso o que seria o DRBD,como ele funciona ?
Bom o DRBD seria como um raid-1, porem pela a rede do computador, tudo que escreve num computador é automaticamente escrito no outro, porem somente um computador tem acesso aos dados.
Vamos supor que para a maquina 1 você tenha dado o nome de “node1″ e para a maquina 2 “node2″. Para instalação é simples, execute nas 2 maquinas:
- aptitude update
- aptitude install drbd8-utils
Editar o arquivo /etc/drbd.conf nas 2 maquina:
global {
usage-count yes;
}
common {
protocol C;
}
resource dados {
on node1 {
device /dev/drbd1;
disk /dev/sda3;
address 192.168.0.250:7789; #IP DA MAQUINA
meta-disk internal;
}
on node2 {
device /dev/drbd1;
disk /dev/sda3;
address 192.168.0.251:7789; #IP DA MAQUINA
meta-disk internal;
}
}
Podem reparar que o sda3 tem o mesmo tamanho e não pode ter nenhum sistema de arquivo neles
Lembrando de mudar os campos “address” para o IP de cada maquina, depois disso vamos executar os seguintes comandos:
- drbdadm create-md dados
- /etc/init.d/drbd restart
Execute no node1:
- drbdadm — –overwrite-data-of-peer primary dados
agora e esperar os nodes syncronizares, para ver como anda: cat /proc/drbd
version: 8.0.11 (api:86/proto:86)
GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by phil@mescal, 2008-02-12 11:56:43
1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:2670316 nr:0 dw:0 dr:2678496 al:0 bm:162 lo:1 pe:5 ua:256 ap:0
[========>...........] sync'ed: 46.6% (2998/5606)M
finish: 0:08:31 speed: 5,960 (6,448) K/sec
resync: used:2/31 hits:166982 misses:164 starving:0 dirty:0 changed:164
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
Apos terminar e hora de formatar a partição, eu escolhi ext3 mas a escolha fica por conta sua
Duvidas sobre os paramentos: www.drbd.org/docs/about/
Agora vamos instalar o heartbeat, mas antes o que seria o heartbeat ? heartbeat é responsável por verificar se os nodes estao funcionando caso o node principal saia do ar ele levanta os serviços no node secundário sem nenhuma interversão do usuário. Para instalar nos 2 nodes é simples:
- aptitude install heartbeat-2
Apos disso vamos criar o arquivo de configuração /etc/ha.d/ha.cf com o seguinte conteúdo
debugfile /var/log/ha-debug
bcast eth0 #INTERFACE QUE AS MAQUINAS ESTÃO LIGADAS
keepalive 2
warntime 10
deadtime 10
initdead 15
auto_failback off
respawn hacluster /usr/lib/heartbeat/ipfail
ping 192.168.1.250 192.168.1.251 #IP DAS MAQUINAS
node node1
node node2
Criar também o arquivo /etc/ha.d/authkeys
auth1
1 md5 suafrasesecreta
Criar tambem o arquivo /etc/ha.d/haresources, o mais importante, com o seguinte conteúdo
node1 Ipaddr::192.168.0.10/24/eth0 drbddisk::dados Filesystem::/dev/drbd1::/dados apache2
com este arquivo e bastante interessante e formado da seguinte forma:
<Nome do node Master> <serviços>
serviço são buscado no /etc/ha.d/resource.d/ ou no /etc/init.d/ o arquivo deve ser basicamente neste estilo
#/bin/bash
case "$1" in
start)
# Programa a ser iniciado
;;
stop)
# Comando para ser parado
;;
status)
# Comando para mostrar Status
;;
esac
Estes arquivos tem quer ser IDÊNTICOS nos 2 servidores. Vamos iniciar o heartbeat
- /etc/init.d/heartbeat start
Duvidas no parâmetros: www.linux-ha.org
Como irar funcionar isso tudo, bastante simples, node1 esta no poder respondendo o serviço no IP 192.168.0.10, mas de repente sua fonte queima é desligava a maquina, em menos de 1 minuto o node2 irar responder pelo o serviço e os usuários nem vão perceber a queda do serviços.
Tenho que comentar umas coisas importante que não falei ao longo do tutorial, a maquina que usei somente tinha uma interface de rede por isso usei eth0 em todas as configurações, mas o mais ideal é você utilizar 2 interfaces de rede para interligar os servidores. Como você pode imagina a carga de sync entre o DRBD é muito grande e assim você evitar gargalos na rede, então você teria que somente mudar o arquivo /etc/ha.d/ha.cf de eth0 para ethX e os IPS para a sua solução.
No arquivo /etc/ha.d/haresources no parâmetro “Ipaddr::192.168.0.10/24/eth0″ você vai colocar o IP e interface que o serviço irar responder e mudar de Ipaddr para Ipaddr2 pois o Ipaddr cria uma alias da interface(eth1:0) é o Ipaddr2 levanta o IP realmente na placa. Qualquer duvidas somente deixar um comentário.