Aller au contenu

Installation Docker Swarm

Dans cet article, nous allons détailler la procédure d’installation et de configuration de Docker Swarm, une technologie de clustering native de Docker. Docker Swarm permet de gérer facilement plusieurs nœuds en un seul cluster, offrant ainsi une solution scalable pour orchestrer vos conteneurs. Suivez cette procédure pour mettre en place votre propre cluster Swarm et tirer parti de la haute disponibilité et de la gestion simplifiée des services conteneurisés.

I. Principe de Docker Swarm

Docker swarm permet entre autres de cloner l’instance d’un conteneur afin de faire de la répartition de charge et du failover. Dans notre exemple nous allons utiliser 3 noeuds, un manager et deux workers faisant tourner 3 repliques d’un serveur web nginx.
image 20241007 071246

II. Préparation des noeuds

Il faut monter 3 machines virtuelles sous une distribution Linux.
Il faudra également activer le serveur SSD, leur donner une adresse IP et leur installer Docker.
Pour des raisons d’économie de performances, l’environnement de bureau ne sera pas installé.

Consommation d’un Debian 12 sans bureau :
2f583ce5 9808 421d 8e22 b661848a9b57

III. Configuration des machines

1. Mettre à jour la machine
apt update && apt upgrade -y
2. Activer et lancer le SSH
systemctl enable ssh
systemctl start ssh
3. Changer les hostname
nano /etc/hostname
reboot
4. Installation docker-ce
wget https://get.docker.com/
chmod +x index.html
./index.php

IV. Configuration de base de Docker Swarm

Sur la machine 1 (manager) :
docker swarm init 

Swarm initialized: current node (v01ahuiskacjiwzpc8j3dw6q4) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4mktc6gx2h2qgk9ivve4nzbs6jc3eplg39cgfepwrcs57n3ar2-ercay6ymzsiqtzyx1afun5i1m 129.2.32.169:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Lancer la commande suivante sur les machines 2 et 3 afin de rejoindre le premier noeud :
docker swarm join --token SWMTKN-1-4mktc6gx2h2qgk9ivve4nzbs6jc3eplg39cgfepwrcs57n3ar2-ercay6ymzsiqtzyx1afun5i1m 129.2.32.169:2377
Pour vérifier que tout soit ok, sur la machine 1 :
 docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
v01ahuiskacjiwzpc8j3dw6q4 *   docker-1   Ready     Active         Leader           27.3.1
grtxbc5cehuqk69t5qu9944qo     docker-2   Ready     Active                          27.3.1
7gdaduw5ct1c7fkb7kvr73bvz     docker-3   Ready     Active

V. Déployer son premier stack

Télécharger le fichier stack portainer (ou le créer à la main en .yml)
Déployer le stack portainer :
curl -L https://downloads.portainer.io/ce2-16/portainer-agent-stack.yml -o portainer-agent-stack.yml
docker stack deploy -c portainer-agent-stack.yml portainer
Pour éviter que les agents ne se déconnectent en cas de reboot de la machine manager, lancer la commande suivante :
docker service update --force portainer_agent

portainer_agent
overall progress: 3 out of 3 tasks
7gdaduw5ct1c: running   [==================================================>]
grtxbc5cehuq: running   [==================================================>]
v01ahuiskacj: running   [==================================================>]
verify: Service portainer_agent converged
Pour éviter d’avoir des tâches dans l’historique pour portainer, lancer la commande suivante :
docker swarm update --task-history-limit=1
Dans portainer, on peut voir nos 3 noeuds configurés correctement :
d44a626d a515 42a5 bc41 fa934fdaefda 1