whaleDocker Swarm

🐳 Introduction

Docker Swarm est une fonctionnalité d'orchestration de Docker qui permet de transformer un groupe de machines (ou nœuds) en un cluster Docker Swarm. Ce cluster est utilisé pour déployer, gérer et surveiller des conteneurs Docker de manière centralisée.

🚀 Pourquoi utiliser Docker Swarm ?

Docker Swarm offre plusieurs avantages :

  1. Gestion centralisée :

    • Vous pouvez gérer plusieurs machines Docker (appelées nœuds) comme un seul cluster.

    • Les tâches, comme le déploiement ou la mise à jour des services, se font à partir d'un nœud manager.

  2. Équilibrage de charge intégré :

    • Le trafic est automatiquement réparti entre les réplicas d’un service.

  3. Haute disponibilité (HA) :

    • En cas de panne d'un nœud worker, Docker Swarm redistribue automatiquement les conteneurs vers d'autres nœuds disponibles.

  4. Scalabilité facile :

    • Vous pouvez facilement augmenter ou diminuer le nombre d'instances d’un service (réplicas).

  5. Compatibilité Docker native :

    • Docker Swarm est directement intégré à Docker, sans besoin de logiciels tiers.


🏗️ Mise en place d’un cluster Docker Swarm avec VMware

🌟 Pré-requis

Avant de commencer :

  1. Logiciels nécessaires :

    • VMware Workstation/Fusion : Pour créer des machines virtuelles.

    • Docker : Pour exécuter des conteneurs (à installer dans chaque VM).

    • Docker Machine : Pour automatiser la création et la gestion des machines Docker.

  2. Machines à créer :

    • Nous allons créer 3 machines Docker :

      • node1 : servira de manager.

      • node2 et node3 : serviront de workers.

  3. Réseau :

    • Configurez un réseau NAT ou Bridge dans VMware (voir plus bas).


🔨 Création des machines avec Docker Machine et VMware

🖥️ Création des machines Docker

Nous allons utiliser docker-machine pour créer les machines :

📝 Remarque : Les machines seront créées dans le dossier par défaut de docker-machine, généralement : C:\Users\%USERNAME%\.docker\machine\machines.


🧹 Ajout des machines dans VMware

Après leur création, les machines peuvent ne pas apparaître automatiquement dans VMware. Pour les ajouter manuellement :

1

Cliquez avec le bouton droit dans la barre latérale de VMware.

2

Sélectionnez "Scan for Virtual Machines".

3

Naviguez vers le répertoire des machines :

C:\Users\%USERNAME%\.docker\machine\machines

4

Ajoutez les fichiers .vmx pour chaque machine.


📡 Initialisation du cluster Docker Swarm

🖥️ Connexion au nœud manager

Le cluster Docker Swarm est initialisé depuis le nœud manager. Connectez-vous à node1 :

🚀 Initialisation du Swarm

Sur node1, exécutez la commande suivante pour initialiser le Swarm. L’adresse utilisée doit être celle de node1 sur le réseau (vous pouvez la vérifier avec docker-machine ip node1) :

  • Explication :

    • --advertise-addr : Spécifie l’adresse IP utilisée pour communiquer avec les autres nœuds.

Résultat attendu :


➕ Ajout des nœuds workers

🔗 Récupération du token

Le Swarm génère un token permettant aux autres nœuds de rejoindre le cluster. Pour l’obtenir, exécutez sur node1 :

Cette commande affiche une autre commande à exécuter sur les workers (node2 et node3).

🤝 Connexion des workers

Sur chaque worker, connectez-vous et exécutez la commande donnée par docker swarm join-token :

Sur node2 :

Sur node3 :


✅ Vérification du cluster

Revenez sur node1 et exécutez la commande suivante pour vérifier l'état des nœuds du cluster :

Sortie attendue :


🛠️ Déploiement et gestion des services

🌐 Déploiement d’un service Nginx

Pour déployer un service Nginx avec 2 réplicas, exécutez sur node1 :


📊 Visualisation avec Docker Visualizer

Pour surveiller le cluster visuellement, déployez Docker Visualizer :


📈 Mise à l’échelle des services

Pour augmenter les réplicas de mon-nginx à 3, exécutez :


🔒 Haute disponibilité (HA)

Si un nœud worker tombe en panne, Docker redistribuera automatiquement les conteneurs vers d’autres nœuds. Testez cette fonctionnalité en arrêtant node2 :

Vérifiez que les conteneurs sont redistribués sur d'autres nœuds :


🗑️ Suppression des services

Pour supprimer un service, utilisez :


🛠️ Supprimer un nœud du cluster Docker Swarm

🔗 Retirer un worker ou un manager du cluster

Sur le nœud à supprimer (par exemple, node2 ou node3), exécutez :

  • Pour forcer la suppression (utile si le nœud est déconnecté ou inaccessible) :


🖥️ Supprimer un nœud du cluster depuis le manager

Pour lister les nœuds et obtenir leur ID :

Last updated