Primeiro de tudo, o VRRP não depende de DNS de forma alguma. Para redundância em um único site, você pode executar servidores DNS em um endereço VRRP compartilhado muito bem.
Mas, como outros já mencionaram nos comentários, os serviços também usam roteamento anycast , o que essencialmente significa que o mesmo endereço IP existe em vários lugares ao redor do mundo. Quando um site inteiro fica inativo, as rotas de todo o mundo são recalculadas para que seus pacotes acabem indo para outro site de trabalho.
Um exemplo melhor do que o DNS público do Google seriam os servidores DNS root - aqueles que veiculam a .
zone e mantêm ponteiros para com
, org
, eu
e assim por diante - porque eles têm um mapa de cada instância dos 13 endereços lógicos. O "L" da ICANN é servido por 160 sites diferentes!
Note que anycast não tem nada a ver com round-robins baseados em DNS (onde o mesmo nome tem múltiplos endereços). Anycast é feito essencialmente mentindo para o protocolo de roteamento.
A Internet usa o BGP para trocar informações de roteamento entre organizações.
OBGP inerentemente suporta a seleção do melhor de várias rotas para a mesma rede, com base em vários critérios. Por exemplo, o mesmo cliente pode ter uplinks redundantes para o mesmo ISP (anunciando duas rotas que diferem apenas em peso / preferência). Ou o cliente pode ter uplinks por meio de vários ISPs, e todos selecionarão sua rota preferida (principalmente o caminho AS mais curto) - essa é a essência da "verdadeira" multi-WAN.
Multihoming
┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter--+ │
¦ │ ¦--DNSserver │
client 2 ---ISP---│--BGProuter--+ │
└──────────────────────────┘
No entanto, o BGP só leva o tráfego para as portas de entrada, mas não se importa com o que acontece além disso. Então, se você configurar internamente ambas as rotas para o mesmo servidor, você obterá multihoming. Mas se cada "entrada" leva a um servidor diferente (configurado para o mesmo IP), você recebe anycast.
Anycast... kind of?
┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter-----DNSserver │
¦ │ │
client 2 ---ISP---│--BGProuter-----DNSserver │
└──────────────────────────┘
Importante, isso também significa que o BGP não se importa se o AS não é contíguo a todos. Para obter redundância em todo o mundo, basta anunciar a mesma rede a partir de vários locais físicos - se você conectar esses locais juntos (para que eles rotearem essa rede para um único local), você obterá multihoming; se são ilhas, você recebe anycast.
Anycast
┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter-----DNSserver │
¦ └──────────────────────────┘
¦
¦ ┌────────[AS 65535]────────┐
client 2 ---ISP---│--BGProuter-----DNSserver │
└──────────────────────────┘
(Aliás, nem precisa ser o mesmo AS - por exemplo, os relés 6to4 são executados por várias organizações independentes, cada um deles anunciando sua própria rota em direção a 192.88.99.0/24
.)
Advertências:
-
O Anycast fornece redundância, mas não balanceamento de carga. Depois que o BGP convergir, cada roteador terá escolhido uma única rota preferencial (ou ocasionalmente algumas) e continuará usando-a até que a rede seja alterada.
-
No entanto, você não pode prever quanto tempo as rotas permanecerão estáveis, portanto, serviços com previsão de anycasting podem ser complicados. O DNS leva a cabo devido a ser apátrida e usar principalmente UDP (o EDNS reduz a necessidade de conexões TCP).
-
Deve haver coordenação entre o serviço real e o roteador BGP, para que a rota seja retirada se o serviço falhar.
Veja também "História de 4.2.2.2. Qual é a história?" na lista de discussão do NANOG: postar 1 , postar 2 .