Soy propietario y opero visualwebsiteoptimizer.com /. La aplicación proporciona un fragmento de código que mis clientes insertan en sus sitios web para rastrear ciertas métricas. Dado que el fragmento de código es JavaScript externo (en la parte superior del código del sitio), antes de mostrar el sitio web de un cliente, el navegador de un visitante se pone en contacto con nuestro servidor de aplicaciones. En caso de que nuestro servidor de aplicaciones se caiga, el navegador seguirá intentando establecer la conexión antes de que se agote el tiempo de espera (generalmente 60 segundos). Como puede imaginar, no podemos permitirnos tener nuestro servidor de aplicaciones inactivo en cualquier escenario porque afectará negativamente la experiencia no solo de los visitantes de nuestro sitio web, sino también de los visitantes de nuestros clientes.
Actualmente estamos utilizando un mecanismo de conmutación por error de DNS con un servidor de respaldo ubicado en un centro de datos diferente (en realidad, en un continente diferente). Es decir, monitoreamos nuestro servidor de aplicaciones desde 3 ubicaciones separadas y tan pronto como se detecta que está inactivo, cambiamos un registro A para apuntar a la IP del servidor de respaldo. Esto funciona bien para la mayoría de los navegadores (ya que nuestro TTL es de 2 minutos), pero IE almacena en caché el DNS durante 30 minutos, lo que podría ser un factor decisivo. Vea esta reciente publicación nuestra visualwebsiteoptimizer.com/split-testing-blog/maximum-theoretical-downtime-for-a-website-30-minutes/
Entonces, ¿qué tipo de configuración podemos usar para garantizar una conmutación por error casi instantánea en caso de que el centro de datos de la aplicación sufra una interrupción importante? Leí aquí www.tenereillo.com/GSLBPageOfShame.htm que tener múltiples registros A es una solución, pero no podemos permitirnos la sincronización de sesiones (todavía). Otra estrategia que estamos explorando es tener dos registros A, uno que apunta al servidor de aplicaciones y el segundo a un proxy inverso (ubicado en un centro de datos diferente) que resuelve al servidor de aplicaciones principal si está activo y al servidor de respaldo si está activo. ¿Crees que esta estrategia es razonable?
Solo para estar seguros de nuestras prioridades, podemos permitirnos mantener nuestro propio sitio web o aplicación inactiva, pero no podemos permitir que el sitio web de los clientes se desacelere debido a nuestro tiempo de inactividad. Entonces, en caso de que nuestros servidores de aplicaciones estén caídos, no tenemos la intención de responder con la respuesta predeterminada de la aplicación. Incluso una respuesta en blanco será suficiente, solo necesitamos que el navegador complete esa conexión HTTP (y nada más).
Referencia: leí este hilo que fue útil serverfault.com/questions/69870/multiple-data-centers-and-http-traffic-dns-round-robin-is-the-only-way-to-assure
fuente
Bien, esto fue preguntado hace un tiempo, pero ahora lo veo por primera vez.
Debieras:
Hacer cualquier otra cosa es irresponsable, de verdad. Supongo que ya tienes esto en su lugar.
Usted debe no basar su servicio en BGP trucos de enrutamiento menos que tenga u obtener el know-how para hacerlo. Los escenarios de enrutamiento BGP complejos son decididamente no triviales de implementar; no lo haga usted mismo si no tiene el conocimiento específico del dominio.
Tu pregunta en sí está un poco confundida. El análisis de cómo crear un servicio altamente disponible comienza con los datos de la aplicación , porque ese es su "estado". Las partes sin estado son fáciles de hacer altamente disponibles, las partes con estado completo no lo son. Entonces, en lugar de enfocarse en sus servidores y DNS, observe dónde mantiene el estado su aplicación . Comience optimizando allí y posiblemente pidiendo asesoramiento sobre algoritmos sobre Stack Overflow. ¿Podría implementar una noción de transacciones y reintento de servidor inteligente en su archivo Javascript fx?
fuente
En realidad, lo que desea podría actualizarse para ayudar a sus actividades de prueba divididas también si combina geodns y dns failover.
Enviar el grupo A a la ip 1 y el grupo B a la ip 2, incluso si estuvieran en el mismo servidor, le permitiría separar sus grupos de prueba. El Grupo A y el Grupo B son de diferentes regiones geográficas. Para ser justos, al día siguiente / semana / mes, voltea los grupos para asegurarse de que permite diferencias geográficas. Solo para ser riguroso en su metodología.
El servicio geodns / failover dns en http://edgedirector.com puede hacer esto
divulgación: estoy asociado con el enlace anterior, me encontré aquí investigando un artículo sobre la aplicación de trucos estúpidos de DNS para dividir las pruebas.
fuente