Sei sulla pagina 1di 9

Cluster de Alta Disponibilidade com Heartbeat e DRBD no Linux CentOS 6

ltima atualizao em 19/03/2013 por Rafael Fernando Diorio.

Introduo
Para acompanhar este documento voc vai precisar dos seguintes itens:
- Pacotes de instalao do Heartbeat e do DRBD;
- Hosts Linux CentOS 6;
- Hosts MS Windows (XP ou 7, por exemplo).
Verificaes iniciais
Antes de prosseguir com a configurao de nosso cluster de alta disponibilidade no Linux CentOS, no que se refere ao ambiente
de rede adotado, nosso cluster ser representado pelo endereo IP 172.17.0.200/16 (FQDN "cluster.diorio.corp.br") e
composto pelos ns 172.17.0.1/16 (FQDN "serv001.diorio.corp.br") e 172.17.0.2/16 (FQDN "serv002.diorio.corp.br")... A
figura abaixo representa meu ambiente de implantao:

O Objetivo desse cenrio maximizar a disponibilidade da rede atravs das solues Heartbeat e DRBD (Distributed Replicated
Block Device). De modo geral, o papel do Heartbeat nesse cenrio atribuir um endereo comum a todos os ns do cluster
(nesse caso, 172.17.0.200/16) e garantir que os servios de rede nele definidos estejam disponveis caso um dos ns do
cluster falhe. Quanto ao DRBD (Distributed Replicated Block Device), seu papel implementar um dispositivo de
armazenamento distribudo entre todos os ns do cluster, como um sistema RAID (Redundant Array of Independent Disks) no
nvel de rede, garantindo a redundncia e integridade do sistema de arquivos utilizado pelo cluster.
Para finalizar nossa breve introduo, este documento contempla apenas a instalao de um cluster de alta disponibilidade
Linux e no os conceitos tericos a respeito destes... Contudo extremamente importante que voc conhea tais conceitos,
os quais podem ser obtidos em nossa literatura ou em sites Internet diversos (vide referncias).

Configurando o Heartbeat
1 - Instalao de pacotes
Ateno: Os procedimentos abaixo devem ser realizados em TODOS os ns do cluster.
Iniciando a configurao do cluster, devemos adicionar o repositrio "epel" junto aos demais repositrios do sistema para a
instalao do Heartbeat via "yum"... Dessa forma, utilize o seguinte comando para adicionar esse novo repositrio no sistema:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Obs.: Acesse o endereo http://fedoraproject.org/wiki/EPEL para verificar uma eventual nova verso do epel para o CentOS ou
se h alteraes da URL para download do mesmo.
Em seguida, utilize o comando abaixo para baixar e instalar (ou atualizar) os pacotes Heartbeat (e suas eventuais
dependncias) no sistema:
yum install heartbeat

2 - Ajustando arquivos de configurao


Ateno: Os procedimentos abaixo devem ser realizados em TODOS os ns do cluster.
Para prosseguir com a configurao do cluster ser necessrio copiar alguns arquivos de modelo de configurao do Heartbeat
para seu respectivo diretrio de configurao ("/etc/ha.d")... Sendo assim:
cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/

cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/
Obs.: Se aplicvel, altere o diretrio em negrito acima de acordo com a verso do Heartbeat instalado em seu sistema.
Em seguida, acesse o diretrio "/etc/ha.d", edite e realize as seguintes alteraes no arquivo "authkeys":
auth 2
2 sha1 p@ssw0rd
Obs.: Substitua "p@ssw0rd" pela chave de autenticao que ir utilizar em seu cluster.
Na sequncia, altere a permisso do arquivo acima para "600":
chmod 600 /etc/ha.d/authkeys
Em seguida, edite e realize as seguintes alteraes no arquivo "ha.cf":
logfile /var/log/heartbeat
logfacility local0
keepalive 2
deadtime 30
initdead 120
udpport 694
bcast eth0
auto_failback on
node serv001.diorio.corp.br
node serv002.diorio.corp.br
Obs. 1: Substitua "serv001.diorio.corp.br" e "serv002.diorio.corp.br" pelo FQDN dos ns que faro parte de seu cluster... Se
aplicvel, acrescente neste arquivo os demais ns de seu cluster.
Obs. 2: Caso no possua um DNS instalado e configurado em sua LAN, acrescente o hostname e o respectivo endereo dos
ns de seu cluster no arquivo "/etc/hosts" de TODOS os ns do cluster. Ex:
127.0.0.1 localhost.localdomain localhost
172.17.0.1 serv001.diorio.corp.br serv001
172.17.0.2 serv002.diorio.corp.br serv002
Obs. 3: Se desejar, para facilitar o processo de configurao dos demais ns do cluster, voc pode copiar todo o contedo do
diretrio "/etc/ha.d" do n j configurado para os demais ns... Como exemplo, a partir do primeiro n do cluster (n j
configurado acima), poderamos utilizar o seguinte comando para copiar sua configurao para o segundo n
(serv002.diorio.corp.br) do cluster:
scp -r /etc/ha.d/ root@serv002.diorio.corp.br:/etc
scp /etc/hosts root@serv002.diorio.corp.br:/etc
Obs.: Substitua "serv002.diorio.corp.br" pelo endereo IP (ou FQDN) do outro n de seu cluster; Execute no(s) n(s) destino
(no exemplo acima, "serv002.diorio.corp.br") o comando "chmod 600 /etc/ha.d/authkeys"; Se aplicvel, repita esse
procedimento para os demais ns de seu cluster.
Dessa forma, o processo de configurao dos demais ns do cluster seria bastante simplificado, resumindo-se, at esse ponto,
a configurao do primeiro n do cluster e de sua "replicao" (arquivos de configurao) aos demais ns do cluster.

Configurando o DRBD
1 - Verificaes iniciais
Conforme descrito anteriormente, o papel do DRBD (Distributed Replicated Block Device) implementar um dispositivo de
armazenamento distribudo entre todos os ns do cluster, como um sistema RAID (Redundant Array of Independent Disks) no
nvel de rede, garantindo a redundncia e integridade do sistema de arquivos utilizado pelo cluster...
Para viabilizar essa implantao, cada n de meu cluster possui um segundo disco (sdb) dedicado ao cluster. Nesse disco, h
uma nica partio (sdb1), a qual uma partio primria e utiliza todo o espao disponvel no disco. Essa partio no possui
nenhum sistema de arquivos configurado (no foi formatada) e no est montada em nenhum ponto de montagem no
sistema. Se desejar, voc pode alterar esse disco/partio por outro disco/partio de seu sistema.
Aps a configurao do DRBD, um "volume" (drbd0) ser associado a essa partio e replicado entre os ns do cluster.
Somente um n do cluster (n primrio) pode utilizar esse "volume" por vez. A tarefa de montar esse "volume" (viabilizar sua
utilizao) no sistema ser do Heartbeat.

