17 Déc 2018

Consul du pauvre via /etc/hosts pour infrastructure multi-machines sous Terraform

Category: Administration de serveur,Tutorielscduv @ 03:43

Si vous montez une infrastructure de plusieurs machines communiquant en réseau (micro-services, cluster de base de données, frontend et backend, etc.) il faut que chacune connaisse l'adresse IP de ses "collègues".

Globalement, dans la vie de tous les jours, l'adresse IP a été "remplacée" par des FQDN (noms de domaine). Et même dans une infrastructure non publique et entièrement sous contrôle, l'adresse IP devient rapidement problématique pour différentes raisons :

  • Elle n'est pas toujours parlante : On peut faire une erreur à la saisie et ne pas le remarquer ("server-sql.myapp.net" est mieux que 10.3.45.9... Oups, c'était 10.3.85.9 en réalité)
  • Elle est relativement figée : Si une nouvelle machine vient à remplacer une précédente (ou si un composant change de machine), généralement la nouvelle ne peut pas récupérer l'adresse IP de l'ancienne et donc les composants de l'infrastructure qui utilisant l'ancienne adresse doivent être modifiés pour leur donner la nouvelle adresse IP.

A mon avis, toute infrastructure de plus de 3 composants devrait dépendre de FQDN.

Une solution simple est le fichier texte /etc/hosts (C:\Windows\System32\drivers\etc\hosts sous Windows) qui permet d'associer une adresse IP à un FQDN.
L'autre solution est d'utiliser un serveur DNS, qu'il soit public (celui de votre registraire/registrar ) ou interne (BIND, Dnsmasq, ...) que les composants requêterons. Il existe des logiciels de Service Discovery tel que Apache ZooKeeper, Consul et etcd qui font exactement ça (mais en plus pratique).

Quand on débute un petit projet, on a pas forcément envie de faire appel à ce genre d'outil aussi pertinents soient-ils (pour des raisons de temps, de coût, de simplicité, etc.).

Si vous utilisez Terraform pour monter cette infrastructure, je vais vous montrer une petite astuce pour remplir le fichier /etc/hosts de tout vos composants de manière automatique. Poursuivre la lecture"Consul du pauvre via /etc/hosts pour infrastructure multi-machines sous Terraform"