En la actualidad es necesario que cualquier servicio que queramos implementar en nuestro sistema cumpla una serie de requisitos para que podamos usarlo con confianza.

Cuando necesitamos asegurar la disponibilidad de un acceso a algún tipo de recurso, evitando que cualquier error a nivel harware o de comunicaciones nos imposibilite el acceso, o bien necesitemos adaptarnos a cualquier imprevisto de requisitos de trabajo por el que necesitemos incrementar rápidamente la capacidad de suministrar el servicio, la respuesta que encontraremos dentro de los servicios de Windows 2012 serán los Cluster NLB (Network Load Balancing).

Este rol, reunirá las máquinas asignadas en un cluster que nos permitirá disponer de Alta Disponibilidad en aquellos servicios que no necesiten disponer de acceso a servidores donde deban almacenar información en los servidores, como aplicaciones Web Estáticas.

A través de nodos Convergentes, las máquinas que forman parte del cluster se repartirán las peticiones de acceso al servicio en función al estado de carga de cada uno de los nodos que se encuentran funcionando. Adicionalmente, en el caso de que se sufriera algún error inesperado, automáticamente el cluster se encargará de ajustarse a las condiciones del servicio.

Para realizar la instalación, en este caso a través de comandos Powershell,  lo primero que tendríamos que hacer es incorporar los roles a las máquinas que nos servirán de nodos del Cluster.

En este caso se instalarían tanto NLB como sus herramientas, RSAT-NLB en todos ellos a través del comando común para añadir cualquier característica:

> Install-WindowsFeature -ComputerName [nombre del equipo] NLB,RSAT-NLB

O bien, para varios equipos de forma simultánea

> Invoke-Command -ComputerName [nombredeequipo1,nombredeequipo2,…] -ScriptBlock {install-WindowsFeature NLB,RSAT-NLB}

A partir de ahí, procederíamos a dar de alta un nuevo cluster, asignándole el nombre y la dirección IP.

 photo paso1 new-nlbcluster_zpsmmll2r9r.jpg

– Interface: el nombre de la interfaz que se va a utilizar.

– OperationMode:

  • Unicast: Todos los nodos del Cluster usan la misma MAC unicast. Se usa principalmente cuando sólo se dispone de una única tarjeta de red por host.
  • Multicast: Cada Host mantiene su dirección MAC original, pero se le asigna una dirección MAC al cluster de NLB. Se usa cuando los equipos tienen varias tarjetas de red.
  • Igmpmulticast: Se usa para prevenir desbordamiento cuando se usan switches.

– ClusterPrimaryIP: especifica la dirección IP que va a utilizar NLB.

– ClusterName: especifica el nombre asociado al Cluster.

Para controlar como se enruta el tráfico a los nodos se configuran las Reglas de Puerto que va a seguir NLB. Así le indicamos los puertos en los que habilitaremos el balanceo de carga

Tras terminar el proceso de creación se pueden modificar, pero es importante crear las Reglas antes de añadir cualquier nodo adicional al entorno.

 photo paso2 set-nlbclusterportrule_zpsmvmrhw6u.jpg
Las opciones a incluir serían:

– NewStartPort: Configura el puerto inicial de la regla. El rango de valores válido es de 0 a 65535.

– NewEndPort: Especifica el puerto final de la regla, dentro del mismo rango.

– NewMode: Permite ajustar el modo de filtrado para el conjunto de Puertos:

  • Filtrado Múltiple: el total de nodos atiende las peticiones y s reparte la carga.
  • Single Host: únicamente un nodo aendería la petición en virtud a la prioridad que tenga asignada.
  • Disable: El cluster no hace balanceo de carga paa el rango de puertos especificado.

– NewAffinity: Enmarca la afinidad de la regla con tres posibles valores:

  • Single: Se intenta asignar siempre a un mismo nodo cada vez que una misma IP que intenta acceder al servicio.
  • Network: Asigna el nodo en función a los primeros 24 bits de la dirección IP de origen.
  • None: Envía la petición al nodo con menor carga en ese momento sin importar el origen.

Así el estado actual de nuestro Cluster sería el siguiente:

 photo paso3 get-nlbclusternode_zpsyaoljuun.jpg

Ahora, podríamos añadir el número de nodos deseados al servicio, en este caso únicamente un segundo host.

 photo paso4 add-nlbclusternode_zpsz9s36tme.jpg
Así, también queda configurado y comprobamos que se encuentra en estado convergente. Al igual que antes, verificamos el estado del cluster:

 photo paso5 get-nlbclusternode_zpsfrzhd6he.jpg
Como podemos observar, se encuentran añadidos los dos nodos en el cluster que hemos definido. Igualmente, a través de las herramientas gráficas que hemos instalado podríamos observar el resultado:

 photo paso6 rsat_zpsjktkpidn.jpg

Conclusiones:

Realmente se trata de una operación sencilla en cuanto a comandos que, de cara a permitirnos Balancear carga entre servidores, por ejemplo de acceso Web, nos garantizará cierta flexibilidad y disponibilidad, ya sea ante el aumento o disminución de las necesidades de acceso a nuestro servicio o garantizándonos la estabilidad del servicio al que da soporte estos host, y que podremos mejorar tan solo añadiendo nuevas máquinas dentro del Cluster, lo cual siempre hay que tener en cuenta a la hora de hacer más fácil nuestro trabajo como administradores.

 

Juan José Hernández

Alumno MCSA/MCSE en el centro Tajamar.