2 - Instalao de pacotes
Ateno: Os procedimentos abaixo devem ser realizados em TODOS os ns do cluster.
De acordo com informaes do site oficial do DRBD (descritas em http://www.drbd.org/download/mainline), para distribuies
Linux com verses de Kernel inferiores a 2.6.33 (como o CentOS, por exemplo), alm do DRBD propriamente dito,
necessrio baixar e instalar um mdulo de kernel que viabilize a utilizao do DRBD no sistema.
Pelo fato desse mdulo ser instalado de acordo com a verso do kernel do sistema, recomendado a atualizao do kernel
para sua verso mais recente... Nesse caso, antes de baixar e instalar o DRBD e seu respectivo mdulo de kernel no sistema,
utilize o seguinte comando para atualiz-lo no sistema:

yum update kernel


No meu caso, a verso de kernel atualizada foi a "2.6.32-279.14.1.el6.i686" (utilize "uname -r" para verificar a verso de
seu kernel)... Com base em tal informao, acesse o endereo http://dl.atrpms.net/el6.0-i386/atrpms/stable/ e baixe os
pacotes "drbd" (verso mais recente, no meu caso "drbd-8.4.1-32.el6.i686.rpm") e "drbd-kmdl" (verso compatvel com a
verso de seu kernel, no meu caso "drbd-kmdl-2.6.32-279.14.1.el6-8.4.1-32.el6.i686.rpm") no sistema... Como
exemplo, os seguintes comandos podem ser utilizados para baixar tais pacotes no sistema:
wget http://dl.atrpms.net/el6.0-i386/atrpms/stable/drbd-kmdl-2.6.32-279.14.1.el6-8.4.1-32.el6.i686.rpm
wget http://dl.atrpms.net/el6.0-i386/atrpms/stable/drbd-8.4.1-32.el6.i686.rpm
Aps baixar tais pacotes, instale-os no sistema utilizando o comando "rpm"... Para os pacotes acima, os seguintes comandos
seriam necessrios para instal-los no sistema:
rpm -ivh drbd-kmdl-2.6.32-279.14.1.el6-8.4.1-32.el6.i686.rpm
rpm -ivh drbd-8.4.1-32.el6.i686.rpm
Em seguida, crie o diretrio "/var/lib/drbd" e reinicie o sistema para que ele seja inicializado com o kernel atualizado
anteriormente, bem como com o mdulo de kernel do DRBD j carregado em tal kernel...
mkdir /var/lib/drbd
reboot
Aps instalado e com seu mdulo de kernel carregado no sistema, o DRBD j pode ser configurado no sistema...

3 - Criao da partio utilizada pelo "volume" DRBD


Ateno: Os procedimentos abaixo devem ser realizados em TODOS os ns do cluster.
Conforme descrito anteriormente, cada n de meu cluster possui um segundo disco (sdb) dedicado ao cluster. Nesse disco, h
uma nica partio (sdb1), a qual uma partio primria e utiliza todo o espao disponvel no disco. Essa partio no possui
nenhum sistema de arquivos configurado (no foi formatada) e no est montada em nenhum ponto de montagem no
sistema. Se desejar, voc pode alterar esse disco/partio por outro disco/partio de seu sistema.
Nesse contexto, tendo como base a existncia de um segundo disco ("/dev/sdb") conectado em todos os ns de seu cluster,
os seguintes comandos podem ser utilizados para criar uma nova partio em tal disco:
fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): <ENTER>
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): <ENTER>
Command (m for help): w
Com o disco "ok", o DRBD j pode ser configurado.

4 - Ajustando arquivos de configurao e inicializao


