DOCKER - 3 14 Exercice DNS Round Robin

Le DNS round-robin Docker permet à plusieurs conteneurs de partager le même alias DNS. Quand vous résolvez ce nom plusieurs fois, Docker retourne alternativement les adresses IP de chaque conteneur. C'est fondamental pour équilibrer la charge et assurer la disponibilité sans outils externes.

Exercice : Créez un réseau Docker personnalisé, lancez plusieurs conteneurs Elasticsearch (ou tout service) avec le même alias DNS, puis testez la résolution depuis un conteneur client (Alpine ou CentOS). À chaque appel de nslookup ou curl, observez comment la réponse alterne entre les conteneurs. Cela montre que Docker distribue les requêtes sans équilibrage intelligent (juste du round-robin basique).

Prérequis : maîtriser docker network create, --network-alias, et les commandes nslookup ou curl. Comprendre qu'Elasticsearch retourne un JSON sur le port 9200 facilite les tests. Notez que chaque conteneur reçoit un identifiant aléatoire au démarrage, visible dans les réponses JSON.

Limitation importante : le round-robin n'est pas équilibré. Si vous exécutez la commande de requête plusieurs fois, la distribution des réponses entre les conteneurs sera aléatoire, pas strictement alternée. Cela illustre les limites du DNS simple et montre pourquoi des orchestrateurs comme Docker Swarm ou Kubernetes offrent des équilibreurs de charge plus sophistiqués.

En résumé

Cet exercice Docker enseigne le concept du DNS Round Robin, une technique de disponibilité utilisée par les grandes entreprises. En créant un réseau personnalisé et en configurant plusieurs conteneurs Elasticsearch avec le même alias DNS (via `--network-alias`), vous observerez comment les requêtes basculent entre les conteneurs, offrant ainsi une résilience et une répartition de charge simples à mettre en œuvre dans Docker. Les tests se font via nslookup (résolution DNS) et curl (vérification des réponses serveur).

Points clés

  • Créer un réseau virtuel personnalisé pour isoler et gérer les conteneurs
  • Utiliser le flag `--network-alias` lors du lancement des conteneurs pour assigner un alias DNS commun
  • Appliquer Elasticsearch 2.2 (ou une image compatible) sur le même réseau pour les tests
  • Vérifier la résolution DNS via nslookup depuis une image alpine légère
  • Observer le basculement round-robin entre les conteneurs avec curl (chaque requête oscille entre différents conteneurs)
  • Contourner la limitation d'un seul conteneur par nom en utilisant les alias DNS du réseau Docker

Questions fréquentes

Qu'est-ce que le DNS Round Robin et pourquoi les grandes entreprises l'utilisent-elles ?

Le DNS Round Robin est une technique où plusieurs serveurs répondent au même nom DNS. Les grandes entreprises l'utilisent pour assurer une disponibilité 24/7 et répartir la charge entre plusieurs serveurs, ce qui augmente la résilience et les performances.

Comment configurer un alias DNS pour plusieurs conteneurs Docker sur le même réseau ?

Lors du lancement des conteneurs, utiliser le flag `--network-alias <nom_alias>` en s'assurant que tous les conteneurs sont connectés au même réseau personnalisé (créé avec `docker network create`).

Comment tester que le round-robin fonctionne correctement ?

Lancer un conteneur de test sur le même réseau, utiliser `nslookup <alias>` pour voir les adresses IP retournées, puis exécuter plusieurs requêtes curl pour observer le basculement entre les différents conteneurs Elasticsearch.