Reiniciando el proceso Host Controller en un dominio de Jboss/Wildfly

por | diciembre 22, 2016

Si estamos ejecutando Jboss en modo dominio, tendremos dos elementos clave exclusivos en este modo de ejecución que van a servir para explicar este artículo:

  • Process Controller: proceso encargado de crear a su vez el resto de procesos hijo del entorno de dominio, como puedan ser el host controller o las instancias de Jboss.
  • Host Controller: proceso hijo del anterior, encargado de comunicarse y coordinar la administración con las instancias de Jboss de ese servidor. En la arquitectura de clúster más básica con dos nodos, tendremos un host controller que actuará como controlador de dominio en el nodo maestro, y un host controller esclavo en el nodo secundario.

Para verlo en perspectiva, veamos los procesos de un nodo de ejemplo:

En esta muestra anterior vemos claramente que existe un Process Controller con PID 18738 que se encarga de iniciar otros dos procesos hijos que son el Host Controller con PID 18758 y dos instancias de Jboss (server-one y server-two) con PID 18835 y 18903.

El elemento Host Controller no deja de ser un proceso Java que como tal puede presentar problemas de inestabilidad en determinados momentos (bugs, sobrecarga de sistema, etc…) y fruto de esta inestabilidad la comunicación con las instancias de Jboss del dominio puede verse afectada negativamente, especialmente cuando damos órdenes desde la CLI y el proceso Host Controller entra en juego para interactuar con ellas.

En el caso de ser estrictamente necesario reiniciar el proceso Host Controller, bastaría con forzar su parada con el comando kill -9 sobre el PID correspondiente:

kill -9 18738

Acto seguido, Process Controller reaccionará creando un nuevo proceso Host Controller en el que se registrarán las instancias y servicios asociados del dominio. Observa las líneas en las que aparece «reconnecting» en cada una de las instancias de Jboss que vuelven a conectarse y registrarse con el controlador:

Como podemos ver, el único proceso nuevo es el de Host Controller con PID 19237 que ha creado el padre Process Controller. El resto de PIDs se mantienen ya que ningún otro proceso ha tenido que reiniciarse:

Recordad que siempre será preferible una parada e inicio ordenados de los componentes del dominio de Jboss, aunque realizando kill -9 sobre el PID del Host Controller podemos forzar para que el Process Controller cree un nuevo proceso «limpio» para nosotros.