web-dev-qa-db-fra.com

Comment mettre à jour la configuration du résolveur DNS sans provoquer de temps d'arrêt?

Une note

Nouvelle question, puisque tout le reste sur cette question semble être dépassé et/ou en conflit. Tenez vos votes serrés, s'il vous plaît :)

Le problème

Sur les installations en stock d'Ubuntu 12 et 14 Server, il semble que le moyen le plus approprié consiste à modifier le DNS pour modifier le fichier d'interface et y ajouter les options dns. Le seul problème est que, sur les serveurs, où la disponibilité est un problème, il apparaît que le seul moyen de forcer l'application de ces modifications est de faire rebondir l'interface réseau affectée avec ifdown/ifup.

J'ai un grand nombre de serveurs sur lequel effectuer un ensemble de modifications DNS et je dois mettre à jour leurs configurations de résolveur en masse, sans basculer les interfaces réseau de cette manière. Je dois également veiller à ce que les modifications restent après un redémarrage.

Le problème est que tous ces serveurs ont été construits avec les options dns du fichier interfaces, ce qui signifie que si je change de fichier resolvconf, head ou tail, je se retrouver avec un tas de lignes en double au redémarrage.

Le processus doit être quelque chose comme:

  1. Élimine complètement la configuration du résolveur (c'est partout maintenant)
  2. Définir les options sur de nouvelles valeurs connues
  3. Sauvegardez ces options afin qu'elles soient utilisées par les applications immédiatement et qu'elles soient en place après un redémarrage.

Donc, un récapitulatif:

Qu'est-ce qui ne fonctionnera pas

  • Modification des lignes dans interfaces (nécessite une panne pour recycler l'interface)
  • Modification de resolv.conf directement (ne prendra pas effet, ne sera pas enregistré)
  • Modification des fichiers resolvconf head ou tail (ne prendra pas effet, des lignes dupliquées apparaîtront au redémarrage)

La vraie question

Existe-t-il un moyen d'effectuer un changement comme celui-ci, sans interrompre le service? Idéalement, je pourrais forcer resolvconf à suivre son processus de mise à jour sans basculer l'interface.

4
Mikey T.K.

Si vous ne pouvez absolument pas avoir resolv.conf dans un état incohérent, voici ce que j'ai fait:

  1. L '"état" du résolveur généré à partir des lignes dns- de votre /etc/network/interfaces est stocké dans /var/run/resolvconf/interface/(interfacename).inet - ce fichier a été tronqué.

  2. Les mêmes données (search, nameserver, etc., les mêmes éléments que dans un resolv.conf complété) ont été copiées dans /etc/resolvconf/resolv.conf.d/tail (le fichier tail a dû être créé). ), avec un commentaire approprié ajouté pour que quiconque se présente plus tard puisse voir ce qui s'est passé.

  3. Les lignes dns dans /etc/network/interfaces ont été commentées

  4. Et enfin, exécutez resolvconf -u pour régénérer le /etc/resolv.conf à partir du fichier tail.

Cela a pour effet de:

  • Découpler les paramètres du résolveur de l'interface réseau (ce qui est gênant si vous êtes sur une seule interface)

  • Placement des paramètres du résolveur dans un fichier texte unique (le fichier tail)

  • Faire les changements prendre effet immédiatement

  • ..et les persister après un redémarrage

  • Et recréer l’ensemble du système /etc/resolv.conf avec le mécanisme de notification de resolvconf intact.

  • ... sans temps d'arrêt: D

2
Mikey T.K.