Tabla de Contenidos

Hearbeat - cluster

Descripción

 Heartbeat es el sistema de monitoreo de clusters estandar

Prerequistos

Montar paquetes

Configuracion Basica

Es necesario configurar tres archivos de arranque

– /etc/ha.d/ha.cf 

Este archivo tiene la informacion del cluster

use_logd yes
bcast eth0
node ping pong
crm on

Esto traduce en: 

- Use el sistema de bitacoras propietario con non-blocking

- A travez de que interfaz hacer el broadcast para anunciarse

- Listado de nodos participantes en el cluster

- Cluster Resource Monitoring: Permite monitore de 2 o mas nodos

– /etc/ha.d/authkeys

La información entre las maquinas va encriptada, Aqui defines que autentica, el método y el passphrase.

auth 1
1 md5 la casa del conejo

OJO este archivo debe ser 600.

 

–/etc/ha.d/logd.cf 

Este archivo dice como voy a almacenar mis bitacoras. Al archivo solo le cambiamos

logfacility daemon

Que dice que vayan directamente al /var/log/messages

Puesta en funcionamiento

Una vez se tienen los archivos corectos ya se puede lanzar el demonio

/etc/init.d/heartbeat start

Si todo funciona puede copiar estos archviso de configuracion a la otra maquina y lanzarlo alla tambien. Todo debe funcionar

Como permitimos el monitoreo usando crm, podemos probarlos usando

crm_mon -i 5

COn eso muestra quien esta en linea y demas detallitos.

 

Ahora si haga que funcione algo dependiendo de el

A. Agregar una Ip compartida

La facil es usar la interfaz grafica hb_qui. La primera vez que se corre el crea los archivos de configuracion en /var/lib/heartbeat/crm/cib.xml.

Boton derecho en Resourse –> Adicionar –>Native –> IPaddr2

Ahi en parametros puede agregar la direccion IP, y el dispositivo. Si quiere una virtual use eth0:0 por ejemplo.

De esta forma, esa ip la mantiene viva el sistema. 

Agregar Apache u otro servicio

Boton derecho en Resourse –> Adicionar –>Native y escoja –> httpd – lsf

Configure apache para escuchar puerto 80  y habilite la revision de status (OJO Sin esto andando no sube en caso que use ocf)

Quite la subida por default con

chkconfig httpd off

Lo siguiente que se hace es agregar una restriccion co-location para que funcionen los dos servicios juntos, como que apache se mueva con la IP.

Las COLOCATIONS no tienen sino dos “scores” INFINITY si quiere que queden juntas, o -INFINITY si no quiere que se junten.

 

* trate de usar el apache del ocf/heartbeat .. pero me dio mucha guerra para moverlo de un lado al otro

Originalmente no se devuelve al servidor principal aun cuando por defecto Hearbeat esta configurado para eso.

Scores para manejar prioridades y/o preferencias

Los scores determinan quien es el PAPA para cierto servicio. El sistema automaticamente “ratea” las maquinas y decide quien es el papa.  Por ejemplo si yo quiero que la ip prefiera una maquina y que siempre vuelva a ella cuando este disponible.

Coloco una restricicon en location en donde “#uname eq ping.skina.com.co” y le pongo un score de 100 lo que hace preferir ping

- http://www.linux-ha.org/ConsensusClusterMembership

Los grupos de servicios para manejarlos al tiempo

Si yo necesito, por ejemplo, que varios servicios se muevan al tiempo, puedo poner reglas sobre el grupo y asi logro que todo se mueva al tiempo

 

Problemas

1. Algo falla !

- Importante, dele una ojeada al var log messages. Fijo ahi le dice que es.

2. Quiero que todos los servicios se muevan de un equipo a otro al tiempo

La forma que encontre de conseguir esto fue poniendo todos los servicios en un grupo y dejando la ip compartida  por fuera. Una vez hecho esto, agregue una restriccion de “colocation” entre la ip y el grupo .. taran !!!

3. Los servicios no quieren volver al servidor principal despues de una catastrofe

El problema es que cuando un servicio no puede subir en un equipo, hearbeat marca ese recurso como “ERROR” y no lo retorna a ese servidor asi sea el primario, a menos que “limpie” el recurso. El boton de “clean up” en la interfaz grafica. Una vez hace esto ya vuelve a su comportamiento normal.

4. Usuario de hb_gui no entra

El usuario debe ser un usuario del sistema y del grupo hacluster. La contraseña es la misma del sistema operativo.

5. Cambie a mano el cib.xml y no funciona

YO NO HE PODIDO .. solo con hb_gui mantiene consistencia

6. Los scripts se comportan raro

Sucede que los scripts DEBEN ser lsb compliant. Si no lo son muchas cosas falla. El estandar esta en

http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html –

Por ahi tenemos un script para evaluar eso.

Referencias

- http://www.linuxjournal.com/article/5862

- Un videito tutorial http://linux-ha.org/Education/Newbie/InstallHeartbeatScreencast –

- Configuring A High Availability Cluster (Heartbeat) On CentOS

 - http://search.code-head.com/F-NFS-Linux-HA-Heartbeat-HOWTO-UDP-1629179 –

- Documentacion  de SLES 10 de Novell.

- Un howto bien bonito de Netexpertise.

- Command line instruction http://doc.opensuse.org/products_new/draft/SLE-HA/SLE-ha/cha.ha.manual_config.html -

- Mas comandos manuales http://www.novell.com/documentation/sles10/heartbeat/?page=/documentation/sles10/heartbeat/data/man_crmresource.html

- Algo viejo http://www.novell.com/communities/node/4846/load-balancing-howto-lvs-ldirectord-heartbeat-2

FIN

==============================================================
Test lsb compliant

#!/bin/bash
#
# Script that test the return o init scripts
#

if != 1; then
    echo “Wrong number of Parameters”
    echo “USAGE: test_lsb_init [script]“
    exit 0
fi

if ! -f $1; then
    echo “Init script does not exists”
    echo USAGE: test_lsb_init [script]
    exit 0
fi

if ! -x $1; then
    echo “Init script is not an executable”
    echo USAGE: test_lsb_init [script]
    exit 0
fi


echo ”“
echo ”“
echo ”———————————→ Doing $1 start to begin”
$1 start
read -t 2 aaa

echo ““
echo ”———————————→ Doing $1 stop”
$1 stop
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 stop again”
$1 stop
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 status”
$1 status
echo “It returns: $?  and it should be: 3”
read -t 2 aaa

echo “———————————→ Doing $1 start”
$1 start
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 start again”
$1 start
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 status”
$1 status
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 restart”
$1 restart
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 status”
$1 status
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 try-restart”
$1 try-restart
echo “It returns: $?  and it should be: 1”
read -t 2 aaa

echo “———————————→ Doing $1 status”
$1 status
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 reload”
$1 reload
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 status”
$1 status
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 force-reload”
$1 force-reload
echo “It returns: $?  and it should be: 1”
read -t 2 aaa

echo “———————————→ Doing $1 status”
$1 status
echo “It returns: $?  and it should be: 0”
read -t 2 aaa

echo “———————————→ Doing $1 stop”
$1 stop
echo “It returns: $?  and it should be: 0”
read -t 2 aaa
 

04-Noviembre-2008 J.E.Gomez v1.0 Primera version


Advertencia

Este documento es privado y es de uso exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal.