Como eu posso automaticamente alterar o registro A do DNS para apontar meu site para um servidor secundário em caso de falha?

6

Minha hospedagem está me cobrando uma taxa de US $ 50 / mês para colocar meus servidores na mesma VLAN para que eu crie um cluster usando o recurso de balanceamento de carga de rede.

Eu realmente não estou precisando dividir a carga entre os servidores, eu estava procurando uma maneira fácil de criar um cenário de failover para proteger contra falhas de servidores. No entanto, considero que esta taxa é pouco dispendiosa.

Existe alguma maneira de criar um cluster sem usar o NLB? Talvez algo que monitore meu servidor primário e mude o DNS do domínio quando ele cair?

    
por holiveira 09.05.2009 / 23:30

5 respostas

9

O DNS é uma má escolha para simular failover. As razões são

  • Registros DNS válidos por um período de tempo, para atingir o failover em tempo real, você precisaria diminuir o TTL em uma entrada de DNS para ser tão baixo que todas as solicitações para o seu site resultariam em uma pesquisa de DNS. O que prejudicará seriamente a experiência dos seus visitantes
  • Há algumas suspeitas de que, mesmo hoje em dia, o DNS que entra com valores muito baixos de TTL não é respeitado pelos servidores de nome quebrados do ISP e mais antigos.
  • O uso do Round Robin DNS não fornecerá failover porque, em média, 50% das solicitações serão enviadas para cada IP listado. Isso realmente funcionaria se os protocolos de nível mais alto do HTTP tivessem tentado novamente.

Minhas sugestões seriam

  • Se o seu segundo servidor estiver na mesma empresa de hospedagem, procure alugar um balanceador de carga real, seja para uso próprio ou a maioria das empresas de hospedagem possa alugá-lo em parte da infraestrutura de balanceamento de carga compartilhada
  • Use algo como servidores HA de propagação ou de linux para atribuir o serviço a um IP virtual flutuante que é transmitido entre seus servidores físicos. Os servidores no cluster monitoram uns aos outros e decidem quem é o proprietário atual do IP virtual.

Recomendo vivamente a leitura de Scalable Internet Architectures de Theo Schlossnagle em grande detalhe

    
por 10.05.2009 / 05:47
2

Você pode configurar uma caixa de balanceamento de carga separada com ldirectord , que monitora seus servidores da Web e balancear a carga entre os que estão atualmente ativos (e por extensão mantém o site quando um servidor vai para baixo). Usamos essa solução para permitir a reinicialização de um dos nossos dois servidores da web sem afetar o tempo de atividade do site.

Na verdade, se seus servidores da Web forem caixas linux, você poderá executar o ldirectord no próprio servidor da Web e usar pulsação para manter o ldirectord em execução na caixa viva.

Esta solução permite que você compartilhe um endereço IP comum (ou mais de um) entre duas ou mais caixas e evite o problema do DNS.

    
por 10.05.2009 / 02:13
1

Uma maneira seria ter seu site em dois servidores diferentes e, em seguida, ter um monitor de site em um terceiro local que monitore a conexão com o servidor principal (onde seu DNS geralmente aponta). Se detectar que o site está inativo, faça com que o monitor execute um script ou acesse o URL de atualização de um provedor de DNS dinâmico (como DtDNS [que eu opero], ou DynDNS.com ) com o endereço IP do seu servidor de backup especificado para o seu domínio / hostname. Isso atualizará o registro DNS e direcionará o tráfego para o servidor da Web de backup. Quando o site principal estiver on-line novamente, o monitoramento poderá executar outro script ou URL que colocará o IP "real" de volta.

Uma chave aqui é ter o DNS hospedado em um provedor que tenha uma API em seu sistema para que seu domínio possa ser atualizado rapidamente e mantenha o TTL baixo o suficiente para que os visitantes sejam redirecionados com relativa rapidez.

Outra é que o site deve ser monitorado a partir de um local externo e objetivo. Você não pode executar o monitoramento no mesmo servidor da Web em que o site está. Se todo o servidor ficar inativo, o método de monitoramento / atualização irá para baixo.

    
por 10.05.2009 / 00:03
1

SimpleFailover faz mais ou menos o que você quer. Lembre-se de DNS fica em cache, por isso não é uma solução perfeita.

Com relação a vários registros A, eu vi uma discussão recente sobre o Vista e o Win Server 2008 implementando RFC3484 , que significa você não pode confiar no round-robin e provavelmente terá um carregamento de servidor desigual a partir desses clientes.

    
por 10.05.2009 / 00:18
1

DNS Made Easy permite que você configure seu DNS para que, se o servidor estiver inoperante, ele aponte para algum lugar outro. No nosso caso, temos uma página estática que diz que o site está inativo, tente novamente mais tarde.

Se você usar DNS dessa maneira, precisará configurar um TTL relativamente curto para contornar o problema de cache.

    
por 10.05.2009 / 02:09