English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Gestion des clusters Swarm

Introduction

Docker Swarm est un outil de gestion de groupe de Docker. Il transforme un pool d'ordinateurs Docker en un seul ordinateur Docker virtuel. Docker Swarm fournit une API Docker standard, tout outil qui communique avec le démon Docker peut utiliser Swarm pour s'étendre facilement à plusieurs hôtes.

Les outils pris en charge incluent, sans s'y limiter, ce qui suit :

  • Dokku

  • Docker Compose

  • Docker Machine

  • Jenkins

Principe

Comme le montre la figure suivante, un groupe swarm est composé de nœuds de gestion (manager) et de nœuds de travail (work node).

  • swarm mananger: responsable de la gestion de l'ensemble du groupe, y compris la configuration du groupe, la gestion des services et tous les travaux liés au groupe.

  • nœud de travail: c'est le nœud disponible sur la figure, principalement responsable de la mise en œuvre de services correspondants pour exécuter des tâches (task).

Utiliser

Les exemples ci-dessous sont présentés à l'aide de Docker Machine et virtualbox, assurez-vous que votre hôte a installé virtualbox.

1、créer un nœud de gestion de groupe swarm (manager)

Créer une machine docker :

$ docker-machine create -d virtualbox swarm-manager

Initialiser un groupe swarm, l'ordinateur sur lequel s'effectue l'initialisation est le nœud de gestion du groupe.

$ docker-machine ssh swarm-manager
$ docker swarm init --advertise-addr 192.168.99.107 #L'IP ici est l'IP attribuée lors de la création de l'ordinateur.

La sortie ci-dessus prouve que l'initialisation a réussi. Vous devez copier la ligne suivante, qui sera utilisée lors de l'ajout d'un nœud de travail :

docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

2、créer un nœud de travail (worker) du cluster swarm

Ici, nous créons directement deux machines, swarm-worker1 et swarm-worker2 .

Entrez respectivement dans les deux machines, spécifiez pour ajouter au cluster créé à l'étape précédente, ici il sera utilisé le contenu copié à l'étape précédente.

Les données de sortie ci-dessus indiquent que l'ajout a réussi.

Dans l'image ci-dessus, en raison de la longueur du contenu copié à l'étape précédente, il sera automatiquement tronqué. En réalité, la commande exécutée dans l'image est la suivante :

docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

3、vérifier les informations du cluster

Entrez dans le nœud de gestion et exécutez : docker info pour voir les informations du cluster actuel.

$ docker info

En regardant l'endroit où est dessinée la croix rouge, on peut savoir que dans le cluster en cours d'exécution, il y a trois nœuds, dont un est le nœud de gestion.

4、déployer le service dans le cluster

AttentionToute opération liée à la gestion du cluster est effectuée sur le nœud de gestion.

Dans l'exemple suivant, nous créons un service nommé helloworld sur un nœud de travail, ici il est attribué de manière aléatoire à un nœud de travail :

docker@swarm-manager:~$ docker service create --répliques 1 --name helloworld alpine ping docker.com

5、vérifier le déploiement du service

Vérifiez sur quel nœud le service helloworld s'exécute, on peut voir qu'il s'exécute actuellement dans swarm-worker1 Nœud :

docker@swarm-manager:~$ docker service ps helloworld

Vérifiez les informations spécifiques du déploiement helloworld :

docker@swarm-manager:~$ docker service inspect --pretty helloworld

6、étendre le service de cluster

Nous allons étendre le service helloworld à deux nœuds.

docker@swarm-manager:~$ docker service scale helloworld=2

On peut voir qu'il s'est étendu d'un nœud à deux nœuds.

7、supprimer le service

docker@swarm-manager:~$ docker service rm helloworld

Vérifiez si elle a été supprimée :

8、mise à niveau en continu des services

Dans l'exemple suivant, nous allons expliquer comment la version redis peut être mise à niveau vers une version supérieure.

Créer un 3.0.6 version redis.

docker@swarm-manager:~$ docker service create --répliques 1 --nom redis --mise à jour-délai 10s redis:3.0.6

Mise à jour en continu de redis .

docker@swarm-manager:~$ docker service update --image redis:3.0.7 redis

Regardez l'image pour voir que la version de redis est passée de 3.0.6 Mis à niveau vers 3.0.7,ce qui signifie que le service a été mis à jour avec succès.

9、Arrêter un nœud pour ne plus recevoir de nouvelles tâches

Voir tous les nœuds :

docker@swarm-manager:~$ docker node ls

Vous pouvez voir que tous les nœuds sont Actifs, et peuvent recevoir de nouvelles tâches d'attribution.

Arrêt du nœud swarm-worker1:

Attention:swarm-worker1 L'état devient Drain. Cela n'affecte pas les services du cluster, c'est seulement swarm-worker1 Le nœud ne reçoit plus de nouvelles tâches, la capacité de charge du cluster diminue.

Vous pouvez réactiver le nœud avec la commande suivante :

docker@swarm-manager:~$ docker node update --disponibilité active swarm-worker1