Heartbeat

De Wiki
Ir para: navegação, pesquisa

Heartbeat

Sobre

O heartbeat é um processo que fornece uma infraestrutura de cluster (comunicação entre membros) para serviços aos seus clientes. Isso permite aos clientes saber sobre o aparecimento (ou desaparecimento) de processos em outroas máquinas e fácilmente trocar mensagens entre elas.

Descrição do Ambiente

Vamos nomear nosso servidores de:

  • node01
  • node02

cada um deles contendo 2 interfaces de rede:

  • node01:
    • eth0 10.0.1.110/24
    • eth1 172.16.0.10/24

e o segundo nó:

  • node02:
    • eth0 10.0.1.111/24
    • eth1 172.16.0.11/24

onde a eth1 será utilizada para comunicação entre eles usando um cabo crossover.

Debian Lenny 5.0

Pacotes necessários

Será necessário instalar alguns pacotes, primeiro vamos instalar os responsáveis pela alta disponibilidade na rede:

# apt-get install heartbeat-2

agora vamos copiar as configurações necessárias para a ativação do heartbeat.

Configurações Básicas

Vamos copiar as configurações padrões já armazenadas no diretório de documentação do Debian:

# cd /usr/share/doc/hearbeat
# cp authkeys ha.cf.gz haresources.gz /etc/ha.d/

é necessário realizar as configurações, então vamos começar editando a forma de autenticação do heartbeat:

# vim /etc/ha.d/authkeys
auth 3
3 md5 senha
# chmod 0600 /etc/ha.d/authkeys
# cd /etc/ha.d/
# gunzip ha.cf.gz

é necessário editar o arquivo de configuração do HA:

# vim ha.cf
logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast   eth1     # Linux
auto_failback on
node node01
node node02

isso vai definir a interface eth1 como interface de comunicação dos dois nós e os parâmetros node, são para especificar quem faz parte do ambiente. Uma vez que já definimos a configuração principal, precisamos registrar as informações dos recursos:

# gunzip  haresources.gz
# vim haresources
node01 \
 IPaddr2::10.0.1.110/24/eth0/10.0.1.255 \
 apache2

isso significa que o node01 usará o IP 10.0.1.110/24 e o serviço apache2 será inicializado. Mas antes de continuarmos precisamos desabilitar a inicialização automática so apache e da placa de rede eth0:

# update-rc.d -f apache2 remove
# vim /etc/network/interface
#allow-hotplug eth0
#iface eth0 inet dhcp

node que as linhas da interface eth0 foram comentadas. Repita a mesma configuração na node02 e depois reinicialize ambos os servidores. Uma dica é, se você tem dúvida em qual o nome correto a ser definido no parametro node, use:

# uname -n

e pronto.

Um problema que encontramos foi que apenas desabilitar a interface eth0 do network não era o suficiente para que o ambiente funcionasse corretamente, foi necessário definir as redes das placas secundárias eth1 com as devidas configurações em cada nó:

# vim /etc/network/interfaces

Com isso, nossos servidores já estão controlando corretamente a atividade do Apache2.


CentOS/RedHat 5.5

Pacotes necessários

Primeiro vamos instalar os pacotes necessários:

# yum install heartbeat

é necessário instalar este pacote nos 2 nós.

Configurações Básicas

Agora vamos copiar as configurações necessárias para a ativação do heartbeat:

# cd /usr/share/doc/heartbeat-2.1.3/
# cp ha.cf haresources authkeys /etc/ha.d/
# vim /etc/ha.d/authkeys
auth 3
3 md5 senha
# chmod 0600 authkeys

agora vamos definir como o hearbeat vai se comportar:

# vim /etc/ha.d/ha.cf
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast   eth1            # Linux
auto_failback on
node node01
node node02

a configuração é simplesmente igual a que foi feita no Debian. Vamos definir os recursos que estão compartilhados:

# vim /etc/ha.d/haresources
node01 \
 IPaddr2::10.0.1.101/24/eth0/10.0.1.255 \
 httpd

faltou instalar o pacote do Apache2.2, faça isso para seguirmos ao próximo passo. o CentOS por padrão não ativa o Apache para inicializar automaticamente, e isso é com, pois deixamos este trabalho para o heartbeat. Copie as configurações do /etc/ha.d/ que você fez, para o segundo nó:

# scp -r ha.d/ha.cf root@10.0.1.111:/etc/ha.d/
# scp -r ha.d/haresources root@10.0.1.111:/etc/ha.d/
# scp -r ha.d/authkeys root@10.0.1.111:/etc/ha.d/

edite o seu o arquivo de hosts no nó 1 para:

# vim /etc/hosts
127.0.0.1               node01.localdomain node01
10.0.1.111              node02

e troque o nome corretamente:

# vim /etc/sysconfig/network
...
HOSTNAME=node01

e no nó 2 para:

# vim /etc/hosts
127.0.0.1               node02.localdomain node02
10.0.1.110              node01
# vim /etc/sysconfig/network
...
HOSTNAME=node02

a interface que será controlada pelo heartbeat não deve ser ativada na inicialização:

# vim /etc/sysconfig/network-scripts/ifcfg-eth0
...
ONBOOT=no

reinice o serviço do hearbeat nos 2 servidores.

# service heartbeat restart

um detalhe importante é que se os nomes não estiverem corretos após alterar, reinicie o servidor para garantir que os nomes sejam modificados nos nós.

TODO: está dando um problema pois a interface eth0 não está levantando com o heartbeat, fase de testes.


--Brivaldo 19h45min de 7 de novembro de 2010 (UTC)