[Info] Ventajas de Round Robin sobre NLB

04/02/2004 - 19:38 por Javier Inglés [MS MVP] | Informe spam
A la hora de hacer una granja de servidores Web (es decir, varios servidores web sirviendo las mismas páginas o el mismo contenido mediante una sistema de balanceo) podemos optar generalmente por 3 opciones:

1.-Balanceador físico
2.-NLB
3.-Software de terceros para repartir carga entre los nodos

Hay veces incluso que se opta por monar un MSCS de IIS ó FTP, pero para una granja de servidores como tal lo más normal son los puntos anteriores. O incluso hacer algún desarrollo intero para ofrecer dicha posibilidad, pero lo más común es lo anterior

Sin duda, la primera opción sueñe ser la más cara pero suele ser la mejor opción -depende del balanceador, pero al estar hecho todo vía hardware se ofrecen posibilidad y opciones más robustas-
La tercera opción ya depende también del fabricante del producto y como lo implemente.
No voy a comenar mucho estas opciones porque no las incorpora el propio sistema que es donde me quiero centrar

Microsoft ofrece una forma de hacerlo mediante NLB que permite hasta 36 nodos (que se pueden ampliar en W2K3 con los anillos), el cual funciona básicamente así:

imaginemos que tenemos 3 servidores Web configurados por NLB para repartirse la carga; éste revisa qué servidor está más saturado o cuál menos, y en base a ello pasa la petición a un nodo u otro según la carga de éstos.
Si un nodo cae, el NLB lo detecta y deja de enviarle peticiones hasta que lo vuelve a ver arrancado.
Esto es a groso modo el funcionamiento simple de él.

NLB tiene un fallo; si el IIS cae (el IIS o cualquier servicio Web), éste no se entera...es decir, para dejar de repartir carga en ese nodo, éste debe estar apagado o caído, pero si cae el IIS intentará seguir pasándole peticiones (ya que no ve al server caído). Resultado: habrá peticones que acaben en error.

Por ello se puede pensar a veces en una solución alternativa para ello: el Round Robin por DNS

El Round Robin funciona del sigueinte modo: un mismo nombre en el dominio tiene asigandas varias entradas con distintas IP's; por ejemplo:

www-->192.168.0.1
www-->192.168.0.2
www-->192.168.0.3

Si un cliente hace una petición a www.dominio.elquesea, el servidor DNS le pasa como respuesta las 3 entradas así:

www-->192.168.0.1
www-->192.168.0.2
www-->192.168.0.3

Si un segundo cliente hace la misma petición después, el DNS se lo pasa así:

www-->192.168.0.3
www-->192.168.0.1
www-->192.168.0.2

Y si lo hace un tercero:

www-->192.168.0.2
www-->192.168.0.3
www-->192.168.0.1

Es decir, va cambiando el orden de preferencia de resolución para balancear la carga ante las peticiones.

Así, el primer cliente mira la respuesta y dice, voy a probar a conectar a www.dominio.elquesea por la IP 192.168.0.1, el segundo lo mismo pero con la 192.168.0.2 y el tercero con la 192.168.0.3, de este modo se balancea la carga también.

Pero es que además ocurre lo siguiente; si el primer cliente puede conectar con el servidor web por la 192.168.0.1 perfecto, usará siempre que pueda esta IP para coenctar a él y poder acceder al sitio web; pero, si el web server (que ni siquiera el servidor) está caído o parado por alguna causa, el lciente intenta conectar por la 192.168.0.1 por http...y ve que no hay respuesta; en vez de arrojar un fallo mira su caché DNS y decir...coñe!! si tengo más IP's que puedo usar para conectar a "www", y es entonces cuando vuelve a lanzar la petición http a la IP siguiente, en su caso la 192.168.0.2

Y así con todos los clientes; cuando el TTL de los registros DNS caduquen (por defecto en DNS de MS es 1 hora), se repite el proceso y el cliente volverá a pedir una resolución de nombres para "www", y puede o no, como es evidente, que se le devuelva en el anterior orden que tuvo o que haya cambiado por el balanceo :-)

Sin embargo la pega de ésto puede ser que en un momento determinado se quiera sacar unservidor del Round Robin por el motivo que sea y las estaciones cliente que ya tiene resuelto ese nombre con ese servidor incluido no se enteren hasta que les expire la caché DNS y vuelvan a solicitar el servidor DNS la resolución de nombre, por lo que puede llevar a demoras o a que ciertas aplicaciones fallen en ese momento :-(

De echo, ésto es lo más normal de usar e implementar en Internet, pudiendo ser después las IP's que se resuelven balanceadores físicos, por ejemplo.
Y como ejemplo calro, un equipo conectado a internet, si hace un nslookup para ver cómo se resuelve el dominio www.microsoft.com podrá ver la multitud de IP's que hay y que se "balancean" por Round Robin en los servidores DNS.

Un saludo

Javier Inglés
MS-MVP

e-m@il:jjingles2000@NOSPAMhotmail.com
<<<QUITAR "NOSPAM" PARA MANDAR MAIL>>>

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga ningún derecho
 

Leer las respuestas

#1 Ramon Jiménez
04/02/2004 - 22:45 | Informe spam
Si el señor Inglés me lo permite sólo una par de puntualizaciones...kuñao
:-)

