May 7, 2009

Monitorización de servicios con mon (I)

Una vez que ya tenemos todos los servicios del Sistema de Alta Disponibilidad y Balanceo de Carga configurados, vamos a proceder a su monitorización a través del demonio mon. Recordar que la última entrada que se trató fue la de Balanceo de carga con LVS (III).

Mon es un demonio que permite monitorizar servicios de red, tales como HTTP, FTP, SMTP, POP3, etc. A través de un fichero de configuración (/etc/mon/mon.cf) se definen los servicios a monitorizar, la forma en la que se monitorizarán (basado en scripts) y el periodo de monitorización.


Por ejemplo, para comprobar que Apache está levantado, se puede verificar si el puerto está abierto, si el proceso Apache2 está operativo, si Apache nos devuelve una página concreta ante una determinada petición, etc. Todos estos scripts de monitorización se deben ubicar en /usr/lib/mon/mon.d/.

En el momento en el que un servicio monitorizado falla, mon puede llevar a cabo una serie de medidas (scripts) definidas también en el fichero de configuración. Estos scripts de actuación ante alertas tienen que residir dentro del directorio /usr/lib/mon/alert.d/. En caso de recuperación del servicio, también pueden ser lanzadas otra serie de medidas.

En los dos nodos frontales (HA1, HA2) se va a monitorizar el servicio ndb_mgmd (administrador de los nodos de almacenamiento MySQL). Para ello se comprobará que el puerto 1186 está abierto.

En los dos nodos traseros (LB1, LB2) se monitorizarán los servicios HTTP (se realizará un GET del servidor web y se comprobará que devuelve un resultado correcto), FTP (se comprobará que el puerto 21 está abierto), GlusterFS (se comprobará que el puerto 6996 está abierto), MySQL (se realizará una petición a la base de datos), ndbd (se comprobará que el proceso ndbd está levantado).

Lo primero que haremos será instalar mon en cada uno de los nodos del cluster, pero éste no estará arrancado en el nodo frontal pasivo, ya que el servicio a monitorizar (ndb_mgmd) estará detenido. Mon comprobará cada 30 sg que los servicios configurados están levantados.

Para monitorizar los protocolos HTTP y FTP en los nodos traseros, utilizaremos dos scripts que vienen de serie dentro del directorio /usr/lib/mon/mon.d/, http.monitor y ftp.monitor:

  • HTTP: realizará un GET del servidor y comprobará que le devuelve un resultado correcto.

  • FTP: verificará que el puerto 21 está abierto.
En caso de caída del servicio, se generarán dos alertas previamente configuradas: mail.alert (script que viene con el paquete mon y que se encarga de enviar un correo electrónico a una dirección determinada) y service_down.alert (script que crearemos nosotros y que en primer lugar tratará de reiniciar el servicio; si no lo consigue, reiniciará la máquina, y en caso de que cuando vuelva a arrancar siga estando el servicio caído, la apagará completamente).

Cuando el servicio vuelva a estar operativo, se lanzarán dos scripts: mail.alert (informaremos al administrador por correo electrónico que el servicio vuelve a estar levantado) y service_up.alert (script que crearemos nosotros y que se encargará de restablecer el fichero donde se guardan las pérdidas de servicio).

Además de instalar mon, también instalaremos el paquete sendmail, ya que será utilizado por el script mail.alert para enviar correos electrónicos. También podríamos haber creado otros script que enviaran correos electrónicos utilizando otro MTA, como por ejemplo Postfix.

No comments:

Post a Comment