Vous êtes sur la page 1sur 11

16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 1/11
Instalando DRBD + Heartbeat no Debian 6
Autor: Leandro Paulo <leandrojpg at gmail.com>
Data: 24/12/2011
Acertar repositrios
Escolha um editor de textos de sua preferncia e adicione estas linhas em seu "sources.list":
# REPOSITRIO OFICIAL
deb ftp://ftp.br.debian.org/debian squeeze main contrib non-free
deb-src ftp://ftp.br.debian.org/debian squeeze main contrib non-free
# REPOSITRIO DE ATUALIZAES DE SEGURANCA
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
# REPOSITRIO DE ATUALIZAES PROPOSTAS
deb ftp://ftp.br.debian.org/debian squeeze-proposed-updates main contrib non-free
deb-src ftp://ftp.br.debian.org/debian squeeze-proposed-updates main contrib non-free
Aps, salve e feche o "sources.list" e aplique no terminal:
# aptitude update
Acertar o arquivo nas duas mquinas:
# vim /etc/hosts
127.0.0.1 localhost
192.168.254.14 node1.local node1
192.168.254.15 node2.local node2
Por se tratar de um sistema de alta disponibilidade, importante manter a sincronia tambm da hora do
sistema.
Executar nos dois ns:
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 2/11
# aptitude install ntpdate tzdata
# ntpdate a.ntp.br
# hwclock --systohc
Instalar o DRBD
# aptitude install drbd8-utils
Carregar os mdulos, faa isso nas duas mquinas:
# modprobe cn
# modprobe drbd
Configurando o DRBD e inserir o seguinte parmetro ( logo abaixo do comando ):
# vim /etc/drbd.d/global_common.conf
global {
usage-count no;
Este arquivo deve existir nas 2 mquinas.
# vim /etc/drbd.d/r0.res
#!/bin/bash


resource r0 {
protocol C;
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt
-f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt
-f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -
f";
pri-lost "echo primary DRBD lost | mail -s DRBD
Alert adm@gmail.com adm@gmail.com";
}
startup {
degr-wfc-timeout 60;
}
disk {
on-io-error detach;
}
net {
sndbuf-size 512k;
timeout 60;
connect-int 12;
ping-int 12;
ping-timeout 9;
max-buffers 20480;
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 3/11
cram-hmac-alg "sha1";
shared-secret "ff3421bc";
after-sb-0pri discard-older-primary;
after-sb-1pri violently-as0p;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 100M;
al-extents 257;
}
on hachi {
device /dev/drbd0;
disk /dev/sda7;
address 192.168.254.14:7793;
meta-disk internal;
}

on narnia {
device /dev/drbd0;
disk /dev/sda7;
address 192.168.254.15:7793;
meta-disk internal;
}
}
Este arquivo deve existir nas 2 mquinas.
Preparar o disco, faa isso nos dois servidores. Conforme mostra a figura:
Criar os meta-dados e a partio
Obs.: Executar estes comandos nas duas mquinas.
Inicializando os recursos (como observado, executar nas 2 mquinas):
# drbdadm create-md r0
# modprobe drbd
# drbdadm up r0
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 4/11
Sincronizando pela primeira vez ( executar somente no primeiro n ):
# drbdadm -- --overwrite-data-of-peer primary r0
Aguardar a finalizao do sincronismo. O tempo depende do tamanho do recurso e velocidade da conexo
entre os ns. Os logs podem ser acompanhados com o comando:
$ cat /proc/drbd
Aps a sincronia, o log dever ter a seguinte sada:
version: 8.3.7 (api:88/proto:86-91)
srcversion: EE47D8BF18AC166BE219757
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---- ns:247044 nr:0 dw:0 dr:253992
al:0 bm:14 lo:1 pe:46 ua:211 ap:0 ep:1 wo:b os:4750388
[>...................] sync'ed: 5.0% (4636/4876)M
finish: 0:04:42 speed: 16,640 (24,560) K/sec
Iniciando o servico do DRBD ( executar nos dois ns ):
# /etc/init.d/drbd start
Formatando o dispositivos criados nos passos anteriores (somente no primeiro n):
# mkfs.ext4 /dev/drbd0
# mkdir /dados #nome do diretrio opcional - executa nos dois ns
# mount -t ext4 /dev/drbd0 /dados #executar no n primrio
Para certificar se realmente o dispositivo foi montado, digite:
$ df-h
Verifique se o diretrio "/dados" foi montado.
Realizando testes
Crie um arquivo no diretrio onde foi montado o DRBD, por exemplo:
# cd /dados
# touch teste
Desmonte o dispositivo:
# cd /
# umount /dados
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 5/11
Torne o n primrio em secundrio:
# drbdadm secondary all
Tornar a outra mquina como primria. Na outra mquina digite:
# drbdadm primary all
Montar o dispositivo na nova mquina primria:
# mount -t ext4 /dev/drbd0 /dados
Verificar se o arquivo criado no n primrio antigo, existe na nova primria.
Instalando Heartbeat ( executar nos dois ns )
# aptitude install heartbeat
Configuraes
No Debian, por padro, no existe os arquivos modelos no diretrio "/etc/had.d", ento temos que criar uma
cpia dos mesmos.
# cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/authkeys
# zcat /usr/share/doc/heartbeat/ha.cf.gz > /etc/ha.d/ha.cf
# zcat /usr/share/doc/heartbeat/haresources.gz > /etc/ha.d/haresources
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 10
warntime 5
initdead 20
udpport 694
bcast eth0
auto_failback no
ping 192.168.254.254
node node1
node node2
O arquivo authkeys responsvel pela autenticao deixo da seguinte forma:
auth 1
1 md5 digite_sua-senha
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 6/11
Mude as permisses do arquivo:
# chmod 600 /etc/ha.d/authkeys
Edite o arquivo "/etc/ha.d/ha.cf":
# vim /etc/ha.d/ha.cf
node node1
node node2
# QUAL A INTERFACE QUE SER USADA PARA COMUNICAO
bcast eth0
# ARQUIVOS DE LOGS
debugfile /var/log/ha-debug
logfile /var/log/ha-log
# FREQUNCIA EM SEGUNDOS DA VERIFICAO DOS SERVIDORES
keepalive 2
# TEMPO MNIMO PARA DECLARAR A OUTRA MQUINA DESATIVADA
deadtime 30
# QUANTO TEMPO O HEARTBEAT DEVE ESPERAR POR BITS ATRASADOS
warntime 10
# TEMPO MXIMO PARA DECLARAR O OUTRO SERVIDOR COMO MORTO
initdead 90
# VELOCIDADE DA SERIAL BPS CASO ESTEJA USANDO CABO SERIAL
baud 19200
# PORTA QUE SERA USADA
udpport 694
# DETERMINANDO SE O SERVIO DEVE VOLTAR PARA O MASTER, CASO ELE VOLTE A
RESPONDER
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 7/11
auto_failback off
# COMPACTAO DOS DADOS
compression bz2
# COMPACTAO DOS DADOS
compression_threshold 2
Edite tambm o arquivo 'haresources', ele ser responsvel por quais recursos estaro no cluster bem como
qual ser o n primrio.
No arquivo adiante monitorar Apache e o DRBD.
Instalando Heartbeat ( executar nos dois ns ) -
Continuao
# node1 IPaddr::192.168.254.10/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/dados::ext4 apache2
Nota: vale lembrar que o IP declarado no arquivo '192.168.254.10' o IP de virtual de servio que os
usurios iro acessar as aplicaes.
Obs.: todos os arquivos de configurao do Heartbeat devero existir na duas mquinas.
Devemos colocar a montagem da partio de forma automtica, edite o arquivo 'fstab' devendo ficar
conforme exemplo abaixo.
# vim /etc/fstab
/dev/drbd0 /dados ext4 _netdev,defaults 0 0
Inicie o Heartebeat nos dois ns:
# /etc/init.d/heartbeat start
Em seguida, confira se a interface virtual foi iniciada no n primrio:
# ifconfig
Deve aparecer algo como mostra a figura:
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 8/11
Se a interface virtual aparecer, sinal que correu tudo bem. Agora vamos testar nosso ambiente. Ainda no n
1, vamos parar o Heartbeat:
# /etc/init.d/heartbear stop
Neste momento dever ocorrer a migrao dos dados para o n 2. Conforme imagem:
Agora que o n 2 o n primrio, iremos simular um reboot na mesma e acompanhar o processo de
migrao novamente.
# watch cat/proc/drbd
Enquanto a mquina estiver no processo de reincio, o estado do outro n que assume ser de
'Primary/Unknow', visto que o mesmo perder a conexo com o n em reboot.
Portanto, assim que a mquina que estava no reboot voltar ao seu estado normal, o status do n que assumiu
os recursos mudar para 'Primary/Secondary' e a mquina que estava em reboot, ficar como
'Secondary/Primary'.
Notas de erro
Caso acontea dos recursos no serem migrados durante o reincio do Heartbeat, checar se os servios
foram iniciados.
Caso o Apache2 esteja parado e ao iniciar receber a seguinte mensagem:
Starting web server: apache2apache2: Could not reliably determine the server's fully qualified
domain name, using 192.168.254.15 for ServerName
Basta editar o arquivo "etc/apache2/apache2" e adicionar seguinte linha:
ServerName Ipdoservidor
possvel ao iniciar o Heartbeat no n primrio,os recursos no iniciarem e o ip de servio ou virtual no est
disponvel onde pode ser visto no log a mensagem semelhante a:
# tail if /var/log/messages
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 9/11
No local resources [/usr/share/heartbeat/ResourceManager listkeys node2] to acquire.
Nov 6 17:47:26 node2 heartbeat: [1200]: info: node1 wants to go standby [foreign]
Nov 6 17:47:27 node2 heartbeat: [1200]: info: standby: acquire [foreign] resources from node1
Nov 6 17:47:27 node2 heartbeat: [1306]: info: acquire local HA resources (standby).
Nov 6 17:47:27 node2 heartbeat: [1306]: info: local HA resource acquisition completed (standby).
Nov 6 17:47:27 node2 heartbeat: [1200]: info: Standby resource acquisition done [foreign].
Para corrigir isso faa o seguinte, no n primrio entre com os comandos:
# modprobe drbd
# drbdadm secondary r0
# drbdadm primary r0
# drbdadm disconnect r0
# rbdadm connect r0
# /etc/init.d/heartbeat restart
J no n secundrio entre com os comandos:
# modprobe drbd
# drbdadm -- --discard-my-data connect r0
# /etc/init.d/heartbeat restart
Como o n primrio apresentou erros, ao executar os comandos acima, o Heartbeat criar o IP de servio e
ir mudar para o servidor secundrio que a partir de agora passa a ser primrio. Para conferir se os recursos
foram migrados verifique ser a interface virtual foi criada digitando:
# ifconfig
a sada deve ser algo semelhante a imagem:
possvel ocorrer outro erro ao reiniciar o Heartbeat:
# cat /proc/drbd
Conforme mostra a imagem:
Se isto ocorrer, proceda da seguinte forma nos dois ns:
# modprobe drbd
# drbdadm attach r0
# drbdadm syncer r0
# drbdadm connect r0
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 10/11
# drbdadm disconnect r0
# drbdadm -- --discard-my-data connect r0
# drbdadm get-gi r0
Verifique a sada dos logs em ambos os ns, dever ser algo semelhante a:
# cat /proc/drbd
Conforme mostra a figura:
Defina um dos ns como primrio:
# drbdadm primary all
No n secundrio digite:
# drbdadm secondary all
Reinicie o Heartbeat nos dois ns
# /etc/init.d/heartbeat restart
Verifique se o IP virtual foi iniciado conforme mostra imagem:
# ifconfig
Referncias
http://gnulinuxbr.com/
http://www.drbd.org/
http://www.drbd.org/docs/about/
http://www.douglas.wiki.br/doku.php
Agradecimentos
Agradeo ao Evandro Couto, Douglas Quintiliano, Roosevelt e ao Victor Sartori, pela grande ajuda para
criar este material.
16/5/2014 Instalando DRBD + Heartbeat no Debian 6 [Artigo]
http://www.vivaolinux.com.br/artigos/impressora.php?codigo=13214 11/11
http://www.vivaolinux.com.br/artigo/Instalando-DRBD-+-Heartbeat-no-Debian-6
Voltar para o site

Vous aimerez peut-être aussi