Heartbeat es el sistema de monitoreo de clusters estandar
Montar paquetes
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
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.
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.
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.
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 —
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
- Importante, dele una ojeada al var log messages. Fijo ahi le dice que es.
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 !!!
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.
El usuario debe ser un usuario del sistema y del grupo hacluster. La contraseña es la misma del sistema operativo.
YO NO HE PODIDO .. solo con hb_gui mantiene consistencia
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.
- 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.