Utiliser Docker Swarm pour l’Orchestration

L'Équipe Alphorm
L'Équipe Alphorm 13e lecture en min

Après avoir exploré les fonctionnalités de Docker Compose, il est maintenant temps de découvrir Docker Swarm, un autre outil puissant d’orchestration de conteneurs. Docker Swarm permet de gérer plusieurs conteneurs déployés sur différentes machines. En facilitant la gestion des clusters de conteneurs, il offre une solution intégrée pour automatiser les déploiements et garantir la disponibilité et la résilience des applications. Cet article explore les aspects essentiels de Docker Swarm, de sa définition à la mise en place et la gestion d’un cluster.

Définition de Docker Swarm

Imaginez un groupe d’applications conteneurisées sur plusieurs machines. La gestion de ces conteneurs est fastidieuse et sujette aux erreurs. Maintenir la disponibilité, la résilience et les performances des applications est un défi.

C’est à ce stade que Docker Swarm se présente comme la solution salvatrice.

Docker swarm est un outil d’orchestration de conteneurs, ce qui signifie qu’il permet à l’utilisateur de gérer plusieurs conteneurs déployés sur plusieurs machines hôtes.

Vue générale de Docker Swarm

Docker Swarm offre une solution d’orchestration intégrée. Les développeurs et les administrateurs sont ainsi en mesure de gérer aisément des clusters de conteneurs répartis sur plusieurs hôtes, grâce à une automatisation minutieuse des déploiements et de la gestion des applications.

Architecture de Docker Swarm

Un docker swarm est composé d’un groupe de machines physiques ou virtuelles fonctionnant dans un cluster. Lorsqu’une machine rejoint le cluster, elle devient un nœud dans ce swarm. La fonction docker swarm reconnaît trois types de nœuds différents, chacun ayant un rôle différent au sein de son écosystème  :

  • Manager Node: La fonction principale des nœuds de type gestionnaire ou Manager est d’attribuer des tâches aux nœuds de travail dans le swarm. Les nœuds de gestion aident également à effectuer certaines des tâches de gestion nécessaires au fonctionnement du swarm. Docker recommande un maximum de sept nœuds de management pour un swarm.

  • Leader Node : Lorsqu’un cluster est établi, l’algorithme de consensus Raft est utilisé pour affecter l’un d’entre eux en tant que « nœud leader« . Le nœud leader prend toutes les décisions de gestion du swarm et d’orchestration des tâches pour le swarm. Si le nœud leader devient indisponible en raison d’une panne, un nouveau nœud leader peut être élu à l’aide de l’algorithme de consensus Raft.

  • Worker Node : Dans un docker swarm avec de nombreux hôtes, chaque nœud de travail fonctionne en recevant et en exécutant les tâches qui lui sont allouées par les nœuds de gestion. Par défaut, tous les modes de gestion sont également des nœuds de travail et sont capables d’exécuter des tâches lorsqu’ils ont les ressources disponibles pour le faire.
Schéma de l'architecture de Docker Swarm

Types de services en mode Docker Swarm

Docker Swarm propose deux types de services:

  • Services répliqués : Les services répliqués sont conçus pour garantir qu’un nombre spécifique de répliques d’un conteneur fonctionnent simultanément sur différents nœuds du cluster. Lorsque vous créez un service répliqué, vous spécifiez le nombre exact de répliques que vous souhaitez exécuter. Le gestionnaire de Swarm s’assure alors que le nombre requis de répliques est toujours en cours d’exécution, réparties sur les nœuds disponibles du cluster. Cela garantit une haute disponibilité et une résilience accrue, car si l’un des nœuds échoue, les autres répliques continuent de fonctionner.
  • Services globaux : Contrairement aux services répliqués qui spécifient un nombre fixe de répliques, les services globaux sont conçus pour garantir qu’une instance du service fonctionne sur chaque nœud disponible du cluster Docker Swarm. Lorsque vous créez un service global, le gestionnaire de nœuds planifie automatiquement une instance du service sur chaque nœud qui répond aux contraintes et aux besoins en ressources définis pour ce service. Les services globaux sont souvent utilisés pour les tâches qui doivent être exécutées sur chaque nœud, comme la collecte de journaux ou la surveillance système.

