Ejecuté la conmutación por error DNS RR en un sitio web de producción con tráfico moderado pero crítico para el negocio (en dos geografías) durante muchos años.
Funciona bien, pero hay al menos tres sutilezas que aprendí por las malas.
1) Los navegadores conmutarán por error de una IP que no funciona a una IP que funcione después de 30 segundos (la última vez que lo verifiqué) si ambos se consideran activos en cualquier DNS en caché disponible para sus clientes. Esto es básicamente algo bueno.
Pero hacer que "la mitad" de sus usuarios esperen 30 segundos es inaceptable, por lo que probablemente desee actualizar sus registros TTL para que sean unos minutos, no unos pocos días o semanas para que, en caso de una interrupción, pueda eliminar rápidamente el servidor inactivo de tu DNS. Otros han aludido a esto en sus respuestas.
2) Si uno de sus servidores de nombres (o una de sus dos geografías por completo) se cae, lo que sirve a su dominio de round-robin, y si el principal se cae, recuerdo vagamente que puede encontrarse con otros problemas tratando de eliminar eso servidor de nombres caído de DNS si no ha configurado su SOA TTL / caducidad para el servidor de nombres en un valor suficientemente bajo también. Podría tener los detalles técnicos incorrectos aquí, pero hay más de una configuración TTL que debe acertar para defenderse realmente contra puntos únicos de falla.
3) Si publica API web, servicios REST, etc., esos navegadores no suelen llamarlos y, por lo tanto, en mi opinión, la conmutación por error de DNS comienza a mostrar fallas reales. Esta puede ser la razón por la que algunos dicen, como lo pones "no se recomienda". He aquí por qué digo eso. Primero, las aplicaciones que consumen esas URL generalmente no son navegadores, por lo que carecen de las propiedades / lógica de conmutación por error de 30 segundos de los navegadores comunes. En segundo lugar, si se llama o no a la segunda entrada DNS o si se vuelve a sondear DNS depende en gran medida de los detalles de programación de bajo nivel de las bibliotecas de red en los lenguajes de programación utilizados por estos clientes API / REST, más exactamente cómo son llamados por la aplicación cliente API / REST. (Debajo de las cubiertas, ¿la biblioteca llama a get_addr y cuándo? Si los sockets se bloquean o cierran, ¿la aplicación vuelve a abrir sockets nuevos? ¿Hay algún tipo de lógica de tiempo de espera? Etc., etc.)
Es barato, bien probado y "funciona principalmente". Entonces, como con la mayoría de las cosas, su millaje puede variar.