Ateno: Os procedimentos abaixo devem ser realizados em TODOS os ns do cluster.
Antes de iniciar a configurao do DRBD, por medidas de precauo e segurana, faa uma cpia (backup) de seu arquivo de
configurao original, tal que se algo de errado ocorrer, possamos "voltar" nossa cpia de segurana no sistema...
cp /etc/drbd.conf /etc/drbd.conf.bkp
Em seguida, edite o arquivo acima ("/etc/drbd.conf") e deixe-o com o seguinte contedo:
# You can find an example in /usr/share/doc/drbd.../drbd.conf.example
#include "drbd.d/global_common.conf";
#include "drbd.d/*.res";
global { usage-count yes; }
resource replica_sdb {
protocol C;
startup { wfc-timeout 0; outdated-wfc-timeout 60; degr-wfc-timeout 120; }
disk { on-io-error detach; }
net { cram-hmac-alg "sha1"; shared-secret "p@ssw0rd"; }
syncer { rate 10M; }
on serv001.diorio.corp.br {
device /dev/drbd0;
disk /dev/sdb1;
address 172.17.0.1:7788;
meta-disk internal;
}
on serv002.diorio.corp.br {
device /dev/drbd0;

disk /dev/sdb1;
address 172.17.0.2:7788;
meta-disk internal;
}
}
Obs. 1: Altere "replica_sdb" pelo nome que deseja atribuir ao recurso de sincronizao DRBD. Altere "p@ssw0rd" pela chave
compartilhada que ser utilizada pela sincronizao DRBD entre os ns do cluster. Altere "serv001.diorio.corp.br" e
"serv002.diorio.corp.br" pelo FQDN dos ns de seu cluster. Altere os endereos 172.17.0.1 e 172.17.0.2 pelo endereo IP de
tais ns de seu cluster. Altere "/dev/sdb1" pela partio que ser sincronizada entre os ns de seu cluster.
Obs. 2: Se desejar, para facilitar o processo de configurao dos demais ns do cluster, voc pode copiar o arquivo acima
("/etc/drbd.conf") do n j configurado para os demais ns... Como exemplo, a partir do primeiro n do cluster (n j
configurado acima), poderamos utilizar o seguinte comando para copiar sua configurao para o segundo n
(serv002.diorio.corp.br) do cluster:
scp /etc/drbd.conf root@serv002.diorio.corp.br:/etc/
Obs.: Substitua "serv002.diorio.corp.br" pelo endereo IP (ou FQDN) do outro n de seu cluster; Se aplicvel, repita esse
procedimento para os demais ns de seu cluster.
Em seguida, utilize o comando abaixo para criar o metadados ("device metadata") do recurso DRBD:
drbdadm create-md replica_sdb
Obs.: Se aplicvel, altere "replica_sdb" (acima) pelo nome de se recurso de sincronizao DRBD.
Na sequncia, inicialize o DRBD no sistema... Observe que um n "aguarda" (por 120 segundos) a inicializao do outro n na
rede...
service drbd start
Obs.: O comando acima (para inicializao do DRBD) foi executado de modo praticamente simultneo em TODOS os ns do
cluster.
Aps configurar e iniciar o DRBD em ambos os ns do cluster, pode-se utilizar o comando abaixo para verificar o "status" do
DRBD entre tais ns...
cat /proc/drbd
Se tudo ocorreu bem, ambos os ns estaro conectados e o status dos discos entre os ns ser "Incosistent" (esse "status"
normal nesse momento)... Observe que ambos os ns DRBD so tidos como "Secondary" nesse momento...
version: 8.4.1 (api:1/proto:86-100)
GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by gardner@, 2012-05-24 20:38:09
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:20964116
Ao final, utilize os comandos abaixo (tambm em todos os ns do cluster) para definir a inicializao automtica do DRBD no
sistema:
chkconfig --add drbd
chkconfig drbd on
Obs.: Uma outra opo para se definir quais servios sero (ou no) iniciados automaticamente durante o processo de boot do
servidor atravs do "front-end" exibido a partir do comando "ntsysv".

5 - Executando a sincronizao inicial ("initial full synchronization") do "volume" DRBD


Ateno: Os procedimentos abaixo devem ser realizados somente no n principal do cluster (no meu caso,
"serv001.diorio.corp.br").
Utilize o comando abaixo para iniciar a sincronizao inicial do "volume" DRBD ("initial full synchronization") entre os ns do
cluster. Parte-se do ponto que o n primrio do cluster (no meu caso, "serv001.diorio.corp.br") ser o "source" inicial de tal
recurso...
drbdadm primary --force replica_sdb
Obs.: Se aplicvel, altere "replica_sdb" (acima) pelo nome de se recurso de sincronizao DRBD.
Voc pode acompanhar o processo de sincronizao inicial do DRBD a partir do arquivo "/proc/drbd" ("cat /proc/drbd")...
Observe que o n atual, tido, nesse momento, como n primrio DRBD...
version: 8.4.1 (api:1/proto:86-100)
GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by gardner@, 2012-05-24 20:38:09
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----ns:229208 nr:0 dw:0 dr:233120 al:0 bm:13 lo:0 pe:1 ua:4 ap:0 ep:1 wo:b oos:20735764
[>....................] sync'ed: 1.2% (20248/20472)M
finish: 0:07:33 speed: 45,668 (45,668) K/sec
Observe os "status" e o percentual de sincronizao DRBD (acima, em negrito)... Aps a concluso do processo de
sincronizao, o "volume" DRBD tido como "UpToDate" (em negrito, abaixo)...
version: 8.4.1 (api:1/proto:86-100)

GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by gardner@, 2012-05-24 20:38:09


0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----ns:20964116 nr:0 dw:0 dr:20964788 al:0 bm:1280 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Aps sincronizado, o "volume" DRBD precisa ser formatado para, posteriormente, ser utilizado pelos ns do cluster... Para
format-lo utilizando o sistema de arquivos "Ext3", o seguinte comando pode ser utilizado:
mkfs -t ext3 /dev/drbd0
Aps formatado, o "volume" DRBD j est pronto para utilizao, necessitando apenas ser montado no sistema... Vale
ressaltar que somente um n (n primrio DRBD) pode utilizar o volume por vez...

6 - Testando o acesso ao "volume" DRBD


Conforme descrito anteriormente, somente um n pode utilizar o "volume" DRBD por vez... Esse n o n primrio DRBD (no
meu caso, n "serv001.diorio.corp.br")... Esse status de n primrio pode ser observado, por exemplo, a partir do arquivo
"/proc/drbd", conforme exibido no tpico anterior...
Nesse contexto, no n "serv001.diorio.corp.br" (n primrio DRBD), para testar o "volume" DRBD, basta mont-lo no
sistema... Ex.:
mkdir /dados
mount /dev/drbd0 /dados
Obs.: Substitua "/dados" pelo diretrio que deseja montar o "volume" DRBD no sistema.
Aps montado, pode-se criar um ou mais arquivos no "volume" DRBD... Ex.:
touch /dados/arq1.txt; mkdir /dados/pasta1; cp /var/log/messages /dados
Obs.: Substitua "/dados" pelo diretrio que deseja montar o "volume" DRBD no sistema.
A gravao dos arquivos deve ocorrer de modo natural no volume DRBD...
Prosseguindo com nosso teste, vamos montar esse "volume" no segundo n de nosso cluster (no meu caso,
"serv002.diorio.corp.br") e certificar-se que todos os arquivos criados no atual n primrio (no meu caso,
"serv001.diorio.corp.br")... Para tal, devemos desmontar esse "volume" no n primrio e torn-lo n secundrio DRBD...
umount /dados
drbdadm secondary replica_sdb
Obs.: Se aplicvel, altere "replica_sdb" (acima) pelo nome de se recurso de sincronizao DRBD e "/dados" pelo diretrio
montado no "volume" DRBD.
Em seguida, no segundo n do cluster (no meu caso, "serv002.diorio.corp.br"), temos que torn-lo n primrio DRBD, montar
o "volume" DRBD e certificar que todos os arquivos criados no primeiro n do cluster (no meu caso, "serv001.diorio.corp.br")
esto presentes em tal volume...
mkdir /dados
drbdadm primary replica_sdb
mount /dev/drbd0 /dados
ls /dados
Obs.: Se aplicvel, altere "replica_sdb" (acima) pelo nome de se recurso de sincronizao DRBD e "/dados" pelo diretrio que
deseja montar o "volume" DRBD no sistema.
Se tudo ocorrer bem, o "volume" DRBD ser montado corretamente no segundo n do cluster e todos os arquivos criados no
primeiro n estaro presentes em tal volume... Isso atesta que o DRBD est funcionando corretamente e j pode ser integrado
ao Heartbeat...
Observe que, manualmente, o processo para utilizao do recurso DRBD consiste em definir quem ser o n primrio DRBD e
na montagem do "volume" DRBD em tal n... Somente um n pode ser o n primrio DRBD e somente esse n pode utilizar o
"volume" DRBD... Para tornar um n como primrio ou secundrio DRBD pode-se utilizar o comando "drbdadm
primary/secondary recurso_drbd" (conforme exemplos acima).
Ao final, desmonte o "volume" DRBD em utilizao pelo segundo n do cluster (no meu caso, "serv002.diorio.corp.br") e
defina-o como segundo n secundrio DRBD e volte a utilizar o "volume" DRBD no n primrio do cluster (no meu caso,
"serv001.diorio.corp.br")...
# No segundo n do cluster (no meu caso, "serv002.diorio.corp.br")
umount /dados
drbdadm secondary replica_sdb
# No primeiro n do cluster (no meu caso, "serv001.diorio.corp.br")
drbdadm primary replica_sdb
mount /dev/drbd0 /dados
Obs.: Se aplicvel, altere "replica_sdb" (acima) pelo nome de se recurso de sincronizao DRBD e "/dados" pelo diretrio
utilizado na montagem do "volume" DRBD.