En résumé, Cette flexibilité permet aux utilisateurs de Docker Swarm de déployer et de gérer des services de manière adaptée à leurs besoins spécifiques en matière de disponibilité, de résilience et de performances.

Avantages de l'Orchestration

Docker Swarm offre une solution complète pour l’orchestration de conteneurs, ce qui présente de nombreux avantages pour les déploiements d’applications. Parmi les principaux avantages , on retrouve :

  • Haute disponibilité : L’un des principaux avantages est l’augmentation de la disponibilité des applications grâce à la redondance. Pour fonctionner, un docker swarm doit avoir un gestionnaire swarm qui peut affecter des tâches aux nœuds de travail. En implémentant plusieurs gestionnaires, le système peut continuer à fonctionner même si l’un des nœuds du gestionnaire tombe en panne. Docker recommande un maximum de sept nœuds de gestionnaire pour chaque cluster.
  • Equilibrage de charge automatisé : Il planifie les tâches en utilisant diverses méthodologies pour s’assurer qu’il y a suffisamment de ressources disponibles pour tous les conteneurs. Grâce à un processus qui peut être décrit comme un équilibrage de charge automatisé, le gestionnaire swarm garantit que les charges de travail des conteneurs sont affectées pour s’exécuter sur l’hôte le plus approprié pour une efficacité
  • Scalabilité : Il offre une excellente extensibilité, permettant aux utilisateurs d’ajouter de nouveaux nœuds au cluster de manière transparente pour répondre à l’évolution des besoins en ressources et en charge de travail.

La création d’un cluster avec docker swarm

Compréhension des piliers de Docker Swarm

Avant de mettre en place la configuration nécessaire pour un cluster, il est préférable de comprendre la différence entre trois piliers essentiels : Docker Swarm, Docker Node et Docker Service.

Docker Swarm est un outil d’orchestration de conteneurs qui permet de gérer et de contrôler un cluster de machines hôtes Docker. Pour en savoir plus sur les options disponibles, il suffit de taper la commande ‘docker swarm’ et vous aurez accès à de nombreuses options.

Commande 'docker swarm' pour initier un Swarm

Ensuite, nous avons Docker Node. Un nœud (node) est une instance d’hôte Docker qui fait partie du cluster géré par Docker Swarm. Pour obtenir des informations sur les options disponibles, vous pouvez simplement taper la commande ‘docker node’.

Commande 'docker node' pour gérer les nœuds

Enfin, Docker Service est une définition déclarative d’une tâche ou d’une application qui doit être exécutée dans un cluster Docker Swarm. Pour explorer davantage cette fonctionnalité, vous pouvez utiliser la commande ‘docker service’.

Commande 'docker service' pour gérer les services

En résumé, Docker Swarm permet de gérer un cluster de nœuds Docker, chaque nœud exécutant des services Docker qui définissent les applications et les tâches à exécuter dans le cluster.

🚀 Transformez votre expertise en développement avec notre formation vidéo sur les conteneurs Docker !  pour commencer et révolutionner vos compétences dès maintenant : Formation Docker !

Mise en place et gestion dynamique d'un cluster

Dans le cadre de notre configuration, nous allons plonger dans l’univers de Docker Swarm en mettant en place un cluster sur trois hôtes. L’un d’eux assumera le rôle de manager, tandis que les deux autres agiront en tant que workers.

Une fois nos trois hôtes configurés, il est temps d’activer le mode manager sur l’un d’entre eux. Pour ce faire, nous exécutons la commande

				
					docker swarm init --advertise-addr addr_ip_du_hote.
				
			
Commande pour activer le mode manager dans Docker Swarm

Notre cluster est désormais prêt à accueillir les workers.

