Vários registros A apontando para o mesmo domínio parecem ser usados quase exclusivamente para implementar o DNS Round Robin como uma técnica barata de balanceamento de carga.
O aviso usual contra o DNS RR é que não é bom para alta disponibilidade. Quando um IP cair, os clientes continuarão a usá-lo por minutos.
Um balanceador de carga é frequentemente sugerido como uma melhor escolha.
Ambas as afirmações não são completamente verdadeiras:
Quando o tráfego é HTTP, a maioria dos navegadores HTML pode tentar automaticamente o próximo registro A, se o anterior estiver inativo, sem uma nova pesquisa de DNS. Leia aqui o capítulo 3.1 e aqui .
Quando vários centros de dados estão envolvidos, o DNS RR é a única opção para distribuir o tráfego entre eles.
Portanto, é verdade que, com vários data centers e tráfego HTTP, o uso do DNS RR é a ÚNICA maneira de garantir failover instantâneo quando um data center fica inoperante?
Obrigado,
Valentino
Editar:
- Obviamente, cada data center possui um balanceador de carga local com hot spare.
- Não há problema em sacrificar a afinidade da sessão por um failover instantâneo.
- No AFAIK, a única maneira de um DNS sugerir um data center em vez de outro é responder apenas com o IP (ou IPs) associado a esse data center. Se o datacenter se tornar inacessível, todos esses IPs também estarão inacessíveis. Isso significa que, mesmo que os navegadores HTML inteligentes consigam tentar instantaneamente outro registro A, todas as tentativas falharão até que a entrada do cache local expire e uma nova pesquisa de DNS seja feita, buscando os novos IPs em funcionamento (presumo que o DNS sugira automaticamente a um novo data center quando um falha). Portanto, o "DNS inteligente" não pode garantir failover instantâneo.
- Por outro lado, um round-robin do DNS permite isso. Quando um data center falha, os navegadores HTML inteligentes (a maioria deles) tentam instantaneamente os outros registros A armazenados em cache, pulando para outro data center (em funcionamento). Portanto, o round-robin do DNS não garante a afinidade da sessão ou o RTT mais baixo, mas parece ser a única maneira de garantir o failover instantâneo quando os clientes são navegadores HTML "inteligentes".
Edição 2:
- Algumas pessoas sugerem o TCP Anycast como uma solução definitiva. Em este papel (capítulo 6) é explicado que Anycast fail-over está relacionada com a convergência BGP. Por esse motivo, o Anycast pode empregar de 15 minutos a 20 segundos para concluir. São possíveis 20 segundos em redes nas quais a topologia foi otimizada para isso. Provavelmente, apenas os operadores de CDN podem conceder failover tão rápido.
Edição 3: *
- Fiz algumas pesquisas e rastreamentos de DNS (talvez algum especialista possa verificar novamente) e:
- O único CDN que usa o TCP Anycast parece ser o CacheFly, outros operadores como redes CDN e BitGravity usam o CacheFly. Parece que suas bordas não podem ser usadas como proxies reversos. Portanto, eles não podem ser usados para conceder failover instantâneo.
- Akamai e LimeLight parecem usar DNS com reconhecimento geográfico. Mas! Eles retornam vários registros A. De rastreadores parece que os IPs retornados estão no mesmo data center. Então, estou intrigado com a forma como eles podem oferecer um SLA 100% quando um data center fica inoperante.