Si vous avez conteneurisé votre workflow de développement, vous conviendrez que Docker est l'un des meilleurs choix pour le contrôle de version. Cependant, Docker Swarm est l'une des fonctionnalités de Docker utilisées pour orchestrer des applications complexes.

Le mécanisme de fonctionnement de Docker Swarm peut être difficile à déchiffrer au début. Mais pas de soucis, nous allons le détailler dans cet article. Qu'est-ce que Docker Swarm? Pourquoi l'utiliser? Et comment ça marche ?

Qu'est-ce que Docker Swarm et comment ça marche ?

Docker Swarm fait référence à un groupe d'hôtes Docker (ordinateurs) mis en réseau en tant que cluster pour effectuer des tâches spécifiées. Chaque hôte Docker de ce cluster est un nœud, également appelé nœud de travail.

Pour assurer une répartition efficace des tâches, vous avez besoin d'un nœud de gestionnaire. Idéalement, une initialisation en mode Docker Swarm commence par le nœud gestionnaire, et les nœuds suivants deviennent des nœuds de calcul.

En tant qu'opérateur, vous n'avez qu'à interagir avec le nœud gestionnaire, qui transmet les instructions aux travailleurs. Invariablement, les nœuds de travail reçoivent l'allocation de tâches du nœud gestionnaire et les exécutent en conséquence.

instagram viewer

Cependant, le nœud gestionnaire peut également participer à l'exécution des tâches (en tant que travailleur) ou faire directement face à la gestion. Vous pouvez empêcher la planification des tâches sur le gestionnaire en changeant son état de actif à drain. Mais votre décision d'attribuer cette double fonction peut dépendre de plusieurs facteurs. Essentiellement, vous voulez vous assurer qu'il dispose de suffisamment de ressources pour gérer plusieurs rôles avant de le faire.

Les nœuds échouent. Ainsi, le nœud gestionnaire surveille activement l'état de chaque nœud de travail et active un mécanisme de tolérance aux pannes pour replanifier la tâche d'un nœud défaillant à un autre.

Mais que se passe-t-il si le nœud du gestionnaire tombe également en panne? Fait intéressant, l'essaim continue de fonctionner. Le seul écueil est que vous ne pourrez plus communiquer avec le nœud gestionnaire pour contrôler le cluster.

L'approche de sécurité commune pour éviter cela consiste à attribuer le rôle de gestionnaire à de nombreux nœuds (Docker recommande un maximum de sept par cluster). Vous pouvez ensuite sélectionner le nœud de gestionnaire principal à partir d'eux. Lorsque le gestionnaire principal tombe en panne, l'un des gestionnaires de réserve prend le rôle.

Cependant, vous n'avez pas à vous soucier du changement de rôle entre les nœuds ou de la maintenance de l'état dans un cluster. L'algorithme de consensus de radeau (une méthode tolérante aux pannes) intégré au Docker SwarmKit s'en charge.

Pourquoi utiliser Docker Swarm ?

Docker Swarm est pratique pour déployer des applications complexes avec des perspectives d'évolutivité élevées. L'un de ses principaux cas d'utilisation consiste à décentraliser les microservices. Chaque microservice partage ensuite un conteneur similaire avec ceux des autres nœuds de travail.

Une autre raison d'utiliser Docker Swarm est que plusieurs hôtes exécutent des tâches simultanément dans un cluster. Cela contraste avec Docker Compose, qui vous permet uniquement d'exécuter plusieurs conteneurs sur un seul moteur Docker.

Cet attribut évolutif de Docker Swarm permet aux applications d'être constamment disponibles avec une latence nulle. C'est même l'une des raisons pour lesquelles vous voulez choisissez Docker plutôt que d'autres outils de virtualisation.

Et ce qui est plus? Contrairement aux conteneurs Docker uniques, où un conteneur s'arrête en cas d'échec, Docker Swarm redistribue automatiquement les tâches entre les nœuds de travail disponibles en cas d'échec.

Docker Swarm conserve également une sauvegarde de chaque état. Ainsi, vous pouvez toujours rétablir les nouvelles configurations d'essaim à l'état d'une ancienne. Supposons que le nœud de gestionnaire d'un essaim précédent échoue; vous pouvez démarrer un nouveau cluster avec plus de nœuds de gestionnaire et le rétablir pour adapter la configuration du précédent.

Il est également important de mentionner que l'interaction entre le nœud gestionnaire et les nœuds de travail est sécurisée.

Docker propose de nombreuses alternatives, et l'un des plus proches est Kubernetes. Cependant, Docker Swarm est facile à utiliser et plus automatisé. Par exemple, alors que vous devrez peut-être équilibrer la charge manuellement dans certains autres outils d'orchestration comme Kubernetes, Docker Swarm propose un équilibrage de charge automatique, ce qui facilite la vie de DevOps.

