Skip to content

Script para el monitoreo del servicio de Network Load Balance (NLB) en una granja de servidores web IIS

02/11/2012

  En varias notas anteriores he detallado la implementación de una granja de servidores IIS mediante el uso de la funcionalidad de Network Load Balance (NLB) de Windows Server. Esta tecnología, combinada con un conjunto de servidores IIS otorga por un lado un balanceo de la carga de las aplicaciones web y por el otro, si todo se implementa correctamente, tolerancia a fallas a nivel del servicio de publicación web. Este último punto, la alta disponibilidad, es el que desarrollaré en este post.

Un clúster de NLB otorga balance de carga y alta disponibilidad a nivel de servidor. La alta disponibilidad ofrecida es a nivel de servidor y no a nivel de servicio. Esto plantea un problema cuando queremos utilizar NLB sobre el servicio de publicación web provisto por el IIS. Pongamos un ejemplo: Si tengo 2 nodos (nodo Ay nodo B) en un clúster IIS y he balanceado los puertos 80 y 443 en estos dos servidores para incorporar los servicios web, un cliente que accede a una aplicación web será redirigido a alguno de los servidores integrantes del clúster. Ahora supongamos que en el nodo B el servicio de publicación web falla por algún motivo. Como el nodo B como equipo aún está activo, el clúster NLB seguirá enviándole clientes, los que al tratar de acceder al sitio o aplicación web terminarán generando una falla. Podemos apreciar que en este caso la alta disponibilidad no ha funcionado como lo esperábamos.

Para resolver esta cuestión es que les presento un script de VBSCRIPT que especialmente he desarrollado y adaptado desde un ejemplo tomado del Microsoft TechNet. El proceso de este script consiste en enviar a cada servidor web dentro del clúster NLB un HTTP GET. De esta forma, si el pedido es contestado se asume que el IIS dentro de ese nodo está activo y sin problemas. Si el pedido al IIS falla, el script da de baja el nodo del clúster NLB, impidiendo que siga recibiendo nuevos pedidos y redirigiendo sus clientes a otro nodo disponible en el clúster. Por el contrario, si el nodo está deshabilitado por una falla en el IIS y encuentra que ahora el HTTP GET es respondido correctamente, el script vuelve a habilitar el nodo dentro de NLB y el mismo comienza a recibir pedidos.

Para que cumpla con el objetivo planteado, el script se debe ejecutar cada un período de tiempo, por ejemplo 1 ó 2 minutos. Esta ejecución se puede realizar mediante el uso de Tareas Programadas de Windows. El script puede ejecutar en cualquier equipo y no requiere tener instalado IIS ni ser parte del clúster NLB.

La invocación del script es muy simple y se indican como parámetros la dirección IP de uno de los nodos del clúster (-n), la dirección IP del clúster NLB (-v), el servicio a comprobar, en nuestro caso w3svc (-s) y una URL sobre la que se realizará la prueba de conexión al servicio web (-f).

Pueden acceder a la descarga de este script desde aquí.

3 comentarios
  1. Damian permalink

    Estimado, excelente aporte como así el contenido general del sitio,
    Sería tan amable de publicar nuevamente el Script para monitoreo del site en NLB?

    Muchas Gracias.

    Me gusta

  2. Leonardo Gomez permalink

    Hola Horacio. Quisiera mas ayuda en la utilización de este script

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: