18 votos

Evitar tiempos de espera de DNS cuando un dns servidor falla

Tenemos un pequeño centro de datos con cerca de un centenar de hosts que apunta a 3 internos de los servidores dns (bind 9). Nuestro problema viene cuando uno de los servidores dns internos no está disponible. En ese momento todos los clientes de ese punto para que se inicie el servidor realizando muy lentamente.

El problema parece ser que el stock de linux resolución realidad no tienen el concepto de "error" a un servidor dns diferente. Usted puede ajustar el tiempo de espera y el número de reintentos que se utiliza, (y girar de modo que funciona a través de la lista), pero no importa configuración de lo que uno utiliza nuestros servicios se realizan de forma mucho más lenta si un servidor dns primario no está disponible. En el momento en que esta es una de las mayores fuentes de interrupciones en el servicio para nosotros.

Mi respuesta ideal sería algo así como "RTFM: modificar /etc/resolv.conf como este...", pero si esa es una opción que no he visto.

Me preguntaba cómo otras personas se ocupen de este problema?

Puedo ver 3 posibles tipos de soluciones:

  • Uso linux-ha/Marcapasos y de conmutación por error de ips (por lo que la IP del dns de los VIPs son "siempre" está disponible). Por desgracia, no tenemos una buena esgrima de la infraestructura, y sin cerco marcapasos no funciona muy bien (en mi experiencia Marcapasos reduce la disponibilidad sin la esgrima).

  • Ejecutar un servidor dns local en cada nodo, y han resolv.conf punto a localhost. Esto iba a funcionar, pero nos daría mucho más que los servicios para supervisar y administrar.

  • Ejecutar una caché local en cada nodo. Parecen considerar nscd "roto", pero dnrd parece tener el derecho conjunto de características: marca servidores dns como hacia arriba o hacia abajo, y no uso "abajo" de los servidores dns.

Cualquier casting parece funcionar sólo en el enrutamiento ip de nivel, y depende de las actualizaciones de ruta de error del servidor. Multi-casting parecía que iba a ser una respuesta perfecta, pero se unen ¿ no apoyo la radiodifusión o multi-casting, y la documentación que he podido encontrar parecen sugerir que dns de multidifusión está más dirigida a la detección de servicios y auto-configuración en lugar de la normal de resolución dns.

Me estoy perdiendo una solución obvia?

8voto

BillThor Puntos 15761

Un par de opciones. Ambos distribuir la carga de DNS a través de sus servidores de DNS.

  • Trate de usar options rotate en resolv.conf. De esta manera se minimiza el impacto del servidor principal está abajo. Si uno de los otros servidores es hacia abajo, se disminuyen las acciones.
  • El uso de un servidor de nombre diferente orden en diferentes clientes. Esto va a permitir a algunos clientes para ejecutar normalmente, si el servidor DNS principal está abajo. Esto se extiende el impacto de un servicio de servidor DNS alrededor.

Estas opciones se pueden combinar con options timeout:1 attempts:5. Aumento de los intentos de si la disminución de tiempo de espera de modo que usted puede manejar lento servidores externos.

Dependiendo de la configuración del router puede ser capaz de configurar los servidores DNS para apoderarse de la primaria de la dirección IP del servidor DNS cuando está abajo. Esto puede ser combinado con las técnicas anteriores.

NOTA: puedo ejecutar años sin discrecional DNS cortes. Como otros han señalado, me gustaría trabajar en solucionar los problemas que causan los servidores DNS a fallar. Los pasos de arriba, también ayuda con el mal configurado los servidores de DNS con la especificación inalcanzable servidores de nombre.

4voto

jrojo Puntos 244

Echale un vistazo y "hombre resolv.conf". Puede agregar una opción de tiempo de espera para el resolv.conf. El valor predeterminado es 5, pero añadiendo lo siguiente a resolv.conf debía traerlo hasta 1 segundo:

opciones timeout:1

3voto

Dennis Kaarsemaker Puntos 12683

De clústeres de software tales como el latido del corazón o marcapasos/corosync es tu amigo aquí. Como un ejemplo, hemos establecido marcapasos/corosync de la siguiente manera:

  • Par cada servidor con otro
  • Por cada pareja tiene 2 dns vips, generalmente de uno en cada
  • Debe enlazar o el servidor falla, el personaje se mueve a otro servidor en cuestión de milisegundos

La producción de horario 24x7, pero creemos firmemente que debería ser posible para cada servidor falle sin afectar a los clientes. opción de rotar es simplemente una solución, yo no haría eso.

2voto

Si un servidor de nombres va a la baja para el mantenimiento, es un procedimiento normal para reducir los tiempos de espera en la SOA para ese dominio antes de tiempo, así que cuando el mantenimiento se produce, los cambios (como la eliminación de los registros NS antes de que el mantenimiento y ponerlas de nuevo después de que el mantenimiento) se propaga rápidamente. Tenga en cuenta que esta es una del lado del servidor - el cambio de las resoluciones es un cliente enfoque y ... a menos que puedas hablar con todos y cada uno de sus clientes y conseguir que se haga este ajuste en su equipo ... podría no ser el enfoque correcto. Bueno, creo que hizo decir sólo un centenar de clientes en un centro de datos mediante servidores DNS internos, pero realmente ¿desea cambiar la configuración de un centenar de clientes cuando se puede cambiar la zona?

Yo diría que los valores en la SOA para ajustar, pero yo estaba navegando en la web para averiguar exactamente info cuando me encontré con esta pregunta.

1voto

Shane Puntos 21

¿Tal vez usted puede poner sus servidores DNS detrás de un balanceador de carga? Al parecer LVS puede equilibrar UDP. Obviamente hacer tu LB altamente disponible así que no es un punto único de falla.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: