Por: Daniel Torres Garrido

 

Recientemente trabajamos en un incidente que me llamó mucho la atención por el error y los antecedentes del caso. Inicialmente se configuró un cluster con Windows Server 2012, el cluster se creó a nivel de Windows con 2 nodos, posteriormente se agregó el storage y se dejó disponible para una instancia de SQL Server. Finalmente se instaló SQL Server 2008 R2 en cluster, la instalación finalizó con éxito, no hubo ningún problema ni nada que nos indicara que lo peor estaba por venir.

Hasta este punto parece que nada atrae nuestra atención, como administrador de bases de datos da la impresión de que esta será una instalación más, que todo va bien hasta el momento y que es cuestión de agregar el siguiente nodo para irnos a casa tranquilos.

Ahora bien, nos conectamos al nodo pasivo para ejecutar el setup de SQL Server 2008 R2 y así terminar el cluster. Seleccionamos la opción Add node to a SQL Server failover cluster, esperamos a que se instalen los setup files que necesita el instalador y al llegar al paso Setup Support Rules obtenemos el siguiente error:

Cluster Service Verification: Error

Lo primero que nos causa es cierto desconcierto, no tiene sentido que tengamos un error en la validación del servicio del cluster a estas alturas cuando ya logramos instalar el Cluster a nivel Windows y peor aun cuando ya tenemos incluso una instancia de SQL en cluster de un solo nodo. Si damos clic sobre el vínculo que contiene la palabra Error obtenemos la siguiente descripción:

Cluster_IsOnline Verifies that the cluster service is online. Failed The SQL Server failover cluster services is not online, or the cluster cannot be accessed from one of its nodes. To continue, determine why the cluster is not online and rerun Setup. Do not rerun the rule because the rule cannot detect a cluster environment.

Con la descripción del error el instalador nos dice que el servicio del cluster no está en línea o no puede ser accedido desde los nodos y debemos resolver el problema para estar en condiciones de continuar con la instalación. Para seguir con el análisis de la falla podemos hacer uso del KB 955396 y localizar los archivos de la instalación de SQL Server 2008 R2:

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

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

Al revisar el archivo Detail.txt podemos encontrar el siguiente mensaje:

image

Adicionalmente vemos que otras reglas de validación fallan, como por ejemplo el servicio del MSDTC (Distributed Transaction Coordinator).

image

Hasta el momento parece que todas las validaciones del cluster fallaron. Al abrir el reporte SystemConfigurationCheck_Report.htm podemos ver que existen varios errores y alertas al ejecutar los setup support rules, los errores y alertas que aparecen en el reporte se muestran a continuación:

image

Después de revisar los archivos de instalación así como los síntomas del setup la respuesta la encontramos en el siguiente blog:

Installing the Failover Cluster Feature and Tools in Windows Server 2012

http://blogs.msdn.com/b/clustering/archive/2012/04/06/10291601.aspx

La información del blog la trataremos más adelante. Comenzaremos por recordar que uno de los requerimientos iniciales para construir el cluster en Windows es instalar la característica Failover Cluster Feature and Tools. En Windows Server 2008 y Windows Server 2008 R2 al instalar esta característica se agrega la utilería cluster.exe como lo indica el siguiente artículo:

Remote Server Administration Tools Overview

http://technet.microsoft.com/en-us/library/cc731209.aspx

Failover Clustering Tools

Failover Clustering Tools includes the Failover Cluster Manager snap-in and the cluster.exe command-line tool.

Resulta que el instalador de SQL Server 2008 R2 hace uso de la utilería cluster.exe para consultar el estado del cluster así como de los recursos del grupo de SQL Server. En el blog que mencioné anteriormente podemos confirmar que a partir de Windows Server 2012 al agregar la característica Failover Cluster Feature and Tools se agregan por defecto los Failover Cluster Management Tools y el Failover Cluster Module for Windows PowerShell. Estos dos componentes ya no utilizan la utilería cluster.exe puesto que su lugar hacen uso de las bondades de PowerShell. Como lo mencionan en el blog el cluster.exe es una característica catalogada como deprecated para futuras versiones de Windows comenzando por Windows Server 2012 sin embargo aún está disponible si las agregamos manualmente utilizando el Server Manager y seleccionando las opciones Failover Cluster Automation Server y Failover Cluster Command interface. Esto lo hacemos en el nodo pasivo y posteriormente lanzamos de nuevo el setup de SQL Server 2008 R2 y seleccionamos la opción para agregar el nodo, esta vez en el paso Setup Support Rules veremos que el error de validación del servicio del cluster y los restantes desaparecen por lo que podemos proceder con la instalación y finalizar con éxito. Por procedimiento realizamos el mismo procedimiento en todos los nodos ya que no sabemos si eventualmente algún service pack pueda hacer uso del cluster.exe.

Es importante mencionar que SQL Server 2008 R2 se diseñó mientras Windows Server 2008 y 2008 R2 estaban en el mercado. Dado que Windows Server 2012 salió después era virtualmente imposible saber con antelación que la utilería cluster.exe sería descontinuada del Failover Cluster Feature and Tools, por este motivo debemos proceder con la instalación manual de los componentes para lograr una instalación exitosa.