Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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:
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".
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"...
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.
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.
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.