L'architecture de l'essaim Docker

L'architecture Docker Swarm s'articule autour de services, de nœuds et de tâches. Cependant, chacun a un rôle à jouer dans l'exécution réussie de la pile.

Prestations de service

Le service Docker Swarm détaille la configuration de l'image Docker qui exécute tous les conteneurs d'un essaim. Il inclut des informations sur les tâches d'un cluster. Par exemple, un service peut décrire un Configuration du serveur SQL dockerisé.

Lorsque vous exécutez un service, il oblige le nœud du gestionnaire à se synchroniser avec ses configurations. Le nœud de gestionnaire exécute ensuite le reste des nœuds de travail en fonction des paramètres spécifiés dans le service.

Les services dans Docker Swarm peuvent être globaux ou répliqués.

La différence entre eux est que, alors que les services globaux définissent une seule tâche pour tous les nœuds d'un cluster, les services répliqués spécifient le nombre de tâches par nœud.

Nœuds

Un nœud dans Docker Swarm est une instance de l'intégralité de l'environnement d'exécution Docker, également appelé moteur Docker. Les nœuds Swarm peuvent être des machines physiques ou virtuelles. Considérez cela comme un réseau d'ordinateurs exécutant des processus similaires (conteneurs).

En règle générale, cependant, les nœuds s'étendent sur plusieurs ordinateurs et serveurs exécutant le moteur Docker dans des applications réelles. Et comme mentionné précédemment, un nœud peut être un gestionnaire ou un nœud de travail, selon le rôle.

Le nœud de gestionnaire écoute le battement de cœur de l'essaim et contrôle les nœuds de travail, qui exécutent les tâches qui leur sont assignées par le nœud de gestionnaire. Comme indiqué précédemment, vous pouvez avoir plusieurs nœuds de gestionnaire dans un essaim. Mais idéalement, essayez de limiter le nombre à moins de sept, car l'ajout d'un trop grand nombre de nœuds de gestionnaire peut réduire les performances de l'essaim.

Tâches

Une tâche définit le travail affecté à chaque nœud dans un Docker Swarm. En arrière-plan, la planification des tâches dans Docker Swarm démarre lorsqu'un orchestrateur crée des tâches et les transmet à un planificateur, qui instancie un conteneur pour chaque tâche.

Le nœud de gestionnaire utilise ensuite le planificateur pour attribuer et réattribuer des tâches aux nœuds selon les besoins et spécifiés dans le service Docker.

Docker Swarm contre. Docker Compose: quelles sont les différences ?

Les gens utilisent souvent Docker Compose et Docker Swarm de manière interchangeable. Bien que les deux impliquent l'exécution de plusieurs conteneurs, ils sont différents.

Alors que Docker Compose vous permet d'exécuter plusieurs conteneurs sur un seul hôte, Docker Swarm les distribue sur plusieurs moteurs Docker dans un cluster.

Vous utilisez Docker Compose lorsque vous devez créer des conteneurs distincts pour chaque service de votre application. Ainsi, lorsqu'un composant plante, il n'interfère pas avec les autres. Cependant, lorsque la machine hôte tombe en panne, l'ensemble de l'application se bloque également.

Docker Swarm, cependant, vous aide à exécuter de nombreux conteneurs sur des nœuds en cluster. Ainsi, chaque composant de votre application repose sur plusieurs nœuds. Et lorsqu'un nœud gérant un composant d'application tombe en panne, l'essaim alloue sa tâche à un autre nœud du cluster et replanifie les tâches en cours d'exécution, évitant ainsi les temps d'arrêt.

Par conséquent, bien que vous puissiez avoir des temps d'arrêt sur Docker Compose, Docker Swarm garantit que votre application continue de fonctionner à l'aide de serveurs de sauvegarde (nœuds de travail). Cependant, Docker 1.13 prend en charge le déploiement de Docker Compose en mode Swarm à l'aide du déploiement de la pile docker commande.

Docker Swarm vous aide à déployer des applications complexes

La conteneurisation a pris le pas sur les machines virtuelles dans la conception de logiciels d'intégration continue et de livraison continue (CI/CD). Par conséquent, comprendre les moindres détails du mécanisme Docker Swarm est une compétence supplémentaire si vous cherchez à devenir un expert DevOps inestimable.

Vous savez probablement comment faire tourner un conteneur Docker ou même exécuter un Docker Compose pour plusieurs conteneurs dans un seul hôte. Mais Docker Swarm est plus pratique pour déployer des applications avec une architecture complexe. Il décompose les processus en unités, améliore l'accès à l'exécution et réduit, voire élimine, les risques de temps d'arrêt.