Un día de clusters con RHEL4U5


Hoy he perdido un día más de vida. El responsable ha sido un maldito cluster RHCS sobre RHEL4U5, que no quería funcionar como yo quería que funcionara.
Un cluster sencillo con 2 nodos y 2 recursos: un script java que se encarga de leer un tabla, y enviar correos, y otro script que monta un volumen NFS y luego un demonio que lee de ese volumen para envar FAX con ayuda de efax. Por separado todo funcionaba perfecto, de hecho el primero de los scripts lo tenía un par de meses él solito en el cluster, funcionando bien. Hoy le añado el segundo script y me funciona todo perfecto en el NODO1. Ejecuto clusvcadm -r RECURSO -m NODO2 , y el recurso se ejecuta en el NODO2 como era de esperar. Vuelvo a ejecutar clusvcadm -r RECURSO -m NODO1, y veo como se para en NODO2 (sin que aparezca nada en los logs de NODO1), y en unos segundos vuelve a estar arriba en NODO2... buf!!! vaya pesadilla!!! ¿que era? el exclusive="1" que tenían definidos los recursos del cluster, de manera que hacían que cada nodo ejecutara un solo servicio, y cuando intentaba moverlos de forma manual, se comportaban como si tuvieran un repelente de insectos...

Y qué he aprendido con todo esto:
  1. No usar el exclusive="1", a no ser que mi vida dependa de ello.
  2. Para aumentar el nivel de Log del cluster podemos usar log_facility="local4" log_level="7", en en la apertura del tag <rm>. Por defecto viene predeterminado a log_level="4". Luego debemos comprobar que en /etc/syslog.conf los mensajes local4.* tienen algún destino a fichero, y sino fijarlo y reiniciar syslog.
  3. Cuando tenemos scripts en cluster deberías usar LSB, tal y como se dice en la FAQ de RedHat, aunque ello sólo funciona de forma parcial:
    • DAEMON start => Siempre salir con exit 0
    • DAEMON stop => Siempre salir con exit 0 (aunque no sea LSB)
    • DAEMON status => Salir con exit 0 si está arrancado, con exit 3 si está parado.

No hay comentarios: