Error al instalar un nuevo cluster con SQL Server 2008 o superior: Microsoft Cluster Service (MSCS) cluster verification errors, Status: Failed

Por Daniel Torres Garrido

La creación de una instancia en cluster es uno de los procesos que realizan gran parte de nuestros clientes en el día a día. A pesar de que puede ser una actividad rutinaria con la que debemos estar familiarizados resulta que no siempre las instalaciones se llevan a cambio sin problemas de inicio a fin. Si bien la variedad de errores que se pueden registrar en una instalación así como la fase en la cual aparecen es muy extensa en esta ocasión hablaremos de un error en particular:

Microsoft Cluster Service (MSCS) cluster verification errors, Status: Failed

Justo después de iniciar la instalación de una instancia en cluster el primer paso que realiza el asistente es ejecutar una serie de reglas llamadas Setup Support Rules. Estas reglas tienen como objetivo detectar problemas que pueden ocurrir durante la instalación y que deben ser corregidas previamente. El error que mencionamos anteriormente obliga al usuario a cancelar la instalación ya que inhabilita el botón Next y ciertamente no nos da mucha información para determinar en dónde está el problema. Hasta este punto solo podemos presumir que en el reporte de validación del cluster existe un error y debemos cancelar la instalación.

Para continuar con el análisis de la falla podemos hacer uso del KB 955396 para localizar los archivos de la instanación de SQL Server 2008:

How to identify SQL Server 2008 setup issues in the setup log files

https://support.microsoft.com/kb/955396

En este caso utilizaré como ejemplo los logs de una instancia con SQL Server 2012 que se ubican en la ruta %programfiles%\Microsoft SQL Server\110\Setup Bootstrap\Log\. Al Abrir el archivo Summary.txt podemos ver el siguiente resumen de la instalación justo en el encabezado del archivo.

image

Al final del archivo Summary.txt veremos el detalle de la falla que se ha presentado, en este caso nos sugiere abrir el reporte de configuración de sistema:

image

Una vez abierto el archivo HTML debemos buscar la regla Cluster_VerifyForErrors. Una vez localizada podremos ver varios mensajes como el que se muestra a continuación:

image

Básicamente podemos ver el mismo error que nos mostró el asistente de instalación pero ahora tenemos un poco de más información con una referencia hacia un KB 953748.

Error message when you install SQL Server 2008 on a Windows Server 2008-based cluster: "The cluster either has not been verified or there are errors or failures in the verification report. Refer to KB953748 or SQL server books online"

https://support.microsoft.com/kb/953748

Si aplicamos el workaround del KB podemos continuar con la instalación de SQL Server sin embargo como su nombre lo dice solo es una solución alterna y sin duda a muchos profesionales les interesa saber por qué el asistente nos envía el error y sobre todo qué tan grave es que nos impide continuar con la instalación.

Para tener más respuesta debemos consultar el archivo Detail.txt del setup . En mi caso este se encuentra en la ruta: %programfiles%\Microsoft SQL Server\110\Setup Bootstrap\Log\20130317_190551.

La carpeta anterior se genera tomando en cuenta la fecha y hora en que se realizó el intento de instalación. Aunque el archivo es algo extenso podemos identificar el paso en el cual se realiza la evaluación de la regla Cluster_VerifyForErrors como se muestra a continuación:

image

Sin duda la información que ahora nos da el archivo de detalle de la instalación es mucho más descriptivo que lo que conocíamos hasta este momento. Sabemos que en algún punto de la validación de la regla no se puede encontrar el reporte de validación en los nodos. En mi caso lo que hice fue utilizar la herramienta Process Monitor mientras ejecutaba el asistente de instalación nuevamente:

Process Monitor v3.05

https://technet.microsoft.com/en-us/sysinternals/bb896645

Justo en el momento previo a la falla se detectaron los siguientes eventos:

09:27 setup110.exe CreateFile \\sql-contoso-01\admin$\Cluster\Reports\Validation Data For Node Set ABFEDEEFAC2154092D021193BB1B124C44309CAD.xml NAME NOT FOUND.

09:27 setup110.exe CreateFile \\sql-contoso-02\admin$\Cluster\Reports\Validation Data For Node Set ABFEDEEFAC2154092D021193BB1B124C44309CAD.xml NAME NOT FOUND.

Lo que vemos es que el instalador de SQL Server utiliza el nombre del NETBIOS que resuelve de cada uno de los nodos, con ese nombre genera un identificador, en este caso ABFEDEEFAC2154092D021193BB1B124C44309CAD y lo busca en la carpeta compartida en donde se guardó el reporte de validación del cluster. Algo curioso sucede si nos conectamos por ejemplo al nodo sql-contoso-02 y buscamos la siguiente ruta: \\sql-contoso-01\admin$\Cluster\Reports veremos que en esta carpeta sí existe un archivo con un nombre similar pero con un identificador hexadecimal distinto ¿por qué?

Si abrimos una ventana CMD digamos en el nodo sql-contoso-02 y damos ping al equipo sql-contoso-01 obtendremos el FQDN del nodo. En dos incidentes similares en los que trabajamos pudimos ver que el FQDN que resolvió el ping era distinto del FQDN que el cluster de Windows obtuvo al generar el reporte de valdación. Ejemplo:

FQDN obtenido por el cluster de Windows: sql-contoso-01.contoso.com

FQDN obtenido por el setup al realizar un ping: sql-contoso-01

Como tenemos nombres distintos el identificador hexadecimal que genera el archivo de instalación de SQL Server también es distinto por lo tanto NO encuentra el reporte HTML y la instalación envía un error. Para resolver este error en particular en un incidente vimos que el orden del DNS en la configuración TCP/IP de las tarjetas tenían un orden distinto, al modificarlos y ponerlos en el orden correcto el comando ping en el CMD pudo resolver el FQDN correcto del nodo. En otro caso particular lo que vimos es que el controlador de dominio estaba montado en un sistema operativo distinto mientras que el directorio activo corría bajo Windows, al no estar integradas las plataformas el FQDN que obtenía el ping era diferente. En ese caso modificamos el archivo C:\Windws\system32\drivers\etc\HOSTS agregando las siguientes entradas en ambos nodos:

10.10.1.25 sql-contoso-01.contoso.com

10.10.1.26 sql-contoso-02.contoso.com

Ejecutamos nuevamente un ping entre los nodos y pudimos obtener el FQDN correcto. Al ejecutar el programa de instalación de SQL Server el instalador obtuvo el nombre correcto y el identificador hexadecimal coincidió con el que había obtenido el cluster de Windows al crear el reporte. Como ahora el reporte sí pudo ser encontrado la regla cambió a estado Passed y pudimos continuar con la instalación.

Si bien este blog solo trata un error en particular al validar la regla cluster verification errors es uno de los más comunes. Aplicar le KB953748 ayudará a pasar por alto la validación del cluster y permitirá continuar con la instalación sin embargo saber a detalle cuál fue la causa raíz le ayudará a detectar posibles problemas en la infraestructura de su cluster.