Como você atualiza a configuração do resolvedor de DNS sem causar tempo de inatividade?

4

Uma nota

Nova pergunta, já que tudo o mais sobre esse assunto parece estar desatualizado e / ou conflitante. Segure seus votos próximos, por favor:)

O problema

Em instalações de estoque do Ubuntu 12 e 14 Server, parece que a maneira como você faz alterações no DNS é editar o arquivo de interfaces e adicionar as opções de DNS nele. O único problema é que, nos servidores, onde o tempo de atividade é uma preocupação, parece que a única maneira de forçar essas mudanças a serem aplicadas é devolver a interface de rede afetada com ifdown/ifup .

Tenho um grande número de servidores para ativar um conjunto de alterações de DNS e preciso atualizar suas configurações de resolvedor em massa, sem alternar as interfaces de rede dessa maneira. Eu também preciso ter certeza de que as alterações ficarão após a reinicialização.

O problema é que todos esses servidores foram criados com as opções dns no arquivo interfaces , o que significa que, se eu alterar os arquivos resolvconf head ou tail , terminarei com um monte de linhas duplicadas na reinicialização.

O processo precisa ser algo como:

  1. Elimine completamente a configuração do resolvedor (está em todo o lugar agora)
  2. Defina as opções para novos valores válidos
  3. Salve essas opções para que elas sejam usadas pelos aplicativos imediatamente e, assim, elas entrarão em vigor após a reinicialização.

Então, uma recapitulação:

O que não funciona

  • Editando as linhas em interfaces (requer uma interrupção para reciclar a interface)
  • Editando o resolv.conf diretamente (não terá efeito, não será salvo)
  • Editar os arquivos resolvconf head ou tail (não terá efeito, terá linhas duplicadas na reinicialização)

A pergunta atual

Existe uma maneira de efetuar uma mudança como essa, sem interromper o serviço? Idealmente, eu poderia forçar o resolvconf a passar pelo processo de atualização sem alternar a interface.

    
por Mikey T.K. 04.03.2015 / 19:52

1 resposta

2

Se você absolutamente não pode ter resolv.conf em um estado inconsistente, aqui está o que eu fiz:

  1. O "estado" do resolvedor gerado a partir das linhas dns- no seu /etc/network/interfaces é armazenado em /var/run/resolvconf/interface/(interfacename).inet - este arquivo foi truncado.

  2. Os mesmos dados ( search , nameserver , etc, o mesmo material que está em resolv.conf concluído) foram copiados em /etc/resolvconf/resolv.conf.d/tail (o arquivo tail precisou ser criado), com um comentário apropriado adicionado para que qualquer pessoa que venha mais tarde possa ver o que aconteceu.

  3. As linhas dns em /etc/network/interfaces foram comentadas

  4. E, finalmente, execute resolvconf -u para gerar novamente o /etc/resolv.conf do arquivo final

Isso tem o efeito de:

  • Desacoplar as configurações do resolvedor da interface de rede (o que, se você estiver em uma única caixa de interface, é desnecessariamente irritante)

  • Colocando as configurações do resolvedor em um único arquivo de texto (o arquivo tail )

  • Fazendo as alterações entrarem em vigor imediatamente

  • .. e tê-los persistir após uma reinicialização

  • E gerar novamente o mecanismo de notificação /etc/resolv.conf com resolvconf no sistema intacto.

  • ... sem tempo de inatividade: D

por Mikey T.K. 05.03.2015 / 17:32