Sie sind auf Seite 1von 13

Instalao do DRBD + Heartbeat + Apache2

Baseado no tutorial: http://www.guiadohardware.net/tutoriais/drbd-heartbeat-samba/ Douglas Baiocco 11/11/2009 O DRBD um software que permite fazer RAID pela rede, ou seja, podemos replicar dados de parties inteiras pela rede. um recurso extraordinrio para servidores crticos, onde seus dados no podem ser perdidos. Nesse teste, utilizaremos duas mquinas virtuais identicas (copie a maquina virtual existente). Primeiramente, as duas mquinas so Linux, rodando Ubuntu 9.10, instaladas apenas com o sistema bsico. Abaixo o nome e o IP das mquinas: Nome das mquinas (Altere as conguraes necessria para car como descrito): Node1 10.0.0.1 Node2 10.0.0.2

A partio que eu criei nas duas mquinas est em /dev/md0, um RAID5 com 3 parties e 1 de spare. interessante observar que os dois micros devem ter parties separadas para replicao (uso do DRBD), como por exemplo: Node1 /dev/sda - 2 parties de 5GB - Sistema operacional /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 - RAID5 -> /dev/md0 - partio a ser replicada (ponto de montagem /kplus) Node2 /dev/sda - 2 parties de 5GB - Sistema operacional /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 - RAID5 -> /dev/md0 - partio a ser replicada (ponto de montagem /kplus)

Para manter o RAID mesmo aps a reinicializao do sistema execute o seguinte comando, como root, aps a sua criao: # mdadm --misc --detail --brief /dev/md0 >> /etc/mdadm/mdadm.conf Podemos tambm reservar discos inteiros para a replicao, depende muito do oramento que pode ser gasto. O nome da pasta que estou utilizando para montar o sistema de arquivos /dev/md0 /kplus em ambas. O primeiro passo fazer com que as duas mquinas possam ser pingadas por nomes, para isso altere o arquivo hosts: Node1: # vim /etc/hosts Deixar como segue:

! ! ! Node2:

127.0.0.1 127.0.1.1 10.0.0.2! !

localhost node1.cluster node1 node2

# vim /etc/hosts Deixar como segue: ! ! ! 127.0.0.1 127.0.1.1 10.0.0.1 ! localhost node2.cluster node2 node1

Para vericar: Node1: # ping node2 Node2: # ping node1 Em seguida, instale as ferramentas com o comando: Node1: # apt-get install drbd8-utils drbd8-source build-essential module-assistant # cd /usr/src/drbd8.../drbd # make # make install # modprobe drbd Node2: # apt-get install drbd8-utils drbd8-source build-essential module-assistant # cd /usr/src/drbd8.../drbd # make # make install # modprobe drbd O prximo passo congurar o arquivo /etc/drbd.conf nas duas mquinas (deixar o arquivo exatamente igual nas duas). Node1: # vim /etc/drbd.conf Node2:

# vim /etc/drbd.conf Adicione as linhas abaixo:


