RHEL Cluster: Node will be fenced because of resource failure

En un entorno de cluster con pacemaker en CentOS o RHEL, si la configuración establecida para los recursos de cluster es la que viene por defecto y además tenemos configurado STONITH, sucederá lo que explico a continuación.

En el momento que el cluster intenta parar un recurso y no puede, el propio cluster hace un fencing del nodo en el que está ese recursos para así liberarlo e intentar levantarlo en otro de los nodos:

pengine:  warning: unpack_rsc_op_failure:	Processing failed op stop for resourceXX on NODEXX: unknown error (1)
pengine:  warning: unpack_rsc_op_failure:	Processing failed op stop for resourceXX on NODEXX: unknown error (1)
pengine:  warning: pe_fence_node:	Node NODEXX will be fenced because of resource failure(s)

En teoría esto es correcto, pero si tenemos más recursos y servicios corriendo en ese nodo también sufriran el apagado (a lo bruto) del nodo antes de ser levantados en otro.

Lo primero que se debe revisar lógicamente es el motivo por el cual la ejecución de parada del recurso no ha funcionado. Después, es cuando se debe valorar si este es el comportamiento deseado o no. RHEL recomienda mantener la configuración en fence. Si queremos modificarlo, hay que cambiar el valor de recurso op stop on-fail=fence por uno de los siguientes:

  • ignore – Pretend the resource did not fail
  • block – Don’t perform any further operations on the resource
  • stop – Stop the resource and do not start it elsewhere
  • restart – Stop the resource and start it again (possibly on a different node)
  • fence – STONITH the node on which the resource failed
  • standby – Move all resources away from the node on which the resource failed

Un ejemplo de cambio en el que pasamos a bloquear el recurso sin necesidad de tirar el nodo en el que se encuentra:

# pcs resource update resourceXX lsb:xxxx op on-fail=block