O DNS round-robin é uma solução possível para alta disponibilidade?

Respostas:

13

O rodízio de DNS não é um bom substituto para um balanceador de carga. O servidor DNS continuará a distribuir o IP do nó que está inoperante, para que alguns de seus usuários acessem seu serviço e outros não.

Quando o cliente faz a consulta DNS, o servidor DNS retorna todos os endereços IP associados a esse nome. A mágica é feita pelo servidor DNS, rotacionando a ordem dessa lista para cada consulta. No entanto, cabe ao aplicativo implementar a capacidade de "caminhar" pela lista até encontrar um IP que funcione. E a maioria dos aplicativos não faz isso.

O Windows Telnet, por incrível que pareça, é um desses aplicativos inteligentes o suficiente para percorrer a lista vinculada de IPs retornados. Você pode ver esse comportamento se tentar telnetar para google.com, por exemplo. Você notará que leva muito tempo para finalmente falhar. Isso ocorre porque o google.com tem muitos endereços IP e o cliente telnet estava tentando todos.

Ryan Ries
fonte
Entendo que os clientes sempre obtêm os dois IPs do NS. É que, por padrão, eles escolhem o primeiro da lista. Mas e se o primeiro cair? eles vão tentar com o segundo?
GetFree
9
Depende totalmente da aplicação. Se estamos falando de navegadores da web, por exemplo, a maioria dos navegadores modernos segue a lista até que sejam bem-sucedidos; alguns navegadores (geralmente os mais antigos) simplesmente falham após a tentativa do primeiro IP malsucedido. Mais informações: nber.org/sys-admin/dns-failover.html e blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns
Ryan Ries
De acordo com os links que você deu, parece que funciona. Pelo menos para clientes HTTP (que é com o que me preocupo agora). Todos os navegadores modernos e até mesmo clientes HTTP de nível inferior fazem failover para outro IP na lista.
GetFree
Sim. Só queria dar a ressalva de que depende da aplicação. YMMV, etc.
Ryan Ries
@RyanRies, o RFC faz alguma recomendação com relação ao comportamento do cliente? O Telnet é compatível quando tenta todos os IPs em vez de apenas usar o primeiro?
Pacerier 14/05
14

O uso de um balanceador de carga ainda deixará um único ponto de falha. Se o seu balanceador de carga ficar offline, seu site será desativado.

Conterary para a resposta acima, a maioria HTTP clientes já FAZER suporte tentando cada endereço IP de voltar de uma consulta DNS até que um retorna com uma resposta válida. Por favor, veja aqui:

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

Parece que o autor testou os seguintes navegadores e os encontrou funcionando corretamente.

Chrome 11 no Windows 7
Firefox 4.0 no Windows 7
Internet Explorer 8 no Windows 7
Opera 11 no Windows 7
Safari 5 no Windows 7
Internet Explorer 7 no Windows XP (após um atraso perceptível)
Firefox 4.0 no Windows XP (após um atraso perceptível)
Navegador nativo do Android no
navegador nativo do iPhone Android 2.3.3 no iOS 4.3.3

O uso do round robin não fará todos os recursos de um servidor de balanceamento de carga, como monitorar os tempos de resposta dos dois servidores e direcionar mais tráfego para um, se o outro não estiver respondendo o mais rápido que deveria. Para resiliência, eu diria que o Round Robin DNS é provavelmente uma solução melhor, pois não há mais um único ponto de falha.

Tony Weston
fonte
Veja o segundo comentário na resposta aceita
GetFree
2

Embora o DNS round robin normalmente não tenha feedback sobre o status dos servidores para os quais está fornecendo endereços, pode ser útil se você tiver algum tipo de balanceador de carga (incluindo truques baseados em roteador) para cada um desses endereços.

Existem truques para atualizar o DNS quando as coisas falham; se isso acontecer, o DNS round-robin com TTLs adequadamente curtos pode ser um pseudo-load balancer.

Michael Graff
fonte