2011-03-16 14 views
20

Recientemente me llamó la atención que la configuración de múltiples registros A para un nombre de host puede usarse no solo para balanceo de carga round-robin sino también para failover automático.Uso de DNS para conmutación por error utilizando múltiples registros A

así que he intentado probar que:

  1. he cargado una página de nuestro dominio
  2. señalar cuál de nuestros servidores había servido a la página
  3. apagó el servidor web en ese host
  4. Reloaded la página

Y, de hecho, el navegador intentó automáticamente un servidor diferente para cargar la página. Esto funcionó en Opera, Safari, IE y Firefox. Solo Chrome no pudo probar un servidor diferente.

Pero después de dejar ese servidor fuera de línea durante unos minutos y mirar los registros de acceso, encontré que el número de solicitudes a los otros servidores no había aumentado significativamente. Con 1 de cada 3 servidores fuera de línea, esperaba que los accesos a cada uno de los 2 servidores restantes aumentaran aproximadamente un 50%, pero solo vi un 7-10%. Eso solo puede significar que la conmutación por error basada en DNS no funciona para la mayoría de los navegadores/visitantes, lo que contradice directamente lo que acabo de probar.

¿Alguien tiene una idea de qué pasa con la conmutación por error del navegador web basada en DNS? ¿Qué posible razón podría haber para que la conmutación por error automática funcione para mí pero no para la mayoría de nuestros visitantes?

+0

Pruebe serverfault.com, sitio hermano para stackoverflow. – bnieland

+0

Gracias, he [hecho eso] (http://serverfault.com/questions/247885/using-dns-for-failover-using-multiple-a-records) – Daniel

Respuesta

12

Lo que está sucediendo es que los navegadores no están haciendo una conmutación por error de DNS automática.

Si tiene múltiples registros A en un dominio, cuando su servidor de nombres solicite la IP para el dominio que escribió en su navegador, solicitará uno de la SOA. Podría ser cualquiera de esos registros A. Luego lo pasa junto.

Algunos servidores de nombres son lo suficientemente "inteligentes" como para solicitar un nuevo registro A si el que obtiene no funciona y otros no. Entonces, si establece múltiples registros A, habrá configurado una conmutación por error de pseudo redundancia, pero solo para aquellas personas con servidores de nombres "inteligentes". El resto obtiene una tirada de los dados sobre qué IP obtienen y si funciona bien, y si no, no se cargará como lo hizo para ti en Chrome.

Si desea probar esto específicamente, puede usar su archivo de hosts C:\Windows\system32\drivers\etc\hosts en Windows y /etc/hosts en Linux para especificar qué IP quiere que vaya con qué dominio ver si obtiene una verdadera conmutación por error, como lo hará En términos prácticos, los servidores DNS a través de la red almacenarán en caché la resolución de su nombre de dominio en función de su TTL. Entonces, si/cuando se produce una falla real, esa IP aún tendrá que resolverse y, de lo contrario, ser transferida a otro servidor de nombres.

+0

Gracias por su respuesta. Explica por qué la conmutación por error solo funciona para mí (tengo un servidor de nombres "inteligente") excepto Chrome (almacenamiento en caché agresivo del registro DNS (ahora no válido)). – Daniel

+1

Sé que no fue realmente la pregunta. Pero sin conmutación por error de DNS: ¿cómo se evita que un equilibrador de carga sea el único punto de falla? – Karussell

+0

Dependiendo de la compañía con la que trabaje o qué equipo tenga, si tiene un dispositivo en sentido ascendente, puede detectar que el equilibrador de carga murió y cambiar dinámicamente el tráfico a otra parte. Básicamente, está equilibrando la carga de su equilibrador de carga. De lo contrario, si solo hay IP y un cuadro que representa, entonces tiene un punto de falla. – Peter

1

Otra posible explicación es que, para la mayoría de los sitios web públicos, la mayor parte del tráfico proviene de los bots y no de los navegadores. Dependiendo del bot es posible que no sean tan inteligentes como los navegadores cuando se trata de manejar múltiples registros A para un dominio.

Además, algunos bots usan keep-alives para mantener abiertas las conexiones TCP & realizan múltiples solicitudes HTTP a través de la misma conexión. Dado que la búsqueda de DNS solo se realiza cuando se realiza una conexión, continuarán realizando solicitudes a la dirección IP anterior al menos mientras la conexión se mantenga abierta.

Si la explicación anterior tiene algún peso, debería poder verla en los registros examinando las cadenas del agente de usuario.

Cuestiones relacionadas