Você está na página 1de 13

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

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

1 de 13

localhost

192.168.254.14

node1.local

node1

192.168.254.15

node2.local

node2

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

Por se tratar de um sistema de alta disponibilidade, importante manter a sincronia tambm da hora do sistema.
Executar nos dois ns:

# 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

2 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

#!/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;
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
disk
address
meta-disk
}

{
/dev/drbd0;
/dev/sda7;
192.168.254.15:7793;
internal;

3 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

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
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)

4 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

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
Torne o n primrio em secundrio:

# drbdadm secondary all


Tornar a outra mquina como primria. Na outra mquina digite:

5 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

# 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
bcast

694
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

6 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

1 md5 digite_sua-senha

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

7 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

baud 19200
# PORTA QUE SERA USADA
udpport 694
# DETERMINANDO SE O SERVIO DEVE VOLTAR PARA O MASTER, CASO ELE VOLTE A
RESPONDER
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

8 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

/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:

(http://img.vivaolinux.com.br
/imagens/artigos/comunidade/1324387591.1.png)

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:

(http://img.vivaolinux.com.br

/imagens/artigos/comunidade/1324387705.2.png)

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

9 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

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

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

10 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

# 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:

(http://img.vivaolinux.com.br
/imagens/artigos/comunidade/1324387882.3.png)

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

11 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

# drbdadm connect r0
# 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:

(http://img.vivaolinux.com.br
/imagens/artigos/comunidade/1324388521.6.png)

# ifconfig
REFERNCIAS
http://gnulinuxbr.com/ (http://gnulinuxbr.com/)
http://www.drbd.org/ (http://www.drbd.org/)

12 de 13

03-12-2015 10:24

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora...

http://www.drbd.org/docs/about/ (http://www.drbd.org/docs/about/)
http://www.douglas.wiki.br/doku.php (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.

Voltar (verArtigo.php?codigo=13214)

13 de 13

03-12-2015 10:24

Você também pode gostar