Tabela de conteúdo |
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.
Vamos nomear nosso servidores de:
cada um deles contendo 2 interfaces de rede:
e o segundo nó:
onde a eth1 será utilizada para comunicação entre eles usando um cabo crossover.
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.
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.
Primeiro vamos instalar os pacotes necessários:
# yum install heartbeat
é necessário instalar este pacote nos 2 nós.
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)