Executei o failover de DNS RR em um site com tráfego moderado, mas crítico para a produção (em duas regiões) por muitos anos.
Funciona bem, mas há pelo menos três sutilezas que aprendi da maneira mais difícil.
1) Os navegadores realizarão failover de um IP não ativo para um IP ativo após 30 segundos (última vez que verifiquei) se ambos forem considerados ativos em qualquer DNS em cache disponível para seus clientes. Isso é basicamente uma coisa boa.
Mas ter metade dos seus usuários aguardando 30 segundos é inaceitável; portanto, você provavelmente desejará atualizar seus registros TTL para alguns minutos, não alguns dias ou semanas, para que, em caso de falha, você possa remover rapidamente o servidor inativo do seu DNS. Outros aludiram a isso em suas respostas.
2) Se um de seus servidores de nomes (ou uma de suas duas regiões geográficas) ficar inoperante, servindo seu domínio round-robin, e se o principal deles cair, lembro-me vagamente de que você pode encontrar outros problemas tentando remover esse servidor de nomes inativo do DNS se você não tiver definido seu TTA / expiração de SOA para o servidor de nomes com um valor suficientemente baixo também. Eu poderia estar errado com os detalhes técnicos aqui, mas há mais do que apenas uma configuração TTL que você precisa acertar para realmente se defender contra pontos únicos de falha.
3) Se você publica APIs da web, serviços REST, etc., normalmente não são chamados por navegadores e, portanto, na minha opinião, o failover de DNS começa a mostrar falhas reais. Pode ser por isso que alguns dizem, como você diz "não é recomendado". Aqui está o porquê de eu dizer isso. Primeiro, os aplicativos que consomem esses URLs normalmente não são navegadores; portanto, eles não possuem as propriedades / lógica de failover de 30 segundos dos navegadores comuns. Segundo, se a segunda entrada DNS é chamada ou mesmo se o DNS é pesquisado novamente depende muito dos detalhes de programação de baixo nível das bibliotecas de rede nas linguagens de programação usadas por esses clientes API / REST, além de exatamente como elas são chamadas por o aplicativo cliente API / REST. (Sob as capas, a biblioteca chama get_addr e quando? Se os soquetes travam ou fecham, o aplicativo reabre novos soquetes? Existe algum tipo de lógica de tempo limite? Etc etc)
É barato, bem testado e "funciona principalmente". Assim como na maioria das coisas, sua milhagem pode variar.