1) De acuerdo en que los Balanceadores hardware son la mejor opción pero la
funcionalidad de balanceo la da el Software que lleve instalado (lease IOS
de Cisco, etc). Quiero decir que no deja de ser un elemento software el que
analiza los paquetes para determinar el servidor destino.

2) NLB hasta 32 nodos (no 36)

El resto... impecable...

Saludos
Ramon (desde Basilea)
"Javier Inglés [MS MVP]" wrote in message
news:
A la hora de hacer una granja de servidores Web (es decir, varios servidores
web sirviendo las mismas páginas o el mismo contenido mediante una sistema
de balanceo) podemos optar generalmente por 3 opciones:

1.-Balanceador físico
2.-NLB
3.-Software de terceros para repartir carga entre los nodos

Hay veces incluso que se opta por monar un MSCS de IIS ó FTP, pero para una
granja de servidores como tal lo más normal son los puntos anteriores. O
incluso hacer algún desarrollo intero para ofrecer dicha posibilidad, pero
lo más común es lo anterior

Sin duda, la primera opción sueñe ser la más cara pero suele ser la mejor
opción -depende del balanceador, pero al estar hecho todo vía hardware se
ofrecen posibilidad y opciones más robustas-
La tercera opción ya depende también del fabricante del producto y como lo
implemente.
No voy a comenar mucho estas opciones porque no las incorpora el propio
sistema que es donde me quiero centrar

Microsoft ofrece una forma de hacerlo mediante NLB que permite hasta 36
nodos (que se pueden ampliar en W2K3 con los anillos), el cual funciona
básicamente así:

imaginemos que tenemos 3 servidores Web configurados por NLB para repartirse
la carga; éste revisa qué servidor está más saturado o cuál menos, y en base
a ello pasa la petición a un nodo u otro según la carga de éstos.
Si un nodo cae, el NLB lo detecta y deja de enviarle peticiones hasta que lo
vuelve a ver arrancado.
Esto es a groso modo el funcionamiento simple de él.

NLB tiene un fallo; si el IIS cae (el IIS o cualquier servicio Web), éste no
se entera...es decir, para dejar de repartir carga en ese nodo, éste debe
estar apagado o caído, pero si cae el IIS intentará seguir pasándole
peticiones (ya que no ve al server caído). Resultado: habrá peticones que
acaben en error.

Por ello se puede pensar a veces en una solución alternativa para ello: el
Round Robin por DNS

El Round Robin funciona del sigueinte modo: un mismo nombre en el dominio
tiene asigandas varias entradas con distintas IP's; por ejemplo:

www-->192.168.0.1
www-->192.168.0.2
www-->192.168.0.3

Si un cliente hace una petición a www.dominio.elquesea, el servidor DNS le
pasa como respuesta las 3 entradas así:

www-->192.168.0.1
www-->192.168.0.2
www-->192.168.0.3

Si un segundo cliente hace la misma petición después, el DNS se lo pasa así:

www-->192.168.0.3
www-->192.168.0.1
www-->192.168.0.2

Y si lo hace un tercero:

www-->192.168.0.2
www-->192.168.0.3
www-->192.168.0.1

Es decir, va cambiando el orden de preferencia de resolución para balancear
la carga ante las peticiones.

Así, el primer cliente mira la respuesta y dice, voy a probar a conectar a
www.dominio.elquesea por la IP 192.168.0.1, el segundo lo mismo pero con la
192.168.0.2 y el tercero con la 192.168.0.3, de este modo se balancea la
carga también.

Pero es que además ocurre lo siguiente; si el primer cliente puede conectar
con el servidor web por la 192.168.0.1 perfecto, usará siempre que pueda
esta IP para coenctar a él y poder acceder al sitio web; pero, si el web
server (que ni siquiera el servidor) está caído o parado por alguna causa,
el lciente intenta conectar por la 192.168.0.1 por http...y ve que no hay
respuesta; en vez de arrojar un fallo mira su caché DNS y decir...coñe!! si
tengo más IP's que puedo usar para conectar a "www", y es entonces cuando
vuelve a lanzar la petición http a la IP siguiente, en su caso la
192.168.0.2

Y así con todos los clientes; cuando el TTL de los registros DNS caduquen
(por defecto en DNS de MS es 1 hora), se repite el proceso y el cliente
volverá a pedir una resolución de nombres para "www", y puede o no, como es
evidente, que se le devuelva en el anterior orden que tuvo o que haya
cambiado por el balanceo :-)

Sin embargo la pega de ésto puede ser que en un momento determinado se
quiera sacar unservidor del Round Robin por el motivo que sea y las
estaciones cliente que ya tiene resuelto ese nombre con ese servidor
incluido no se enteren hasta que les expire la caché DNS y vuelvan a
solicitar el servidor DNS la resolución de nombre, por lo que puede llevar a
demoras o a que ciertas aplicaciones fallen en ese momento :-(

De echo, ésto es lo más normal de usar e implementar en Internet, pudiendo
ser después las IP's que se resuelven balanceadores físicos, por ejemplo.
Y como ejemplo calro, un equipo conectado a internet, si hace un nslookup
para ver cómo se resuelve el dominio www.microsoft.com podrá ver la multitud
de IP's que hay y que se "balancean" por Round Robin en los servidores DNS.

Un saludo

Javier Inglés
MS-MVP

:
<<<QUITAR "NOSPAM" PARA MANDAR MAIL>>>

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho

Preguntas similares