7 - Resolues de problemas
Durante o processo de testes com o DRBD, desliguei um de meus hosts (n primrio DRBD, no meu caso
"serv001.diorio.corp.br") e, aps algum tempo, ambos os ns ficaram como "status StandAlone"...

# No primeiro n do cluster (no meu caso, "serv001.diorio.corp.br")


[root@serv001 ~]# cat /proc/drbd
version: 8.4.1 (api:1/proto:86-100)
GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by gardner@, 2012-05-24 20:38:09
0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown r----ns:0 nr:0 dw:20 dr:2103 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:4
# No segundo n do cluster (no meu caso, "serv002.diorio.corp.br")
[root@serv002 ~]# cat /proc/drbd
version: 8.4.1 (api:1/proto:86-100)
GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by gardner@, 2012-05-24 20:38:09
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r----ns:0 nr:0 dw:60 dr:705 al:3 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:48
O "volume" DRBD podia ser montado em ambos os ns (conforme exemplos anteriores), porm os arquivos criados em um
n no eram visveis ao outro n (o DRBD no estava sincronizando os diretrios)...
Para voltar a estabelecer a conexo DRBD entre ambos os ns do cluster, os seguintes comandos foram utilizados:
# No primeiro n do cluster (no meu caso, "serv001.diorio.corp.br")
[root@serv001 ~]# drbdadm connect all
[root@serv001 ~]# cat /proc/drbd
version: 8.4.1 (api:1/proto:86-100)
GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by gardner@, 2012-05-24 20:38:09
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----ns:0 nr:0 dw:20 dr:2103 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:4
# No segundo n do cluster (no meu caso, "serv002.diorio.corp.br")
[root@serv002 ~]# drbdadm -- --discard-my-data connect all
[root@serv002 ~]# cat /proc/drbd
version: 8.4.1 (api:1/proto:86-100)
GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by gardner@, 2012-05-24 20:38:09
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r----ns:0 nr:48 dw:108 dr:705 al:3 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Vale ressaltar que os comandos "drbdadm connect all" e "drbdadm -- --discard-my-data connect all" foram executados de
modo praticamente simultneo em ambos os ns DRDB... Se necessrio, repita-os at o estabelecimento da conexo...
Aps esse procedimento, a sincronizao DRDB voltou a ocorrer normalmente entre os ns do cluster.

Integrando o DRBD ao Heartbeat e validando a configurao do cluster


1 - Integrando o DRBD ao Heartbeat
Ateno: Os procedimentos abaixo devem ser realizados em TODOS os ns do cluster.
Acesse o diretrio "/etc/ha.d", edite o arquivo "haresources" e adicione a seguinte linha de configurao ao final de seu
contedo:
serv001.diorio.corp.br 172.17.0.200 drbddisk::replica_sdb Filesystem::/dev/drbd0::/dados::ext3
Obs.: Substitua "serv001.diorio.corp.br" pelo FQDN do n primrio de seu cluster e "172.17.0.200" pelo endereo que deseja
atribuir a seu cluster. Se aplicvel, altere "replica_sdb" pelo nome de se recurso de sincronizao DRBD, "/dados" pelo diretrio
que deseja montar o "volume" DRBD no sistema e "ext3" pelo tipo de sistema de arquivos do "volume" DRBD.
Em seguida, repita esse procedimento nos demais ns do cluster...
Se aplicvel, para facilitar o processo de configurao do cluster, voc pode copiar o arquivo acima ("haresources") para os
demais ns do cluster... Ex.: Cpia para o n "serv002.diorio.corp.br":
scp /etc/ha.d/haresources root@serv002.diorio.corp.br:/etc/ha.d
Obs.: Substitua "serv002.diorio.corp.br" pelo endereo IP (ou FQDN) do outro n de seu cluster; Se aplicvel, repita esse
procedimento para os demais ns de seu cluster.
Na sequncia, utilize o comando abaixo para inicializar o Heartbeat no sistema:
service heartbeat start
Obs.: Substitua a opo "start" do comando "service" (acima) por "stop" para parar o servio em questo, por "restart" para
reiniciar tal servio, por "reload" para refletir uma alterao realizada nos arquivos de configurao do Heartbeat sem a
necessidade de reinici-lo ou por "status" para verificar se ele est ou no em execuo.
Em seguida, utilize os comandos abaixo para definir a inicializao automtica do Heartbeat no sistema:
chkconfig --add heartbeat
chkconfig heartbeat on
Obs.: Uma outra opo para se definir quais servios sero (ou no) iniciados automaticamente durante o processo de boot do
servidor atravs do "front-end" exibido a partir do comando "ntsysv".

