GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

DNS Round Robin y la Caché DNS de Cliente (TTL)


Round Robin es una técnica utilizada para el Balanceo de Carga basada en DNS, que consiste en asignar varias IPs a un único nombre, de tal modo que cada consulta DNS a dicho nombre devuelva una lista con todas las IPs asignadas al mismo, pero permutando el orden entre una consulta DNS y la siguiente, para conseguir el efecto de Balanceo. Los clientes DNS más básicos, simplemente utilizarán la primera de las IPs devueltas, mientras que los clientes más avanzados serán capaces de tomar acciones más complejas. En el presente artículo vamos a explicar este concepto a través de unos simples ejemplos y chequeos básicos.

Lo primero que debemos tener en cuenta, es que Round Robin es una opción del servidor DNS que suele estar habilitado por defecto, pero cabe la posibilidad de que no lo esté, en cuyo caso también se devolverán todas las IPs asignadas al mismo nombre, pero siempre en el mismo orden.

Round Robin es una opción del servidor DNS que suele estar habilitado por defecto, pero cabe la posibilidad de que no lo esté, en cuyo caso también se devolverán todas las IPs asignadas al mismo nombre, pero siempre en el mismo orden

A modo de ejemplo, hemos creado dos registros A para el mismo nombre (ABCD), de tal modo que responda a dos IPs (10.0.0.1 y 10.0.0.2). Adicionalmente hemos creado un Alias DNS apuntando a dicho registro A. No tenemos ninguna máquina con dichas IPs, pero para comprobar la resolución de nombres, es suficiente.

A modo de ejemplo, hemos creado dos registros A para el mismo nombre (ABCD), de tal modo que responda a dos IPs (10.0.0.1 y 10.0.0.2). Adicionalmente hemos creado un Alias DNS apuntando a dicho registro A

Los registros A los hemos creado con el TTL por defecto de 1 minuto.

Los registros A los hemos creado con el TTL por defecto de 1 minuto

Sin embargo, el Alias lo hemos creado con un TTL de 2 minutos.

El Alias lo hemos creado con un TTL de 2 minutos

El TTL (Time to Live) es el tiempo que puede permanecer en Caché un registro de DNS. Al ejecutar una consulta DNS, esta puede quedar almacenada en Caché, de tal modo que sucesivas consultas DNS para el mismo registro se puedan resolver directamente desde la Caché, evitando realizar una consulta a los servidores DNS, y en consecuencia, minimizando Latencias. Una vez que un registro en Caché ha expirado su tiempo de vida (TTL), la siguiente consulta para dicho registro se tendrá que realizar de nuevo contra los servidores DNS. De este modo, es posible ajustar el valor de TTL para minimizar el número de consultas DNS, pero permitiendo que ante un cambio en DNS, no tenga que pasar demasiado tiempo hasta que tome efecto por completo (lo que se llama el tiempo Propagación de DNS).

Empezando con nuestros ejercicios, lo primero que vamos a hacer es utilizar la herramienta nslookup para comprobar el funcionamiento de Round Robin, consultando el registro A que hemos creado con varias direcciones IP asignadas. Cada consulta DNS que se realice devolverá todas las IPs asignadas al nombre, pero cambiando el orden. Sin Round Robin, siempre se devolverían las IPs en el mismo orden.

Consultas DNS con nslookup para comprobar el funcionamiento de Round Robin

Si hacemos un par de PINGs seguidos, el segundo PING devolverá la misma IP que el primero, ya que resolverá desde la caché local, sin hacer una nueva consulta DNS, excepto que el registro esté expirado en la Caché Local (TTL) y tenga que realizar una nueva consulta DNS. Con el comando ipconfig /displaydns podemos comprobar la Caché local, así como el valor actual del TTL de cada registro en Caché.

Si hacemos un par de PINGs seguidos, el segundo PING devolverá la misma IP que el primero, ya que resolverá desde la caché local, sin hacer una nueva consulta DNS. Con el comando ipconfig /displaydns podemos comprobar la Caché local, así como el valor actual del TTL de cada registro en Caché

Si deseamos vaciar la Caclé DNS de Cliente para hacer alguna prueba (o por cualquier otro motivo) es suficiente con ejecutar el comando ipconfig /flushdns.

Si deseamos vaciar la Caclé DNS de Cliente para hacer alguna prueba (o por cualquier otro motivo) es suficiente con ejecutar el comando ipconfig /flushdns

Por otro lado, en caso de que se esté utilizando un Alias DNS, y se realicen consultas DNS tanto al Alias como al registro A, existirán dos entradas diferentes en la Caché, que podrían incluir las IPs en mismo o distinto orden.

Por otro lado, en caso de que se esté utilizando un Alias DNS, y se realicen consultas DNS tanto al Alias como al registro A, existirán dos entradas diferentes en la Caché, que podrían incluir las IPs en mismo o distinto orden

Si comprobamos el tiempo de vida de ambos registros, vemos que está en ambos casos a 1m (3600seg), es decir, aunque hemos configurado el Alias a 2m, como los registros A a los que apuntan están limitados a 1m, en ambos casos se queda con un valor de 1m (se respeta).

Si comprobamos el tiempo de vida de ambos registros, vemos que está en ambos casos a 1m (3600seg), es decir, aunque hemos configurado el Alias a 2m, como los registros A a los que apuntan están limitados a 1m, en ambos casos se queda con un valor de 1m (se respeta)

Si dejamos el Alias con un TTL de 2m, y los registros A con un TTL mayor (3m), vemos que entonces que también se respetan estos valores, es decir, en este caso el Alias no se ve limitado por los registros A, al tener un valor más restrictivo.

Si dejamos el Alias con un TTL de 2m, y los registros A con un TTL mayor (3m), vemos que entonces que también se respetan estos valores, es decir, en este caso el Alias no se ve limitado por los registros A, al tener un valor más restrictivo

Poco más por hoy. Como siempre, confío que la lectura resulte de interés.

 


Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.