En un entorno típico de XenServer, dos o mas host son agrupados en un recurso de servidores llamado Pool., el cual provee algunos beneficios, como la centralización del entorno de virtualización y failover para nuestro entorno de maquinas virtuales si disponemos de un almancenamiento compartido.

Si tenemos planeado el mantenimiento de nuestros host, podemos mover con XenMotion nuestras VMs entres hosts para llevar a cabo las tareas de mantenimiento en los servidores. Sin embargo, si un servidor físico falla, es necesario realizar una seria de pasos para restaurar nuestras VMs, dependiendo al mismo tiempo de la naturaleza de la falla.

 

1. Esta el Master del Pool caído?

Todo el entorno esta controlado por un servidor llamado “pool master”. Si el servidor designado como Pol Master falla, las maquinas virtuales seguirán corriendo pero las acciones de gestión sobre las VMs (por ejemplo, parar i arrancar VMs) no será posible realizar-las.

En el caso de que un problema afecta a varios hosts en el pool, el Pool Master debe ser el primer servidor en ser recuperado.

Si la conexión con el Pool no es posible desde XenCenter, o obtenemos mensajes de error al ejecutar comandos (como “xe host-list”) indicando: “Cannot perform operation as the host is running in emergency mode” entonces, el servidor Pool Master significa que no esta accesible o no es funcional.

Si el servidor Master no ha fallado, pasar de este punto al punto 3.

2. Recuperar el Pool (si aplica).

Si recuperar el Pool master no es posible en un pequeño espacio de tiempo, será una buena idea promocionar un servidor miembro de servidor esclavo a servidor master para recuperar la gestión del pool y poder reiniciar las maquinas virtuales.

  1. Seleccionar el servidor del pool que queremos que sea promocionado (cada servidor de XenServer dispone de una copia de la BD de gestión lo que posibilita la toma del rol).
  2. Desde la línea de comandos del servidor ejecutar el siguiente comando: xe pool-emergency-transition-to-master
  3. Una vez completado, recuperar las conexiónes con el resto de servidores esclavos del Pool, con el siguiente comando: xe pool-recover-slaves
  4. Verificar que la gestión del pool ha sido restaurada realizando un test. Por ejemplo, desde línea de comandos verificar que el comando xe host-list funciona correctamente.

3. Verificar que servidores del Pool fallan

En este punto vamos a verificar que servidores del Pool de XenServer tienen errores y obtendremos el único identificador universal de los mismos (UUID) para su uso posterior.

  1. Ejecutar el siguiente comando desde unos de los servidores del Pool que no tenga problemas: xe host-list params=uuid,name-label,host-metrics-live
  2. Los servidores listados en el comando anterior con el parámetro host-metrics-live=false son servidores con fallas.  Anotaremos el primer grupo de números del uuid de las  VM (recordad que Tab/Tab autorellena nuestros comandos, con lo que no es necesario apuntar el UUID completo de nuestros hosts)

4. Verificar que máquinas virtuales han fallado.

Recordad que si un servidor Master o Esclavo falla dentro de un Pool, las maquinas virtuales que están corriendo, continuarán corriendo. El siguiente procedimiento, os ayudara a detectar como verificar que VMs están corriendo en los servidores que han fallado.

xe vm-list is-control-domain=false resident-on=UUID_Anotado_anteriormente

Esto nos mostrará las VMs que están corriendo en el servidor con falla. En los próximos pasos veremos como reiniciar el valor de “power-state” para permitir a las VMs ser lanzadas de nuevo en un servidor del Pool que este funcionando.

Sera necesario repetir estos pasos con todas los UUIDs de servidores fallidos.

5. Resetear el “Power-State” de las VM

Para resetear las VMs de un host que ha fallado, será necesario resetear su estado.

Ejecuta el siguiente comando en la CLI de un host operativo.

xe vm-reset-powerstate resident-on=UUID_Servidor_Fallido - -force - -multiple


Cuidado: el uso incorrecto del modificado --multipe puede causar que todas las maquinas del Pool sean reseteadas. Tener cuidado en usar correctamente el parámetro “Resident-on=” o alternativamente, puedes resetear el estado de cada vm de forma independiente.2)

verificar que ya no existen VMs con este estado, repitiendo el punto 4. El comando vm-list no debe retornar resultados.

6. Resetear las VMs en otro XenServer.

  1. Conectar con XenCenter al pool y verificar que cada VM que estaba corriendo en el host averiado, aparece ahora con el estado parado.

Las maquinas que tienen asignadas un HomeServer , pueden no aparecer en XenCenter, porque el servidor especifico (homeserver) este caído. Para solucionar este problema, es necesario cambiar la afinidad cambiando el parámetro de afinidad.

xe vm-param-set uuid=uuid_VM affinity=UUID_HOME_Server


2. Reiniciar cada VM en el pool normalmente.

Recordad que solo es posible reiniciar VMs en otros hosts del Pool siempre que estas estén almacenadas en un almacenamiento compartido. En caso de uso de VMs en un SR local, no podrá ser recuperado hasta restablecer y/o reparar el host averiado.

Basado en el documento: XenServer System Recovery Guide.