Você está na página 1de 11

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

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 192.168.254.15 node2.local

node1 node2

Por se tratar de um sistema de alta disponibilidade, importante manter a sincronia tambm da hora do sistema.

1 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

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 Congurando 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;

2 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

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;

Este arquivo deve existir nas 2 mquinas. Preparar o disco, faa isso nos dois servidores. Conforme mostra a gura:

Criar os meta-dados e a partio Obs.: Executar estes comandos nas duas mquinas. Inicializando os recursos (como observado, executar nas 2 mquinas):

3 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

# 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 nalizao 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 nish: 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 certicar se realmente o dispositivo foi montado, digite: $ df-h Verique se o diretrio "/dados" foi montado.

Realizando testes
Crie um arquivo no diretrio onde foi montado o DRBD, por exemplo: # cd /dados

4 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

# 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: # drbdadm primary all Montar o dispositivo na nova mquina primria: # mount -t ext4 /dev/drbd0 /dados Vericar se o arquivo criado no n primrio antigo, existe na nova primria. Instalando Heartbeat ( executar nos dois ns ) # aptitude install heartbeat

Conguraes
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 logle /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

5 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

node node

node1 node2

O arquivo authkeys responsvel pela autenticao deixo da seguinte forma: auth 1 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 debugle /var/log/ha-debug logle /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

6 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

baud 19200 # PORTA QUE SERA USADA udpport 694 # DETERMINANDO SE O SERVIO DEVE VOLTAR PARA O MASTER, CASO ELE VOLTE A RESPONDER auto_failback o # 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 congurao do Heartbeat devero existir na duas mquinas. Devemos colocar a montagem da partio de forma automtica, edite o arquivo 'fstab' devendo car conforme exemplo abaixo. # vim /etc/fstab /dev/drbd0 /dados ext4 _netdev,defaults 0 0

7 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

Inicie o Heartebeat nos dois ns: # /etc/init.d/heartbeat start Em seguida, conra se a interface virtual foi iniciada no n primrio: # ifcong Deve aparecer algo como mostra a gura:

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, car como 'Secondary/Primary'. Notas de erro Caso acontea dos recursos no serem migrados durante o reincio do Heartbeat, checar se os servios foram iniciados.

8 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

Caso o Apache2 esteja parado e ao iniciar receber a seguinte mensagem: Starting web server: apache2apache2: Could not reliably determine the server's fully qualied 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 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 verique ser a interface virtual foi criada digitando:

9 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

# ifcong 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 drbdadm disconnect r0 drbdadm -- --discard-my-data connect r0 drbdadm get-gi r0

Verique a sada dos logs em ambos os ns, dever ser algo semelhante a: # cat /proc/drbd Conforme mostra a gura:

Dena 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

10 of 11

12/26/2011 08:53 AM

Instalando DRBD + Heartbeat no Debian 6 [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

Verique se o IP virtual foi iniciado conforme mostra imagem:

# ifcong

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.

http://www.vivaolinux.com.br/artigo/Instalando-DRBD-+-Heartbeat-no-Debian-6 Voltar para o site

11 of 11

12/26/2011 08:53 AM

Você também pode gostar