A raíz de las últimas entradas en rm-rf.es y systemadmin.es quería probar el demonio de alta disponibilidad (heartbeat) sobre Debian, la entrada sobre Apache que publicó el primero me inspiró a hacer lo que contaba sobre la “distro” de la espiral.
Partimos de la misma configuración, tenemos dos servidores, cluster01 y cluster02 con las IPs 192.168.2.98 y 192.168.2.99 y una IP flotante 192.168.2.100
Configuradas ambas máquinas, instalamos los paquetes necesarios:
# apt-get install apache2
En nuestro caso, para la configuración de Apache editamos /etc/apache2/ports.conf y añadimos la IP flotante a la línea de NameVirtualHost así:
NameVirtualHost 192.168.2.100:80
Para que Apache no se levante al inicio ya que queremos que el que se encargue de esto es Heartbeat escribimos:
# update-rc.d apache2 remove
Y detenemos el servicio:
# /etc/init.d/apache2 stop
A continuación instalamos Heartbeat.
# apt-get install heartbeat
Y configuramos, estos ficheros de configuración se encuentran todos en /etc/ha.d/ y disponemos de plantillas para configurarlos en /usr/share/doc/heartbeat/. Podemos tomar ejemplo para configuraciones más específica.
Para el archivo ha.cf usamos la misma:
logfile /var/log/cluster.log logfacility local0 warntime 5 deadtime 30 initdead 120 keepalive 2 bcast eth0 udpport 694 auto_failback on node cluster01 node cluster02
La explicación
- logfile y logfacility: Fichero de log y nivel.
- warntime: Heartbeat avisará cuando un nodo falle tras 5 segundos.
- deadtime: Hearbeat confirmará que un nodo ha caído, 30 segundos.
- initdead: Tiempo máximo que Heartbeat esperará a que un nodo arranque, 60 segundos.
- keepalive: Especifica cada cuanto tiempo Heartbeat enviará paquetes para comprobar la disponibilidad de los nodos, 2 segundos.
- Las dos últimas líneas son las listas de nodos que conforman el cluster.
Para el fichero authkeys que es donde configuramos la comunicación entre los nodos del clúster, también para Debian podemos usar la original:
auth 2 2 sha1 clu$ter-4uth
Le asignamos los permisos para que sólo root tenga acceso.
# chmod 600 /etc/ha.d/authkeys
El último fichero cambia en Debian y es el haresources que queda con este aspecto:
cluster01 IPaddr2::192.168.2.100/24/eth0 apache2
Cambia la forma de escribir la IP flotante que está de una forma más completa y el script de inicio de Apache que en Debian es apache2.
Seguimos la entrada y la propagación se hace ejecutando el siguiente comando:
# /usr/share/heartbeat/ha_propagate
Levantamos el servicio.
/etc/init.d/heartbeat start
Ya está todo configurado, podemos probar a desactivar la interface de cluster01 y ver como al poco tiempo (el que hemos configurado) se levanta cluster02 para seguir sirviendo páginas.
La configuración entre CentOS y Debian es prácticamente la misma, pero tiene los suficientes detalles como para que los escriba aquí para no olvidar como se hace.
Muy buen artículo Nordri… ¿no tendrás uno de balanceo de carga por ahí guardado, verdad? 😉
@Informático de Guardia
Pues no, es un tema pendiente, pero el balanceo de carga es difícil de probar.
Prueba en How To Forge, ahí hay de todo! 🙂
Saludos.
bro esta linea
NameVirtualHost 192.168.2.100:80
en que nodo va??
nodo 1?? nodo 2?? en los dos??
esperando request…
@geeker4 va en los dos, las configuraciones de Apache de ambos nodos o de los que sean, tiene que ser idéntica.
Bro otra pregunta toda la configuracion debe ser identica en los 2 nodos??
Otra pregunta el archivo:
logfile /var/log/cluster.log
No me aparece!
Aparte ya hice todo referente a tu manual, nada mas cambiando cluster01 por nodo1 y cluster02 por nodo2, pero cuando ejecuto:
/usr/share/heartbeat/ha_propagate
Me aparece lo siguiente:
Propagating HA configuration files to node nodo1.
ssh: Could not resolve hostname nodo1: Name or service not known
lost connection
Setting HA startup configuration on node nodo1.
sh: chkconfig: not found
ssh: Could not resolve hostname nodo1: Name or service not known
ESPERO ME PUEDAS AYUDAR BRO!
toda la configuracion debe ser identica
Claro compi, piensa que la idea es que si uno cae, el otro siga, por eso tienen que ser iguales.
Otra pregunta el archivo: logfile /var/log/cluster.log No me aparece!
Porque no te está funcionando heartbeat, cuando lo configures y lo arranques aparecerá.
Lo último es porque no está resolviendo los nombres de los nodos, dalos de alta en el DNS o en /etc/resolv.conf. En todos los nodos!
Hola NORDRI, una pregunta, esto sirve para balancear las bases de datos mysql en caso de tenerlos??
@earmoa el demonio de Heartbeat también hace balanceo con MySQL pero por separado al balanceo de Apache, puedes echar una vistazo a la documentación aquí: http://dev.mysql.com/doc/refman/5.0/en/ha-heartbeat-drbd.html
Saludos.