Suite à l’exécution de la commande de démarrage de Swarm, nous ajoutons le node 2 au swarm en tant que worker en utilisant la commande

				
					docker swarm join --token valeur.
				
			
Ajout du node2 au cluster Docker Swarm

Nous répétons le même processus pour le deuxième worker.

Ajout du node3 au cluster Docker Swarm

En vérifiant les deux nodes, nous confirmons leur intégration réussie dans le swarm et aussi à l’aide de la commande docker node ls.

Liste des nœuds du cluster Docker Swarm

Et nous avons aussi dans la sortie que node1 est bien le manager

Comme expliqué précédemment, un service est une définition déclarative d’une tâche ou d’une application qui doit être exécutée dans un cluster Docker Swarm. Pour créer un service, nous utilisons simplement la commande ‘docker service create’, à laquelle nous ajoutons les paramètres souhaités tels que le nombre de répliques ou le nom du service, etc.

Commande pour créer un service dans Docker Swarm

Pour vérifier le bon fonctionnement de notre service, nous utilisons la commande :

				
					docker service ls.
				
			
Liste des services dans Docker Swarm

De plus, pour obtenir des informations détaillées, nous explorons davantage avec la commande : 

				
					docker service ps nom_service.
				
			
Informations détaillées sur un service Docker Swarm

La scalabilité automatique est un avantage clé pour cela nous ajustons le nombre de répliques avec la commande :

				
					 docker service scale nom_service=nbr_du_scale .
				
			
Commande pour mettre à l'échelle un service Docker Swarm

Nous vérifions maintenant le nombre de tâches sur nos nœuds afin de nous assurer du nombre de répliques

Vérification du nombre de tâches après la mise à l'échelle

Pour une gestion dynamique, nous mettons à jour l’image du service en utilisant la commande : 

				
					docker service update --image nouveau_image nom_service.
				
			
Commande pour mettre à jour l'image d'un service Docker Swarm

En vérifiant l’image modifiée, nous confirmons la mise à jour.

Vérification du service après mise à jour

Pour supprimer un service, nous utilisons la commande

				
					docker service rm nom_du_service.
				
			
Commande pour supprimer un service Docker Swarm

Un autre aspect intéressant est la possibilité de promouvoir un autre nœud en utilisant la commande

				
					'docker node promote nom_du_noeud'.
				
			
Commande pour promouvoir un nœud en manager dans Docker Swarm

Et voilà, le nœud a été correctement promu.

Commande pour promouvoir un autre nœud en manager

Le nœud 3 est désormais un gestionnaire, bien qu’il soit en mode esclave. Nous sommes donc en mesure de contrôler nos nœuds et nos services à partir du nœud 3.

Dans ce chapitre dédié à l’orchestration des conteneurs avec Docker Swarm, nous avons plongé dans un univers où la gestion des applications conteneurisées sur plusieurs machines devient une réalité simplifiée. À travers les concepts clés de Docker Swarm, nous avons exploré comment les gestionnaires, les nœuds et les services s’entrelacent pour former un écosystème cohérent et performant.

De la mise en place initiale d’un cluster à la gestion dynamique des services, chaque étape offre une vision plus claire de l’agilité et de la flexibilité que Docker Swarm apporte à nos déploiements d’applications. Ce qui ouvre la voie à une nouvelle ère de déploiement d’applications, où la simplicité et la robustesse se rencontrent pour façonner l’avenir de l’infrastructure informatique.

conclusion

En maîtrisant Docker Swarm, vous pouvez améliorer considérablement l’efficacité et la robustesse de vos déploiements de conteneurs. Cet outil d’orchestration vous permet de gérer facilement des clusters de conteneurs, assurant une haute disponibilité et une évolutivité optimale. Que ce soit pour comprendre les piliers de Docker Swarm ou pour mettre en place un cluster, l’utilisation de Docker Swarm est essentielle pour les développeurs cherchant à optimiser leurs environnements de conteneurs.

Partager cet article
Par L'Équipe Alphorm Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.