Qu'est-ce que le mode Docker Swarm et quand dois-je l'utiliser ?

Le mode Swarm est le système d'orchestration intégré de Docker pour la mise à l'échelle des conteneurs sur un groupe de machines physiques. Plusieurs clients indépendants exécutant Docker Engine mettent leurs ressources en commun, formant un essaim.

La fonctionnalité est fournie avec Docker et comprend tout ce dont vous avez besoin pour déployer des applications sur plusieurs nœuds. Le mode Swarm a un modèle de mise à l'échelle déclaratif qui indique le nombre de réplicas requis. Le gestionnaire d'essaims intervient pour faire correspondre le nombre réel de répliques à votre demande, créant et détruisant des conteneurs selon les besoins.

Les essaims ont également beaucoup plus de fonctionnalités. Les clusters bénéficient de capacités de découverte de service intégrées, de la prise en charge des mises à jour progressives et du routage du trafic réseau via des équilibreurs de charge externes.

Voici comment vous pouvez utiliser le mode Swarm pour configurer des charges de travail distribuées simples sur une flotte. Vous devez utiliser Swarm si vous souhaitez héberger des applications évolutives avec redondance à l'aide d'une installation Docker standard, sans aucune autre dépendance requise.

Créez votre essaim

Assurez-vous d'avoir installé Docker avant de continuer. Vous aurez besoin du package Docker CE complet sur chaque machine que vous souhaitez ajouter à l'essaim.

Désignez l'un de vos hôtes comme gestionnaire d'essaim. Ce nœud organise le cluster en envoyant des requêtes de planification de conteneur aux autres nœuds. Exécutez |__+_| dans le gestionnaire pour démarrer le processus de configuration du cluster :

|__+_|

Remplacez l'adresse IP par l'adresse IP réelle de votre nœud de gestionnaire. La commande affichera un |__+_| commande à exécuter sur vos nœuds enfants. Ils rejoindront alors l'essaim et deviendront éligibles pour abriter des conteneurs.

Après avoir ajouté vos nœuds, exécutez |__+_| dans le gestionnaire pour vérifier l'état du cluster. La section Swarm de la sortie de la commande doit apparaître comme 'active'. Vérifiez que le nombre de « nœuds » correspond au nombre de nœuds que vous avez ajoutés.

Vous pouvez obtenir plus de détails sur un nœud en exécutant |__+_|. Cela affiche l'ID unique de chaque nœud, son nom d'hôte et son état actuel. Les nœuds qui affichent une disponibilité « active » avec un statut « prêt » sont sains et prêts à prendre en charge vos charges de travail. La colonne Statut du gestionnaire indique les nœuds qui agissent également en tant que gestionnaires d'essaim. Le « leader » est le nœud ayant la responsabilité globale du cluster.

Déployer un conteneur

Une fois que vos nœuds sont prêts, vous pouvez déployer un conteneur sur votre essaim. Le mode Swarm utilise le concept de « services » pour décrire les implémentations de conteneurs. Chaque configuration de service fait référence à une image Docker et à un nombre de répliques à créer à partir de cette image.

|__+_|

Cette commande crée un service en utilisant |__+_| image pour le serveur Web Apache. Trois répliques indépendantes seront créées, vous offrant une résilience contre les résiliations de conteneurs et les pannes de nœuds. Les répliques de conteneurs sont appelées 'activités' dans le langage Docker Swarm.

Docker maintiendra en permanence l'état demandé. Si l'un des nœuds se déconnecte, les répliques qu'il héberge seront reprogrammées sur les autres. Vous aurez trois conteneurs Apache en cours d'exécution pendant la durée du service.

services d'escalade

Vous pouvez escalader les services à tout moment en utilisant le |__+_| J'envoie:

|__+_|

Docker ajoutera deux nouvelles instances de conteneur afin que le nombre de répliques continue de correspondre au nombre requis. Des instances supplémentaires seront planifiées sur des nœuds avec suffisamment de capacité libre pour les prendre en charge.

Les services peuvent également être mis à l'échelle avec |__+_| :

|__+_|

En utilisant cette variante, vous pouvez annuler la modification à l'aide d'une commande dédiée :

|__+_|

Le service sera restauré sur trois répliques. Docker supprimera deux instances de conteneur, permettant au nombre de réplicas en direct de correspondre à nouveau à l'état précédent.

mises à jour continues

Le mode Swarm prend en charge les mises à jour progressives dans lesquelles les instances de conteneur sont redimensionnées de manière incrémentielle. Vous pouvez spécifier un délai entre la distribution du service révisé à chaque nœud de l'essaim. Cela vous donne le temps d'agir sur les régressions si des problèmes sont détectés. Vous pouvez rapidement revenir en arrière, car tous les nœuds n'auront pas reçu le nouveau service.

Ajoutez le |__+_| drapeau dans un |_+_| commande pour déclencher les mises à jour en séquence. Le retard est spécifié sous la forme d'une combinaison d'heures. |__+_|, minutes |__+_| et secondes |__+_|. Le gestionnaire d'essaim mettra à jour chaque instance de conteneur individuellement. Vous pouvez ajuster le nombre d'activités mises à jour dans une étape avec le |__+_| drapeau.

Voici comment faire évoluer un service jusqu'à 10 instances dupliquées, en mettant à jour trois conteneurs à la fois avec un délai de cinq minutes entre chaque lot :

|__+_|

La gestion des services

De nombreuses commandes Docker populaires fonctionnent également avec les services. Faites précéder les commandes normales de gestion des conteneurs de |__+_| pour répertorier les services, afficher leurs journaux et les supprimer.

    |__+_|- Inspecter les données techniques d'un service désigné. |__+_|- Affiche la sortie du journal associée à un service nommé. |__+_|- Liste de tous les services en cours d'exécution. |__+_|- Affiche les instances de conteneur individuelles encapsulées par un service spécifique. |__+_|- Supprimer un service avec toutes ses répliques. Il n'y a pas de demande de confirmation.

Outre les opérations de gestion de base décrites jusqu'à présent, les services sont fournis avec un riche ensemble d'options de configuration. Ceux-ci peuvent être appliqués lors de la création d'un service ou plus tard avec le |__+_| J'envoie.

Les options de service incluent les variables d'environnement, les commandes de contrôle de l'intégrité, les paramètres DNS, les étiquettes et les conditions de redémarrage. Les instances de conteneur en cours d'exécution ne sont généralement pas détruites sur |__+_| sauf si vous modifiez des paramètres qui nécessitent une nouvelle version pour prendre effet.

Exposition des ports réseau

Les ports du réseau de conteneurs sont exposés avec le |__+_| drapeau pour |__+_| Et |__+_|. Cela vous permet de spécifier un port de conteneur de destination et le port public pour l'exposer en tant que.

|__+_|

Vous pouvez maintenant vous connecter au port 8080 sur rien depuis vos noeuds worker pour accéder à une instance du service NGINX. Cela fonctionne même si le nœud auquel il se connecte n'héberge pas réellement l'une des activités de service. Interagissez simplement avec l'essaim et occupez-vous du routage du réseau. Cette approche est appelée « maillage de routage ».

Une option alternative vous permet de publier des ports de conteneur sur des nœuds individuels où les tâches sont exécutées. Pour ajouter |__+_| à |__+_| drapeau pour l'activer. Le service sera exposé uniquement sur les nœuds qui l'hébergent. Ceci est utile dans les cas où vous souhaitez vous connecter à une instance spécifique du service. Le maillage de routage randomise l'instance à laquelle il se connecte, quel que soit le nœud auquel il se connecte.

Docker Swarm prend également en charge les réseaux superposés. Ils sont similaires aux réseaux Docker normaux. Attacher un service à un réseau permet à ses conteneurs de communiquer avec n'importe quel autre service sur le réseau.

|__+_|

Tâches créées par |__+_| ET |__+_| pourront communiquer entre eux via le réseau superposé. Un réseau par défaut nommé |__+_| fournit la fonctionnalité de maillage de routage standard décrite ci-dessus.

conclusion

Le mode Swarm est un orchestrateur de conteneurs intégré directement à Docker. Comme il est inclus par défaut, vous pouvez l'utiliser sur n'importe quel hôte sur lequel Docker Engine est installé.

La création d'un essaim vous permet de répliquer des conteneurs sur une flotte de machines physiques. Swarm vous permet également d'ajouter plus de nœuds de gestion pour améliorer la tolérance aux pannes. Si le leader actif quitte le cluster, un autre manager peut prendre le relais pour maintenir les opérations.

Le mode Docker Swarm se compare favorablement aux plates-formes d'orchestration alternatives telles que Kubernetes. Il est plus facile de démarrer car il est intégré à Docker et il y a moins de concepts à apprendre. Il est souvent plus facile à installer et à entretenir sur du matériel autogéré, bien que les solutions Kubernetes packagées comme MicroK8 aient érodé le facteur de commodité de Swarm. Néanmoins, le mode Swarm reste un orchestrateur viable pour les charges de travail auto-hébergées, en particulier si vous recherchez une solution basée sur l'interface de ligne de commande orientée développeur et moins contraignante pour les équipes opérationnelles.

Qu'est-ce que tu penses?