global { usage-count yes; } common { # Velocidade de transferencia (utilize em torno de 40% a 60% da sua banda total) syncer { rate 100M; } } # Nome do resource em questao (sera utilizado como referencia nos comandos posteriores) resource dados { 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' root@localhost"; split-brain "echo split-brain. drbdadm -- --discard-my-data connect $DRBD_RESOURCE ? | mail -s 'DRBD Alert' root@localhost"; } startup { degr-wfc-timeout 120; } disk { on-io-error } net { sndbuf-size 512k; timeout 60; # 6 seconds (unit = 0.1 seconds) connect-int 10; # 10 seconds (unit = 1 second) ping-int 10; # 10 seconds (unit = 1 second) ping-timeout 5; # 500 ms (unit = 0.1 seconds) max-buffers 20480; cram-hmac-alg "sha1"; shared-secret "dfadspuy234523n";# esta chave uma senha de conexao, de qualquer valor 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 node1 { device /dev/drbd0; #aqui ser o endereo do dispositivo (disco) virtual do DRBD disk /dev/sda2; #aqui ser a partio do disco que ser replicada address 192.168.241.10:7788; #IP do node1 meta-disk internal; #onde ser o meta-disk drbd(ficar junto com o resto do sistema)

# 2 minutes.

detach;

# novamente referente a transferencia de rede

} on node2 { device /dev/drbd0; #aqui ser o endereo do dispositivo (disco) virtual do DRBD disk /dev/sda2; #aqui ser a partio do disco que ser replicada address 192.168.241.20:7788; #IP do node1 meta-disk internal; #onde ser o meta-disk drbd (ficar junto com o resto do sistema) } }

Meta-disk disco temporrio utilizado pelo drbd para armazenamento.

Desmontar as parties nas duas mquinas: Node1: # umount /kplus Node2: # umount /kplus Em seguida, retirare a entrada para a pasta /kplus do fstab das duas mquinas (ou comente com # se existir): Node1: # vim /etc/fstab Node2: # vim /etc/fstab necessrio zerar a partio que ser replicada nas duas mquinas: Node1: # dd if=/dev/zero of=/dev/md0 bs=1M count=128 Node2: # dd if=/dev/zero of=/dev/md0 bs=1M count=128 Criar o disco virtual: Node1: # drbdadm create-md dados Node2: # drbdadm create-md dados Atar o disco nas duas mquinas:

Node1: # drbdadmattachdados Node2: # drbdadmattachdados Sincronizar: Node1: # drbdadmsyncerdados Node2: # drbdadmsyncerdados Iniciar replicao no node1: Node1: # drbdadm----overwrite-data-of-peerprimary dados Reiniciar o servio nas duas mquinas: Node1: # /etc/init.d/drbd restart Node2: # /etc/init.d/drbd restart Verique se a sincronizao comeou: Node1: # cat /proc/drbd Verique se o resultado est parecido com o apresentado abaixo:
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 0: cs:SyncSource st:Secondary/Secondary ds:UpToDate/Inconsistent C r--ns:898320 nr:0 dw:0 dr:909728 al:0 bm:54 lo:0 pe:15 ua:357 ap:0 [==>.................] sync'ed: 18.5% (3892/4769)M finish: 0:00:39 speed: 99,760 (99,760) K/sec resync: used:2/61 hits:56431 misses:56 starving:0 dirty:0 changed:56 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0

Aps a sincronizao ter terminado, verique o resultado do comando novamente: Node1:

# cat /proc/drbd Verique se o resultado est parecido com o apresentado abaixo:


version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 0: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--ns:4883572 nr:0 dw:0 dr:4883572 al:0 bm:299 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:304925 misses:299 starving:0 dirty:0 changed:299 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0

Denindo mquina primria: Node1: # drbdadm primary all Node2: # drbdadm secondary all Formate o disco virtual no node1: Node1: # mkfs.ext3 /dev/drbd0 Caso precise alterar a mquina primria e secundria, use: Node1: # drbdadm secondary all Node2: # drbdadm primary all Adicione no fstab das duas mquinas: Node1: # vim /etc/fstab Adicione a linha: /dev/drbd0! Node2: # vim /etc/fstab Adicione a linha: /dev/drbd0! /kplus! ! ext3 noauto! ! 0! 0 /kplus! ! ext3 noauto! ! 0! 0

Realizando testes: Monte a pasta no node1: Node1 # mount /kplus Crie um arquivo na pasta montada, com qualquer contedo: Node1 # ls / > /kplus/teste.txt Verique se o arquivo foi criado: Node1 # ls /kplus Desmonte a pasta: Node1 # umount /kplus Dena o node1 como secundrio: Node1 # drbdadm secondary all Dena o node2 como primrio: Node2 # drbdadm primary all Monte a pasta no node2: Node2 # mount /kplus Verique se o arquivo foi criado: Node2 # ls /kplus Caso acontea o que chamamos de split brain (os micros passam a trabalhar separados) tero que ser feita algumas aes.

Voc pode vericar em /proc/drbd: se aparecer Standalone, provvel que voc tenha o problema. Mquina que voc acha que tem dados invlidos: # drbdadmsecondarydados # drbdadm----discard-my-dataconnectdados E na mquina que est correta: # drbdadmconnectdados

Instalando e congurando o Heartbeat


O Heartbeat o software responsvel por monitorar os computadores que fazem parte da replicao e tomar atitudes de acordo com os casos encontrados. Podemos dizer que este o corao do que conhecemos como HA (alta disponibilidade). Abaixo, veremos como instalar e congurar o heartbeat, dando continuao aos passos anteriores, quando conguramos o DRBD. A congurao que vamos realizar do Heartbeat ir criar um novo IP virtual na rede (10.0.0.50) que chamaremos de GEMINI (gmeos). Os usurios acessaro os dados compartilhados pelo IP virtual e as duas mquinas (node1 e node2) respondero por ele. Em caso de perda de qualquer uma das mquinas, o Heartbeat ir recongurar os equipamentos para que o IP virtual continue respondendo. Temos um desenho sobre como car a estrutura:

10.0.0.1

10.0.0.50

10.0.0.2 Vamos instalao: Node1: # apt-get install heartbeat Node2: # apt-get install heartbeat Congurar o arquivo ha.cf nas duas mquinas: Node1: # vim /etc/ha.d/ha.cf Node2:

# vim /etc/ha.d/ha.cf Deixar como segue: #informe os nomes dos computadores que formam a replicao(deve ser igual a sada do comando "uname -n node node1 node node2 #qual a interface vai ser usada para comunicao udp eth0 #arquivos de log debugfile /var/log/ha-debug logfile /var/log/ha-log #freqncia, em segundos, da verificao das mquinas keepalive 1 #tempo mnimo para declarar a outra mquina como morta deadtime 5 Congurar o arquivo haresources nas duas mquinas Node1: # vim /etc/ha.d/haresources Node2: # vim /etc/ha.d/haresources Deixar como segue: node1 drbddisk::dados Filesystem::/dev/drbd0::/kplus::ext3 10.0.0.50 apache2 Obs.: node1 nome da mquina principal drbddisk utilitrio do heartbeat para gerenciar o drbd dados nome do dispositivo do drbd (congurado no drbd.conf) lesystem utilitrio para montagem de partio /dev/drbd0 nome da unidade do drbd /kplus nome do local de montagem do disco do drbd ext3 sistema de arquivos do disco do drbd 10.0.0.50 IP virtual

apache2 script do init.d para o apache2 (pode ser qualquer um dos scripts. ex.: samba)

Congurar o arquivo authkeys nas duas mquinas (para efeito da autenticao da replicao): Node1: # vim /etc/ha.d/authkeys Node2: # vim /etc/ha.d/authkeys Deixar como segue: auth 3 3 md5 digiteumafrase Mudar os atributos do arquivo authkeys Node1: # chmod 600 /etc/ha.d/authkeys Node2: # chmod 600 /etc/ha.d/authkeys Reinicie o servio do heartbeat Node1: # /etc/init.d/heartbeat restart Node2: # /etc/init.d/heartbeat restart

Testando
Verique se o IP virtual est respondendo executando um ping de uma mquina da rede rodando Windows ou Linux (supondo que voc tenha uma mquina cliente). ping 192.168.241.15 t Desligue, reinicie ou retire o cabo de rede do node1 (se for uma mquina fsica). Verique que o IP para de responder no momento em que o node1 cai e aps alguns segundos retorna, sendo gerenciado pelo node2.

Voc pode conferir o resultado do comando ifcong no node1, veja que ele tem um IP virtual (antes de deslig-lo):

No momento do desligamento do node1, o IP virtual passa a ser gerenciado pelo node2, como pode ser visto no resultado do comando ifcong no node2:

Das könnte Ihnen auch gefallen