DNS Round Robin: Múltiplos Nameservers VS vários registros A?

4

Observação: esta é uma continuação de minha pergunta anterior sobre o DNS Failover .

O objetivo: fazer com que o navegador da web do cliente selecione o próximo servidor disponível se um estiver inativo instantaneamente.

Li em algum lugar que vários registros A (embora não a melhor solução) são a única solução de "failover instantâneo" possível para aplicativos baseados em HTTP / navegador.

Veja o cenário / exemplo:

Eu tenho dois servidores A e B que contém exatamente o mesmo conteúdo. O endereço IP do servidor A é 1.1.1.1 e 1.1.1.2 O endereço IP do servidor B é 2.2.2.1 e 2.2.2.2 Eu tenho um domínio registrado no Godaddy. Se eu quiser usar o round robin do DNS, qual método é o melhor?

Método 1: Eu defino minhas entradas de servidor de nomes no Godaddy assim?

  1. ns1.serverA.com
  2. ns2.serverA.com
  3. ns1.serverB.com
  4. ns2.serverB.com

Método 2: Ou faço Godaddy como meu servidor de nomes e adiciono registros como este:

  1. A @ 1.1.1.1
  2. A @ 1.1.1.2
  3. A @ 2.2.2.1
  4. A @ 2.2.2.2

A minha pergunta é, o DNS round robin funciona com um dos dois métodos? Se não, qual é o melhor método para atingir o objetivo?

    
por IMB 28.03.2011 / 10:37

4 respostas

8

The Goal: to make the client's web browser select the next available server if one is down instantly.

Isso geralmente é feito com a introdução de um terceiro servidor, chamado de balanceador de carga. O balanceador de carga:

  1. Direciona tráfego para os dois servidores da web.
  2. Monitora a integridade dos dois servidores da web.
  3. Comuta o tráfego para o servidor da Web restante, se houver algum deles.

O balanceador de carga pode ser altamente disponibilizado usando 2 balanceadores de carga (LB), ou seja, pelo menos 4 servidores (2 LB's, 2 servidores webapp) no total. No entanto, muitas lojas menores são executadas com apenas um balanceador de carga, porque são sistemas relativamente mais simples e geralmente são muito confiáveis.

Method 1: Do I set my nameserver entries at Godaddy like this? 1. ns1.serverA.com 2. ns2.serverA.com 3. ns1.serverB.com 4. ns2.serverB.com

Absolutamente não. Os servidores de nomes são usados apenas para resolver os endereços IP dos servidores da web. Mantenha os servidores de nomes do domínio de acordo com os padrões do seu registrador / host DNS (GoDaddy).

Method 2: Or do I make Godaddy as my nameserver and add A Records like this: 1. A @ 1.1.1.1 2. A @ 1.1.1.2 3. A @ 2.2.2.1 4. A @ 2.2.2.2

Quando o DNS Round Robin (DNS RR) é usado como parte de uma configuração high-end de failover / alta disponibilidade, os endereços IP do DNS RR pontos para são altamente disponíveis. Em outras palavras, cada endereço IP é um IP virtual manipulado por dois dispositivos. Como uma solução pura de alta disponibilidade, sem IPs de servidor altamente disponíveis, o DNS RR não funciona muito bem . O problema básico é que alguns clientes podem continuar a usar o endereço IP "morto" , você está confiando no cliente fazendo 'a coisa certa', e nem todos os clientes fazem. Usar um balanceador de carga HTTP real é melhor.

Dito isto, muitos sites pequenos usam o DNS RR para distribuição de carga apenas com bons resultados. É tudo sobre suas expectativas, eu acho.

No caso do DNS RR, ter 2 endereços IP por servidor físico não oferece nada, apenas complexidade extra. Então, basta usar um IP para cada servidor, na sua notação:

A @ 1.1.1.1
A @ 2.2.2.1
    
por 29.05.2011 / 14:52
2

Você normalmente optaria pela abordagem "Um registro". Você também pode controlar os TTLs nos registros A que alguns registradores da ICANN podem ignorar nos registros NS.

Round Robin DNS é ótimo, mas cuidado com alguns navegadores (IEs antigos, por exemplo) podem armazenar registros em cache por muito tempo, então se um de seus servidores falhar e você remover seu IP do DNS publicado, talvez ainda consiga alguns visitantes para aquele IP (uma porcentagem bem pequena todo o mesmo mas bastante para adquirir uma reclamação ou dois). É muito bom para o balanceamento de carga.

    
por 28.03.2011 / 10:44
2

O que você descreve como método1 quebra o DNS e não fornece failover. Os registros DNS também devem ter uma fonte de autorização - não pode haver duas fontes autoritativas conflitantes (mas pode haver várias cópias do mesmo conf).

    
por 28.03.2011 / 17:09
2

Eu não acho que suas sugestões implementarão totalmente o que você espera fazer.

A abordagem A-record que você documentou fornecerá todos esses endereços IP como adequado para buscar seu conteúdo, assim o navegador da Web de um usuário está livre para usar qualquer deles. Se, de fato, o servidor específico escolhido for desativado, o navegador do usuário poderá optar por tentar um endereço IP diferente, mas não ficará nem perto de instant .

Eu também tenho dúvidas sobre a listagem de vários IPs para um único servidor. Suponha que o servidor A esteja inativo; se meu navegador tentar se conectar a 1.1.1.1 , (depois de um tempo limite) tentar se conectar a 1.1.1.2 , aguardarei ainda mais que o conteúdo chegue.

Se você realmente quer um failover rápido confiável entre servidores web, provavelmente vai querer olhar para algo como HAProxy .

EDITAR: Especificamente, você desejará um par de caixas executando o HAProxy com um endereço IP "flutuante" compartilhado entre elas. Você então executa algo como Heartbeat nessas caixas para que, se um deles falhar, o outro detecte e automaticamente assumir o endereço IP "flutuante". Finalmente, você aponta seu um registro A para o IP flutuante (que sempre aponta para uma ou outra instância do HAProxy).

Você provavelmente encontrará a Configuração de rede de estouro de pilha interessante / informativa.

    
por 28.03.2011 / 18:55