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.