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
Comentarios
Muy ilustrativo, muchas gracias.
La pregunta es, cuando deja de tener sentido su uso y se hace recomendable una solucion hardware?
Me alegro te sirva :-)
No es una pregunta fácil de contestar, o inclusive si conviene o no hacerlo, porque depende de muchos factores
Piensa que si tienes los servidores, hacerlo con el propio sistema no implica ningún costo adicional
Por lo que conozco, las implementaciones basadas en hardware están más usadas, cuando son aplicaciones orientadas a conexión, por ejemplo una granja de servidores con Remote Desktop
Guillermo,
Es decir que si cada server tiene un solo adaptador de red el método de difusión es Multicast? no es al contrario??
Gracias
Hola Alexander, es todo un tema el método usado en NLB, porque depende de varios factores, no sólo de la cantidad de placas de red, sino de los Switch, etc.
Te dejo dos enlaces
Selecting the Unicast or Multicast Method of Distributing Incoming Requests:
https://technet.microsoft.com/en-us/library/cc782694(WS.10).aspx?tduid=(b73b00b8ab1c6ec28d82677111d9b49c)(256380)(2459594)(TnL5HPStwNw-dl.qLtuB6BdqnCDDQuoCsA)()
Determining the Network Infrastructure Requirements: Networking and Communications:
https://technet.microsoft.com/en-us/library/cc737167(v=ws.10).aspx
Hola Guillermo,
Tengo un inconveniente, eh echo la instalación del NBL en ambiente de prueba tal cual, la desactivar el NBL1 me redirige al NBL2 pero cuando trato de hacer la prueba de balanceo con el NBL1 y NBL2 activos en 2 pc diferentes solo me redirige a una sola web, a que se pueda estar debiendo esto …
Hola Jonathan, hay varias posibilidades para revisar, desde que se esté resolviendo correctamente el nombre a la dirección IP del cluster, la configuración unicast/multicast, prioridad de los nodos, puertos de escucha, etc.
Si no lo pudieras resolver revisando bien todo el procedimiento pon la pregunta en algún foro de soporte, por ejemplo los de Technet (https://social.technet.microsoft.com/Forums/es-ES/homehttps://social.technet.microsoft.com/Forums/es-ES/home y agrega más información que ayude a ver dónde puede estar el problema
Hola, tengo una consulta. AL momento de realizar la conexión de cluster e ingresr el HOST A, obtengo el error «Host unreachable», es algo con al resolución del nombre.. pero no encuentro como hacer que resuelva. Alguno ha tenido este comportamiento?
Hola Manuel, no termino de comprender la pregunta porque no sé a que te refieres con «HOST A» si es uno de los nodos o el cluster
El problema puede estar relacionado con los parámetros de configuración, te sugiero pongas la pregunta en un foro de soporte, por ejemplo los de Technet en https://social.technet.microsoft.com/Forums/es-ES/home, y des más datos de configuración a ver si alguien puede comprender la situación y sugerir alguna ayuda
Post genial, muchas gracias Guillermo.
Como complemento: También he visto este otro post en español sobre NLB donde aparecen cosas interesantes como por ejemplo instalar el rol desde linea de comandos, diferencia entre Unicast y Multicast, consideraciones en entorno vmware, etc: http://www.sysadmit.com/2017/11/windows-balanceo-de-carga-nlb.html
¡Gracias Juan José!
hola guille, espero estés bien, te sigo desde hace años y tus aportes me han ayudado.
no hay dudas sobre el post, pero lo que si me planteo es que pasa si el server donde se creo el cluster se cae, conmuta al otro nodo?
por ejemplo, tengo el server a y el server b, en los dos server se activo el NLB, pero sobre el server a genero el cluster y agrego el mismo server a como nodo y luego agrego el server b como nodo, las aplicaciones se balancenan, todo ok, pero si el server a se reinicia por mantenimiento o se apaga y el server b sigue prendido, hay un failover automatico?
saludos y abrazo desde argentina.
Hola Gabriel, el cluster se configura desde un servidor, pero ambos son nodos del mismo cluster, no es que uno sí y el otro es un agregado
Si un nodo deja de responder, cualquier otro nodo del cluster lo reemplaza, sólo se puede llegar a perder la conexión si estaba en el server que se cayó
Por supuesto que lo anterior es válido siempre y cuando ambos nodos respondan a la aplicació o servicio clusterizado
Resumiendo, salvo que lo configuraras para que una aplicación o servicio sea el responsable único, cualquiera automáticamente lo reemplaza
Buenos dias, tengo 2 servidores dentro del cluster todo funciona bien de manera local (Lan), pero cuando me conecto desde otro equipo desde otro segmento de red, y solo se conecta a un solo servidor donde se configuro el cluster con la ip virtual
Hola Natan, estos comentarios son sobre la nota, no son para soporte, sólo oriento cuando puedo. Puedes dirigirte a un foro de soporte, por ejemplo el de Technet en https://social.technet.microsoft.com/Forums/es-ES/home
Para darte una idea de por dónde comenzar, revisa las tablas de enrutamiento de los nodos
Trackbacks
[…] Windows Server 2012: Cluster Network Load Balancing – NLB (Equilibrio o Balance de Carga) […]