Configure de forma prática o Heartbeat

De Wiki Hackstore

Requisitos

pacotes

Instale os pacotes abaixo, ou compile:

 heartbeat heartbeat-common heartbeat-devel heartbeat-resources libheartbeat2 libheartbeat-devel OpenIPMI tcl


Crie os arquivos de configuração do heartbeat

Todos os arquivos devem estar em /etc/ha.d


Arquivo ha.cf

Este arquivo determina qual é a interface de rede e quais são os parâmetros de negociação entre os nodes do cluster. Caso utilize uma interface de rede dedicada para o cluster (recomendado em sistemas que utilizem DRBD, GlusterFS ou qualquer sistema de arquivos de replicação), especifique a interface de rede, caso contrário utilize a interface da LAN para o tal.

logfacility     local0
keepalive 2
deadtime 9
warntime 6
initdead 10
udpport 694
bcast   eth0
auto_failback off
node    hackstore-master
node    hackstore-slave

OBS: Caso a porta 694 esteja em uso (rpcbind) basta alterar para qualquer outra porta.

Arquivo haresources

Este arquivo configura quais recursos serão iniciados pelo Heartbeat, como ip flutuante, serviços em si, etc.

Lembrando que o nome do node (nó) deve corresponder ao hostname real do servidor. Para descobrir o atual, use o comando hostname. Para correta configuração do mesmo conforme padrões UNIX, por favor consulte a documentação oficial da sua distribuição Linux. ;)

PS: Lembrando que este arquivo deve ser idêntico em todos os nós do cluster.

#sample
#hackstore-master IPaddr::10.10.96.1/24/eth5 IPaddr::10.10.64.1/24/eth5 IPaddr::10.10.96.82/24/eth5 IPaddr::10.10.96.83/24/eth5 IPaddr::189.2.170.67/24/eth4 drbddisk::data Filesystem::/dev/drbd0::/data::smb nmb dhcpd named
#hackstore-master IPaddr::192.168.0.3/24/eth0 vsftpd
hackstore-master 192.168.0.244/24/eth1:lan 201.39.17.114/28/eth0:gw 201.39.17.115/28/eth0:mail 201.39.17.116/28/eth0:ftp MailTo::beep@hackstore.com.br::Cluster-hackstore-master up-net-eth3 up-net-eth5 smb winbind named openvpn squid


Inicializando interfaces de rede

Caso você utilize IP dedicado ou gateway atrás de NAT (roteador) onde situação de conflito de IP seja perigoso, basta configurar a interface para inicialização manual (remoção do boot) conforme exemplo abaixo:


echo 'STARTMODE="manual"' >> /etc/sysconfig/network/ifcfg-eth3


e criar um init para inicialização da mesma, conforme exemplo abaixo na distro OpenSUSE:

#!/bin/bash
#
# Network interface configuration eth3
#
# Copyright (c) 2001-2002 SuSE Linux AG, Nuernberg, Germany.
# Copyright (c) 2003-2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Author: Michal Svec <msvec@suse.cz>
#         Christian Zoz <zoz@suse.de>
#         Mads Martin Jørgensen <mmj@suse.de>
#         Marius Tomaschewski <mt@suse.de>
#
# $Id$
#
# /etc/init.d/up-net-eth3
#
### BEGIN INIT INFO
# Provides:             up-net-eth3
# Required-Start:       $local_fs
# Should-Start:         earlysyslog isdn openibd SuSEfirewall2_init
# Required-Stop:        $local_fs
# Should-Stop:          isdn openibd SuSEfirewall2_init
# Default-Start:        3 5
# Default-Stop:         
# X-Systemd-RemainAfterExit: true
# Short-Description:    Configure the localfs depending network interfaces
# Description:          Configure the localfs depending network interfaces
### END INIT INFO

case "$1" in
    start)
   # /etc/ha.d/resource.d/IPaddr2 201.17.130.5/24/eth2/201.17.130.255 start
        /sbin/ifup eth3
    sleep 3;
#    route add default gw 201.17.130.1
    echo -e "$return"
    ;;
    stop)
#   route del default gw 201.17.130.1
    #/etc/ha.d/resource.d/IPaddr2 201.17.130.5/24/eth2/201.17.130.255 stop
        /sbin/ifdown  eth3
    ;;
    reload|restart)
    $0 stop  && sleep 1 &&  $0 start  ||  return=$rc_failed
    ;;
    *)
    echo "Usage: $0 {start|stop|reload|restart}"
    exit 1
esac

# Inform the caller not only verbosely and set an exit status.
test "$return" = "$rc_done" || exit 1
exit 0


Arquivo authkeys

#
#       Authentication file.  Must be mode 600
#
#
#       Must have exactly one auth directive at the front.
#       auth    send authentication using this method-id
#
#       Then, list the method and key that go with that method-id
#
#       Available methods: crc sha1, md5.  Crc doesn't need/want a key.
#
#       You normally only have one authentication method-id listed in this file
#
#       Put more than one to make a smooth transition when changing auth
#       methods and/or keys.
#
#
#       sha1 is believed to be the "best", md5 next best.
#
#       crc adds no security, except from packet corruption.
#               Use only on physically secure networks.
#
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!


Configure o /etc/hosts

Os hostnames devem constar no arquivo de resolução de nome local:

192.168.0.1     hackstore-master
192.168.0.2     hackstore-slave


Adicione o Heartbeat ao boot

chkconfig -a heartbeat

Remova do boot os serviços que o Heartbeat inicia

Visto que o Heartbeat inicia os serviços sozinho (vide arquivo de configuração haresources) remova do boot todos os serviços que dependem do mesmo do boot do seu sistema:

chkconfig -d vsftpd


Remova o UUID em ambos os servidores

rm /var/lib/heartbeat/hb_generation /var/lib/heartbeat/hb_uuid


Inicie o heartbeat primeiro no master e depois no slave, e seja feliz :D