Qué es un NLB.

Un NLB (Network Load Balancing) es una solución de Microsoft en la cual mezcla las características de un clúster y del balanceo de carga.

 

Funcionamiento y características

El NLB distribuye el tráfico entre los servidores que forman el clúster, mediante el protocolo TCP/IP.  Está diseñado para mejora la disponibilidad y la escalabilidad de las aplicaciones de un servidor de Internet, como las utilizadas en la Web, FTP, firewall, proxy, red privada virtual (aplicaciones stateless). Funciona repartiendo las solicitudes de los clientes a cada servidor miembro del clúster.

Los servidores en un clúster NLB se denominan hosts, cada uno ejecuta una copia separada de las aplicaciones del servidor. Las solicitudes de los clientes se distribuyen entre los hosts del clúster. Se puede configurar la carga que manejará cada host o dirigir todo el tráfico a un único host designado, que se denomina host predeterminado.

Al combinar dos o más computadoras, NLB proporciona confiabilidad. Para aplicaciones de carga equilibrada, cuando un host falla o se desconecta, la carga se redistribuye automáticamente entre las computadoras que todavía están en funcionamiento. Cuando esté listo, la computadora fuera de línea puede volver a unirse de forma transparente al clúster y recuperar su parte de la carga de trabajo, lo que permite que las otras computadoras del clúster manejen menos tráfico. Añadiendo así alta disponibilidad a sus características.

El NLB perite agregar hosts dinámicamente al clúster para manejar una mayor carga, proporcionando así escalabilidad.

 

Configuración del NLB y de puertos.

Modo operación del clúster:

  1. Unicast: Todos los nodos del usan la misma MAC, la del clúster. La ventaja de unicast es que funciona en casi todas las configuraciones sin ninguna intervención especial en los switches o routers. Sin embargo, no permite la comunicación entre hosts, por lo que necesitaría al menos dos NIC.

Otra desventaja es la inundación de la red, al sustituir la MAC de cada host por la MAC virtual del NLB provoca que los switches no sean capaces de saber dónde tienen que enviar la comunicación, mandándola por todos los puertos del switch. Si algún equipo fuera del clúster comparte switch con el NLB, recibirá los paquetes de éste, la solución es aislarlo, mediante una VLAN, por ejemplo.

  1. Multicast: Cada Host mantiene su dirección MAC original, pero el NLB agrega una dirección MAC a cada nodo de clúster. Básicamente cada host tiene dos direcciones MAC, su dirección real y su dirección generada por NLB. En multicast se pueden crear entradas estáticas en el switch para que envíe los paquetes solo a los miembros del clúster NLB. La asignación de la dirección a los puertos que está utilizando el clúster NLB impide que todos los puertos se inunden. Solo los puertos asignados recibirán los paquetes para el clúster NLB en lugar de todos los puertos del switch. Si no crea las entradas estáticas, causará inundación como en unicast.

En algunos casos la utilización de direcciones MAC multicast, no es soportada por la implementación ARP de algunos routers. Es posible crear una entrada ARP estática en el router como solución al problema.

 

  1. Igmpmulticast: Se basa en el protocolo IGMP y necesitas switches con capacidad IGMP para que funcione. Este modo es básicamente el mismo que multicast, pero con un método automático para la detección de tráfico NLB.

 

Filtrado de los puertos:

  1. Single Host: Sólo hay un host que atiende peticiones. El nodo que atiende peticiones es el que tenga un valor Priority más bajo. Si ese nodo falla, las peticiones pasan al siguiente nodo en orden de prioridad. El valor Priority, sólo se puede especificar editando la regla de puerto a nivel de cada host, y no a nivel del clúster. En consecuencia, esta configuración sólo ofrece tolerancia a fallos, y no permite distribuir la carga.

 

  1. Disable this port range: Permite denegar el acceso al rango de puertos especificado, por ejemplo, por motivos de seguridad, ya que los rangos de puertos que no estén cubierto por ninguna regla del puerto serán despachados por el Nodo por Defecto (Default Host).

 

  1. Multiple Host: Las peticiones entrantes de los clientes se distribuirán entre los distintos hosts del clúster NLB, pudiendo personalizarse el peso deseado para cada Nodo, para aquellos casos en que no se desee un reparto equitativo entre todos los hosts (ej.: 80% – 20%), por ejemplo, porque existan nodos con capacidad hardware sensiblemente superior. Sólo en este caso se puede configurar la afinidad:
  • Single: Si un usuario con una IP de origen determinada hace una petición al clúster, se le dirige a uno de los nodos y a partir de ese momento, ese usuario (en función de su IP de origen) se dirige siempre a ese mismo nodo. Puede ser un problema si múltiples usuarios acceden al clúster usando NAT, ya que todos irían al mismo nodo.
  • Network: Distribuye la carga entre los nodos según a qué red de clase C pertenece la IP de origen. Cuando un cliente accede al clúster se almacenan los 3 primeros octetos de su dirección IP. Cualquier otra petición cuya IP de origen tenga los mismos 3 primeros octetos se redirige al mismo nodo.
  • None: Balanceo de carga puro. Cada petición va al siguiente nodo con menor carga. Sólo útil si las aplicaciones son stateless.

 

Autor/a: Millán Jara Ferrero

Curso: Microsoft MCSA Windows Server + Microsoft MCSE Cloud Platform & Infrastructure

Centro: Tajamar

Año académico: 2017-2018