GNU/Linux
 
 
HeartBeat | Linux-HA
(alta disponibilidade)

Heartbeat é usado para provê cluster no esquema "ativo" "passivo" ou "master" "slave".






ATIVO (SERVIDOR QUE SERÁ O MASTER - 10.1.1.1)


Instalação do Heartbeat (linux-ha)
# apt-get install heartbeat


CONFIGURAÇÃO
# vi /etc/ha.d/ha.cf
logfacility daemon
node master_hostname slave_hostname (master_hostname = hostname deste servidor, ou seja, do master | slave_hostname = hostname do outro servidor remoto que fará parte do cluster, ou seja, do slave)
keepalive 3
deadtime 10
ucast eth0 10.1.1.2 (eth0 = interface de rede deste servidor [master] por onde os pacotes de heartbeat sairão. 10.1.1.2 endereço IP do outro servidor remoto [slave] que fará parte do cluster)
auto_failback yes


CONFIGURAÇÃO
# vi /etc/ha.d/haresources
master_hostname 10.1.1.3 (master_hostname = hostname deste servidor [master]. 10.1.1.3 endereço IP virtual do cluster. Ex2: master_hostname 10.1.1.3/24/eth0 apache2 samba -> master_hostname = hostname deste servidor [master]. 10.1.1.3/24 endereço IP/CIDR virtual do cluster. eth0 interface de rede que subirá o endereço e a interface virtual do cluster, geralmente a interface ficará assim "eth0:0". apache2 samba = serviço que irão iniciar/startar ao iniciar o heartbeat - esses serviços são veriricados em um destes dois diretórios: "/etc/ha.d/resource.d" e "/etc/init.d")


CONFIGURAÇÃO
# vi /etc/ha.d/authkeys
auth 1
1 sha1 xxx (xxx = chave compartilhada usada para criptografar as comunicações entre o Master e Slave do cluster)
# chmod 0600 /etc/ha.d/authkeys


Restart no serviço do HeartBeat
# /etc/init.d/heartbeat restart





PASSIVO (SERVIDOR QUE SERÁ O SLAVE - 10.1.1.2)


Instalação do Heartbeat (linux-ha)
# apt-get install heartbeat


CONFIGURAÇÃO
# vi /etc/ha.d/ha.cf
logfacility daemon
node master_hostname slave_hostname (master_hostname = hostname deste servidor, ou seja, do master | slave_hostname = hostname do outro servidor remoto que fará parte do cluster, ou seja, do slave)
keepalive 3
deadtime 10
ucast eth0 10.1.1.1 (eth0 = interface de rede deste servidor [slave] por onde os pacotes de heartbeat sairão. 10.1.1.1 endereço IP do outro servidor remoto [master] que fará parte do cluster)
auto_failback yes


CONFIGURAÇÃO
# vi /etc/ha.d/haresources
master_hostname 10.1.1.3 (master_hostname = hostname do outro servidor remoto [master]. 10.1.1.3 endereço IP virtual do cluster)


CONFIGURAÇÃO
# vi /etc/ha.d/authkeys
auth 1
1 sha1 xxx (xxx = chave compartilhada usada para criptografar as comunicações entre o Master e Slave do cluster)
# chmod 0600 /etc/ha.d/authkeys


Restart no serviço do HeartBeat
# /etc/init.d/heartbeat restart





HAPM (MONITORAR SERVIÇOS - SOMENTE TCP)

O HAPM é uma ferramenta que pode ajudar o HeartBeat, pois consegue monitorar serviços (somente TCP). Contudo, ele não é necessário para o HeartBeat funcionar, mas é um "plus" interessante.



Arquivo de configuração
# apt-get install hapm


Arquivo de configuração
# vi /etc/ha.d/hapm.conf
socket=127.0.0.1:25 (especifica o IP e porta a serem monitorados)
heartbeat=/etc/init.d/heartbeat (caso o "hapm" não consiga monitorar "127.0.0.1:25" fará um "stop" no script definido da variável "heartbeat")


Restart no serviço do HeartBeat
# /etc/init.d/hapm restart





DHCPing (MONITORAR O DHCP SERVER)

SCRIPT QUE TESTA SE O SERVICO DHCP SERVER DESTE SERVIDOR (MASTER) ESTA FUNCIONANDO. EM CASO NEGATIVO, O DHCP SERVER SLAVE ASSUMI TODOS AS FUNCOES DESSE SERVICO.



Instalação do Heartbeat (linux-ha)
# apt-get install dhcping
# vi /etc/adm/dhcp_mon.sh
#!/bin/bash
DHCPING=/usr/sbin/dhcping
SLEEP=/bin/sleep
ECHO=/bin/echo
HEARTBEAT=/etc/init.d/heartbeat
for (( i=0, a=0; i<3 ; i++ ))
do
if $DHCPING -q -t 5 -s 10.1.1.11 (dhcping testa se o DHCP Server esta funcionando)
then
$ECHO DHCP Server OK.
$SLEEP 2
else
$ECHO DHCP Server DOWN!!!
a=$(($a + 1)); (incrementa a var "a". Se o DHCP Server nao reporder por "n" vezes significa que ele esta DOWN!!!)
fi
done

$HEARTBEAT status > /dev/null 2>&1 (gera o exit status - $ECHO $? para saber se o HeartBeat está startado)

if [ $? -eq 0 ] && [ $a -eq 3 ] (se o exit status for "0" e a var "a" for igual a 3, ou seja, se o HeartBeat estiver startado e o DHCP Server nao responder por "n" vezes)
then
$HEARTBEAT stop > /dev/null 2>&1
$ECHO HEARTBEAT FOI PARADO
fi
exit 0





Referências Bibliográgicas

 
 


Hugo Azevedo de Jesus
ETI - Especialista em Tecnologia da Informação