2 - Validando as configuraes do cluster


Para validar as configuraes do cluster, pare o Hertbeat no n primrio do cluster (no meu caso, "serv001.diorio.corp.br"...

Ex.:
[root@serv001 ~]# service heartbeat stop
Stopping High-Availability services: Done.
Se tudo ocorrer bem, o "volume" DRBD ser automaticamente montado (em questes de segundos) no segundo n do cluster
(no meu caso, "serv002.diorio.corp.br"... Ex.:
[root@serv002 ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/drbd0 on /dados type ext3 (rw)
Ao ativar o Heartbeat no n primrio do cluster, o "volume" DRBD desmontado do n secundrio e automaticamente
montado (em questes de segundos) no n primrio... Ex.:
[root@serv001 ha.d]# service heartbeat start
Starting High-Availability services: IPaddr[6265]: INFO: Resource is stopped
Done.
[root@serv001 ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/drbd0 on /dados type ext3 (rw)
Em resumo, quando o n primrio do cluster falhar (no meu caso, "serv001.diorio.corp.br"), o "volume" DRBD
automaticamente montado (em questes de segundos) no segundo n do cluster (no meu caso, "serv002.diorio.corp.br"),
garantindo a alta disponibilidade de tal recurso... Quando o n primrio volta a funcionar, o "volume" DRBD volta a ser montado
em tal n.

Alta disponibilidade para o servidor web Apache


Ateno: Este artigo apenas demonstra como inicializar o servidor web Apache no cluster Heartbeat e integr-lo ao
"volume" DRBD. Para detalhes de configurao do servidor web Apache, vide artigo "Servidores Web/Intranet com
Apache no Linux CentOS 6".
1 - Integrando o Apache ao Heartbeat (com DRBD)
Ateno: Os procedimentos abaixo devem ser realizados em TODOS os ns do cluster.
Acesse o diretrio "/etc/ha.d", edite o arquivo "haresources" e adicione a seguinte entrada de configurao (em negrito) na
linha de configurao de montagem do "volume" DRBD...
serv001.diorio.corp.br 172.17.0.200 drbddisk::replica_sdb Filesystem::/dev/drbd0::/dados::ext3 httpd
Em seguida, edite o arquivo de configurao do servidor web Apache ("/etc/httpd/conf/httpd.conf") e altere as entradas
"/var/www/html" para "/dados/portal", tal que todos os arquivos web do servidor web Apache sejam armazenados/lidos a
partir desse diretrio ("/dados/portal")... Ex.:
:
# DocumentRoot "/var/www/html"
DocumentRoot "/dados/portal"
:
# <Directory "/var/www/html">
<Directory "/dados/portal">
:
Em seguida, repita esse procedimento nos demais ns do cluster...
Se aplicvel, para facilitar o processo de configurao do cluster, voc pode copiar os arquivos acima ("haresources" e
"httpd.conf") para os demais ns do cluster... Ex.: Cpia para o n "serv002.diorio.corp.br":
scp /etc/ha.d/haresources root@serv002.diorio.corp.br:/etc/ha.d
scp /etc/httpd/conf/httpd.conf root@serv002.diorio.corp.br:/etc/httpd/conf/
Obs.: Substitua "serv002.diorio.corp.br" pelo endereo IP (ou FQDN) do outro n de seu cluster; Se aplicvel, repita esse
procedimento para os demais ns de seu cluster.
Na sequncia, no n que possui o "volume" DRBD montado (no meu caso, n "serv001.diorio.corp.br"), crie o diretrio
"portal"...
[root@serv001 ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)


devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/drbd0 on /dados type ext3 (rw)
[root@serv001 ~]# mkdir /dados/portal
Em seguida, utilize o comando abaixo para validar as alteraes realizadas junto ao Heartbeat no sistema:
service heartbeat restart
Para validar o acesso ao servidor web Apache, ainda no n que possui o "volume" DRBD montado (no meu caso, n
"serv001.diorio.corp.br"), crie uma pgina web qualquer em "/dados/portal"...
Como exemplo, partindo do ponto que seu servidor web Apache possui suporte a PHP, a seguinte pgina poderia ser criada
(como nome "index.php") em "/dados/portal" para efeitos de testes ao cluster:
<?php
$cmd = "/bin/hostname";
$saida = shell_exec($cmd);
echo "<pre>";
echo "<hr><p align=center>";
echo "Portal cluster.diorio.corp.br";
echo " | Pagina armazenada em $saida";
echo "</p><hr>";
echo "</pre>";
?>
Obs.: Caso seu servidor web Apache no possua suporte ao PHP, crie uma pgina qualquer de nome "index.html", por
exemplo.
Em seguida, a partir de um cliente da LAN, utilizando um browser qualquer, acesse a URL "http://SEU_CLUSTER", em que
"SEU_CLUSTER" representa o FQDN (ou endereo IP) de seu cluster (no meu caso "cluster.diorio.corp.br" ou
"172.17.0.200")...
Obs.: Vale ressaltar que no necessrio inicializar o Apache no sistema, bem como definir o endereo do cluster no mesmo...
Isso realizado automaticamente pelo Heartbeat.
Se tudo ocorrer bem, a pgina web armazenada no "volume" DRBD ser exibida ao cliente em questo...

Obs.: Caso no possua um DNS configurado em sua LAN, altere "cluster.diorio.corp.br" pelo endereo IP atribudo ao cluster
(no meu caso, 172.17.0.200).
Caso o n primrio do cluster deixe de funcionar, a requisio HTTP automaticamente atendida pelo segundo n do cluster e
a pgina web continua sendo exibida ao cliente...

Em resumo, quando o n primrio do cluster falhar (no meu caso, "serv001.diorio.corp.br"), o "volume" DRBD
automaticamente montado (em questes de segundos) no segundo n do cluster (no meu caso, "serv002.diorio.corp.br") e o
Apache automaticamente iniciado em tal n, garantindo a alta disponibilidade de tais recursos... Quando o n primrio volta a
funcionar, o "volume" DRBD volta a ser montado no n primrio e as requisies web voltam a ser atendidas por tal n.

Referncias
1 - CentOS Project em http://www.centos.org/;
2 - Heartbeat Project em http://www.linux-ha.org/;
3 - DRBD Project em http://www.drbd.org/;
4 - Heartbeat Documentation em http://www.linux-ha.org/doc/users-guide/users-guide.html;
5 - DRBD Documentation em http://www.drbd.org/docs/about/;
6 - Livro Redes de Computadores e a Internet Uma abordagem top-down, dos autores James F. Kurose e Keith W. Ross.

Apontar erros ou sugerir melhorias


Deixar um comentrio
Imprimir documento
Indicar contedo

Keywords: cluster linux centos, install cluster linux centos, drbd centos, cluster loadbalance centos, cluster heartbeat centos, heartbeat apache samba dhcp
linux centos, cluster ha linux centos, manage linux windows, rhel, sl, centos 6.

Potrebbero piacerti anche