Tengo una situación en la que un clúster Pacemaker de dos nodos ya no funciona después de una actualización. Las versiones del paquete están pacemaker 1.1.16-1~bpo8+
bajo corosync 2.4.2-3~bpo8+1
Debian Jessie.
El marcapasos aún puede iniciarse en un nodo. crm_node -l
luego enumera ese nodo como en línea, el segundo como perdido.
El marcapasos ya no puede iniciarse en el segundo nodo. Los siguientes mensajes de registro /var/log/corosync/logfile
parecen pertinentes:
cib: info: validate_with_relaxng: Creating RNG parser context
pacemakerd: error: pcmk_child_exit: The cib process (1234) exited: Key has expired (127)
pacemakerd: notice: pcmk_process_exit: Respawning failed child process: cib
...
cib: info: validate_with_relaxng: Creating RNG parser context
pacemakerd: error: pcmk_child_exit: The cib process (1235) exited: Key has expired (127)
pacemakerd: notice: pcmk_process_exit: Respawning failed child process: cib
...
crmd: warning: do_cib_control: Couldn't complete CIB registration 1 times... pause and retry
...
crmd: warning: do_cib_control: Couldn't complete CIB registration 16 times... pause and retry
crmd: notice: crm_shutdown: Shutting down cluster resource manager | limit=1200000ms
pacemakerd: notice: pcmk_shutdown_worker: Shutdown complete
Entonces parece que el segundo nodo intenta el registro CIB y cancela el inicio del marcapasos después de 16 intentos fallidos, y que el primer nodo considera al segundo muerto quizás porque no puede registrarse.
¿A quién se puede salir de una situación como ésta?
Respuesta1
La causa principal resultó ser una versión demasiado antigua del paquete libpe-rules2
, que proporciona libpe-rules2.so
. El paquete pacemaker
de jessie-backports
requiere solo >= 1.0.10
(quizás un error en la descripción del paquete actual), pero la versión actual de libpe-rules2
(también de jessie-backports
) es 1.1.16.
La versión anterior de la biblioteca hacía que el proceso cib
fallara debido a símbolos no definidos en la biblioteca dinámica. Esto se reveló al comenzar pacemakerd
(y de hecho cib
) con strace -f
. La actualización apt-get install libpe-rules2
resolvió la situación.