Ho eseguito il failover RR DNS su un sito Web di produzione a traffico moderato ma critico per l'azienda (in due aree geografiche) per molti anni.
Funziona bene, ma ci sono almeno tre sottigliezze che ho imparato a mie spese.
1) I browser eseguiranno il failover da un IP non funzionante a un IP funzionante dopo 30 secondi (l'ultima volta che ho verificato) se entrambi sono considerati attivi in qualunque DNS memorizzato nella cache sia disponibile per i tuoi clienti. Questa è sostanzialmente una buona cosa.
Ma avere "metà" dei tuoi utenti in attesa di 30 secondi è inaccettabile, quindi probabilmente vorrai aggiornare i tuoi record TTL in modo che siano pochi minuti, non pochi giorni o settimane in modo che in caso di interruzione, puoi rimuovere rapidamente il down server dal tuo DNS. Altri hanno accennato a questo nelle loro risposte.
2) Se uno dei tuoi nameserver (o una delle tue due aree geografiche completamente) cade, il che serve il tuo dominio round-robin, e se quello principale si abbassa, ricordo vagamente che potresti imbatterti in altri problemi nel tentativo di rimuoverlo server dei nomi abbattuto dal DNS se non hai impostato il SOA TTL / scadenza per il server dei nomi anche su un valore sufficientemente basso. Potrei avere i dettagli tecnici sbagliati qui, ma c'è più di una sola impostazione TTL che devi ottenere per difenderti davvero da singoli punti di errore.
3) Se pubblichi API Web, servizi REST, ecc., Questi in genere non vengono chiamati dai browser, e quindi secondo me il failover DNS inizia a mostrare vere imperfezioni. Questo potrebbe essere il motivo per cui alcuni dicono, come dici "non è raccomandato". Ecco perché lo dico io. Innanzitutto, le app che utilizzano tali URL in genere non sono browser, quindi mancano le proprietà / la logica di failover di 30 secondi dei browser comuni. In secondo luogo, il fatto che venga chiamata o meno la seconda voce DNS o che venga eseguito nuovamente il polling del DNS dipende molto dai dettagli di programmazione di basso livello delle librerie di rete nei linguaggi di programmazione utilizzati da questi client API / REST, oltre a come vengono chiamati da l'app client API / REST. (Sotto le loro copertine, la libreria chiama get_addr e quando? Se i socket si bloccano o si chiudono, l'app riapre i nuovi socket? Esiste una sorta di logica di timeout? Ecc. Ecc.)
È economico, ben collaudato e "funziona principalmente". Come per la maggior parte delle cose, il tuo chilometraggio può variare.