Windows Server 2012: Cluster Network Load Balancing – NLB (Equilibrio o Balance de Carga)

En general cuando se habla de “Cluster” la gran mayoría lo asocia a uno de los dos tipos de “cluster” que pueden crearse, casi todos los asocian a “Failover Cluster”
Pero existe otro tipo de cluster, el llamado “Cluster Network Load Balancing”, que tiene diferente funcionalidad aunque en ambos casos se trate de “varios servidores actuando como si fueran uno solo”

Hagamos primero una muy breve introducción a las diferencias entre ambos tipos de Cluster.

En un “Failover Cluster”, en general cualquier servidor integrante (Nodo) puede cumplir determinada función de acuerdo a la configuración, pero debemos tener en cuenta que esa determinada función es llevada a cabo por un único nodo por vez. Esto es, la funcionalidad se moverá a otro nodo, sólo ante la falla del nodo que la tiene, o voluntariamente si lo hace un administrador.

Luego un “Failover Cluster” provee disponibilidad, pero hay otra característica muy importante que podemos necesitar, como es la escalabilidad. Esto supone que por ejemplo si aumenta la carga sobre una función, que la misma se reparta equitativamente y simultáneamente entre los Nodos del Cluster

Justamente la escalabilidad es una de las características de un “Cluster Network Load Balancing” (NLB), ya que en este caso los nodos se reparten la carga

Comparando uno con otro un “Cluster NLB” tiene algunas ventajas e inconvenientes respecto a un “Failover Cluster”

Como ventajas, podemos para nombrar sólo algunas:

  • El más importante de todos: escalabilidad de acuerdo a la carga
  • Así como podemos agregar nodos por demanda, también se pueden quitar
  • También tenemos disponibilidad, porque ante la falla de un nodo, otro tomará su lugar automáticamente y se balanceará la carga
  • Menos hardware, ya que podemos hacerlo con servidores con una única conexión de red
  • Los nodos no deben ser “exactamente iguales”
  • La configuración es mucho más sencilla”

Pero, siempre hay algo, los nodos se comunican entre ellos sólo para notificarse si están disponibles, no comparten la configuración ni propia de ni de la funcionalidad que pongamos en alta disponibilidad, ni siquiera los datos de esta última

Luego, por esto último, lo hace candidato ideal para aplicaciones que no requieran sesiones

En la gran mayoría de los casos, su uso es con Internet Information Services

Si el contenido de las páginas web es estático, y cambia poco, podremos mantenerlo sincronizado manualmente, pero si cambia mucho o si necesita acceder a bases de datos, también tenemos una solución

Esto que el “Cluster NLB” estén configurado como un “front-end” donde acceden los usuarios, y luego estos nodos busquen la información en un “back-end” dentro de la red interna, para presentarle a los clientes

La idea de esta demostración es demostrar el funcionamiento en forma lo más sencilla posible, por lo cual usaré la misma infraestructura que vengo usando en todas las demostraciones, los nodos tendrán una única placa de red, y la aplicación será simplemente una página web http

Las 3 máquinas que usaré tienen la siguiente configuración:

  • DC1.root.guillermod.com.ar
    Controlador de Dominio
    Dirección IP: 192.168.1.201/24
  • NLB1.root.guillermod.com.ar
    Servidor Miembro del Dominio
    Dirección IP: 192.168.1.121/24
  • NLB2.root.guillermod.com.ar
    Servidor Miembro del Dominio
    Dirección IP: 192.168.1.122/24

El “Cluster NLB” que crearemos, tendrá la siguiente configuración

  • NLB.root.guillermod.com.ar
    Dirección IP: 192.168.1.200/24
    Funcionalidad: servidor web

La única configuración adicional que he hecho en ambos “futuros” nodos fue agregar el rol “Web server” componente de “Web server (IIS)” con todos los componentes por omisión, o sea, un simple servidor web 🙂

Al verificar la funcionalidad, al final de la nota, voy a querer conocer qué nodo está atendiendo el pedido he hecho una modificación es modificar el archivo “C:\InetPub\wwwroot\iis.png” en cada nodo para que me muestre de dónde está sirviendo, uno para NLB1 y otro diferente para NLB2

Ahora vamos a instalar la funcionalidad, es un “Feature”, Network Load Balancing. Mostraré las pantallas en NLB1, pero recordar que lo debemos hacer en ambos nodos NLB1 y NLB2

 

Hay una configuración que debemos hacer manualmente en nuestro servidor DNS, porque el “Cluster NLB” no se registra automáticamente

Así que en DC1, abrimos la consola DNS, y de acuerdo a lo planteado al principio de la nota, creamos manualmente un registro de tipo A correspondiente a “nlb.root.guillermod.com.ar” con la dirección IP 192.168.1.200

 

Volviendo a uno de nuestros nodos, comenzaré a crear el “Cluster NLB”, haré todo desde NLB1 ya que puedo agregar a NLB2 remotamente

Para esto abrimos la consola Network Load Balancing Manager desde el menú Tools de Server Manager

Y con botón derecho comenzamos el asistente, como muestran las siguientes capturas de pantalla

Y con botón derecho, comenzamos el asistente para la creación del Cluster

Colocamos el nombe del primer nodo, y con el botón correspondiente nos conectamos. Verifiquemos que resuelva a la dirección IP correcta y continuamos

Indicamos la dirección que utilizará el Cluster

Indicamos el nombre con el que será accesible el Cluster, en este caso “nlb.root.guillermod.com.ar” y el modo de operación

Al estar utilizando nodos con una única placa de red, no podemos utilizar el modo “Unicast”, para esto deberíamos tener dos conexiones de red en cada nodo

Para quien le interese una muy buena descripción de cada uno de los modos de operación, sus ventajas e inconvenientes, le recomiendo visitar el siguente enlace

Selecting the Unicast or Multicast Method of Distributing Incoming Requests

Seguimos adelante. Vemos que, por omisión, el cluster tratará de balancear las conexiones a todos los puertos (0 a 65535) que no es lo que deseamos, sólo acceso HTTP (TCP-80), así que ingresamos con el botón Edit, y ponemos 80 tanto en inicio como en fin

Y finalizamos

Quedando así

 

Comenzaremos ahora agregando al otro nodo (NLB2), siguiendo el asistente tal como muestran las siguientes capturas de pantalla

Demorará unos instantes hasta agregarlo y ver que está todo bien

 

Comencemos a probar 🙂

Voy a DC1, abro el explorador y me conectaré a “nlb.root.guillermod.com.ar”

Vemos que estamos accediendo a NLB2

Cerremos el explorador y volvamos a NLB1

Detengamos el servicio en NLB2

Y ahora volvamos a DC1 e ingresemos nuevamente al sitio. Podremos observar que al estar detenido NLB2, nos atiende NLB1. Comentario por el uso de “cacheo” de páginas del IE, seguramente se deberá hacer un “refresh” de la página (F5) para que se actualize

 

Volvamos a poner en funcionamiento a NLB2

Demorará unos instantes

Si queremos probar el balance de carga deberemos disponer de otra máquina más. En mi caso usaré un cliente W8 que es parte del dominio

Como la conexión de DC1 se hizo sobre NLB1, ahora al cliente lo conecta a NLB2

 

Recordemos que esto es sólo una demostración para que nos familiaricemos y podamos hacer una prueba con un “Cluster NLB”; en ambiente productivo influencian otros factores que no son los aplicables a un ambiente de pruebas

Post a comment or leave a trackback: Trackback URL.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *