Il DNS round robin è una possibile soluzione per l'alta disponibilità?


Risposte:


13

Il round robin DNS non è un buon sostituto per un bilanciamento del carico. Il server DNS continuerà a distribuire l'IP del nodo inattivo, quindi alcuni dei tuoi utenti accederanno al tuo servizio e altri no.

Quando il client esegue la query DNS, il server DNS restituisce tutti gli indirizzi IP associati a quel nome. La magia viene eseguita dal server DNS ruotando l'ordine di tale elenco per ogni query. Tuttavia, spetta all'applicazione implementare la capacità di "scorrere" l'elenco finché non trova un IP che funzioni. E la maggior parte delle applicazioni non lo fa.

Windows Telnet, stranamente, è un'applicazione che è abbastanza intelligente da percorrere l'elenco collegato degli IP restituiti. Puoi vedere questo comportamento da solo se provi a telnet a google.com, ad esempio. Noterai che alla fine fallirà molto tempo. Questo perché google.com ha molti indirizzi IP e il client Telnet stava provando tutti.


Comprendo che i client ottengono sempre entrambi gli IP dal NS. È solo che per impostazione predefinita scelgono il primo nell'elenco. Ma cosa succede se il primo è inattivo? proveranno con il secondo?
GetFree il

9
Dipende totalmente dall'applicazione. Se stiamo parlando di browser Web, ad esempio, la maggior parte dei browser Web moderni seguirà l'elenco fino a quando non avranno successo, alcuni browser (di solito quelli più vecchi) falliranno solo dopo aver provato il primo IP non riuscito. Maggiori informazioni: nber.org/sys-admin/dns-failover.html e blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns
Ryan Ries,

Secondo i link che hai dato, sembra che funzioni. Almeno per i client HTTP (che è quello che mi interessa in questo momento). Tutti i browser moderni e anche i client HTTP di livello inferiore eseguono il failover su un altro IP nell'elenco.
GetFree il

Sì. Volevo solo darti l'avvertenza che dipende dall'applicazione. YMMV, ecc.
Ryan Ries il

@RyanRies, RFC fornisce qualche consiglio in merito al comportamento del cliente? Telnet è conforme quando prova tutti gli IP invece di utilizzare semplicemente il primo?
Pacerier,

14

L'uso di un bilanciamento del carico lascerà comunque un singolo punto di errore. Se il bilanciamento del carico non è in linea, il sito Web non funziona.

Conterary alla risposta di cui sopra, La maggior parte dei clienti HTTP già DO supporto cercando ogni indirizzo IP restituito da una query DNS fino a quando uno ritorna con una risposta valida. Vedi qui:

http://blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns/

Sembra che l'autore abbia testato i seguenti browser e li abbia trovati funzionanti.

Chrome 11 su Windows 7
Firefox 4.0 su Windows 7
Internet Explorer 8 su Windows 7
Opera 11 su Windows 7
Safari 5 su Windows 7
Internet Explorer 7 su Windows XP (dopo un notevole ritardo)
Firefox 4.0 su Windows XP (dopo un notevole ritardo)
Browser nativo Android su Android 2.3.3
Browser nativo iPhone su iOS 4.3.3

L'uso del round robin non farà tutte le funzionalità di un server di bilanciamento del carico, cose come la possibilità di monitorare i tempi di risposta da entrambi i server e instradare più traffico verso uno, se l'altro non risponde così velocemente come dovrebbe). Per resilienza, direi che Round Robin DNS è probabilmente una soluzione migliore in quanto non esiste più un singolo punto di errore.


Vedi il secondo commento nella risposta accettata
GetFree,

2

Sebbene il DNS round robin in genere non abbia feedback sullo stato dei server per cui fornisce gli indirizzi, può essere utile se si dispone di una sorta di bilanciamento del carico (inclusi i trucchi basati sul router) per ciascuno di quegli indirizzi.

Ci sono trucchi per aggiornare il DNS quando le cose falliscono; in tal caso, il DNS round robin con TTL opportunamente brevi può essere un pseudo-bilanciamento del carico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.