Qual método posso usar para automatizar o failover de DNS com monitoramento?

1

Estamos operando vários servidores redundantes em todo o mundo por motivos de latência. Atualmente, se um site cair, nossa única maneira de permitir que outro site assuma essa região é através do DNS.

Gostaríamos de automatizar esse processo, por exemplo, substituindo / modificando os arquivos de zona se um site for detectado como tendo falhado por meio de uma ferramenta de monitoramento.

Minhas habilidades com o Google só revelaram empresas oferecendo isso como um serviço, mas preferimos nossa própria solução. Para monitoramento, atualmente usamos o Nagios, nosso servidor de nomes é Bind.

Existe alguma ferramenta / método lá fora para conseguir isso?

    
por Someone 15.02.2015 / 16:25

2 respostas

5

Da causa que existe, é o que esses serviços estão fazendo também. :-)

Depende um pouco como você está atualmente redirecionando / distribuindo seus usuários globalmente. Supondo que os resultados sejam efetivamente que alguns usuários são redirecionados de www.example.com para www.eu.example.com e outros para www.oc.example.com, respectivamente www.am.example.com.

Você pode usar sua solução de monitoramento para que quando www.am.example.com não responder, não apenas um alerta normal seja acionado, mas uma atualização como www.am.example.com aponte para www.eu.example.com em vez de.

Uma maneira limpa é com atualização dinâmica , que é um método para adicionar, substituir ou excluir registros em um servidor mestre, enviando-lhe uma forma especial de mensagens DNS. O formato e o significado dessas mensagens são especificados em RFC 2136 .

A atualização dinâmica é ativada incluindo uma cláusula allow-update ou update-policy na declaração da zona. Para obter mais informações, consulte o Manual de referência do administrador de vinculações .

O mais limpo é provavelmente usar controles de acesso baseados em IP e chaves públicas de DNS.

Crie o par de chaves:

dnssec-keygen -a HMAC-MD5 -b 512 -n USER nagios.example.com.

O que deve resultar em dois arquivos, um para a chave privada Knagios.exmaple.com.NNNN.private e um segundo com a chave pública Knagios.exmaple.com.NNNN.key .

Atualize sua configuração do Bind:

key nagios.example.com. {
    algorithm HMAC-MD5;
    secret "<string with contents from Knagios.exmaple.com.NNNN.key>"; };

zone "am.example.com"
{
    type master;
    file "/etc/bind/zone/am.example.com";
    allow-update { key nagios.example.com.; };
    ...
};

Em seguida, um script que faz o seguinte quando um alerta é gerado usando o utilitário Bind nsupdate :

cat<<EOF | /usr/bin/nsupdate -k Knagios.exmaple.com.NNNN.private -v
server ns1.example.com
zone am.example.com
update delete www.am.example.com. A
update add www.am.example.com. 60 A <ip-address-of-www.eu.example.com>
send
EOF

Não tenho certeza se você pode usar a atualização dinâmica para algo além de A records.

    
por 15.02.2015 / 17:43
1

Nenhum. Sua abordagem está quebrada.

Você parece estar sob a ilusão de poder alterar o DNS dessa maneira. Não funciona assim. Mesmo se você definir o TTL baixo, alguns provedores irão ignorá-lo - e seu valor antigo ainda será usado. Você efetivamente não tem controle sobre a expiração do DNS fora de "dentro de um dia ou dois".

Qualquer alta disponibilidade baseada em alterações de DNS é fundamentalmente falha.

    
por 15.02.2015 / 17:43