Possiedo e gestisco visualwebsiteoptimizer.com /. L'app fornisce uno snippet di codice che i miei clienti inseriscono nei loro siti Web per tracciare determinate metriche. Poiché lo snippet di codice è JavaScript esterno (nella parte superiore del codice del sito), prima di mostrare il sito Web di un cliente, il browser di un visitatore contatta il nostro server delle app. Nel caso in cui il nostro server delle applicazioni non funzioni, il browser continuerà a provare a stabilire la connessione prima che scada (in genere 60 secondi). Come puoi immaginare, non possiamo permetterci di disattivare il nostro server di app in qualsiasi scenario perché influirà negativamente sull'esperienza non solo dei visitatori del nostro sito Web ma anche dei visitatori del sito Web dei nostri clienti!
Attualmente stiamo utilizzando il meccanismo di failover DNS con un server di backup situato in un centro dati diverso (in realtà un continente diverso). Cioè, monitoriamo il nostro server delle app da 3 posizioni separate e non appena viene rilevato che è inattivo, cambiamo un record per puntare all'IP del server di backup. Funziona bene per la maggior parte dei browser (dato che il nostro TTL è di 2 minuti) ma IE memorizza nella cache il DNS per 30 minuti, il che potrebbe essere un affare mortale. Vedi questo recente post del nostro visualwebsiteoptimizer.com/split-testing-blog/ma maximum-theoretical-downtime-for-a-website-30-minutes/
Quindi, che tipo di installazione possiamo usare per garantire un failover quasi istantaneo nel caso in cui il data center delle app subisca gravi interruzioni? Ho letto qui www.tenereillo.com/GSLBPageOfShame.htm che avere più record A è una soluzione ma non possiamo permetterci la sincronizzazione della sessione (ancora). Un'altra strategia che stiamo esplorando è avere due record A, uno che punta al server delle app e il secondo a un proxy inverso (situato in un centro dati diverso) che risolve il server delle app principale se è attivo e il server di backup se è attivo. Pensi che questa strategia sia ragionevole?
Solo per essere sicuri delle nostre priorità, possiamo permetterci di mantenere il nostro sito Web o app inattivo, ma non possiamo rallentare il sito Web dei clienti a causa dei nostri tempi di inattività. Quindi, nel caso in cui i nostri server di app siano inattivi, non intendiamo rispondere con la risposta predefinita dell'applicazione. Anche una risposta vuota sarà sufficiente, abbiamo solo bisogno che il browser completi quella connessione HTTP (e nient'altro).
Riferimento: ho letto questo thread che è stato utile serverfault.com/questions/69870/multiple-data-centers-and-http-traffic-dns-round-robin-is-the-only-way-to-assure