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.
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 :
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
(I) Info
On peut maintenant accéder à l’application portainer à https://adresseip:9000
On peut utiliser l’adresse IP de n’importe laquelle de ces 3 machines, toutes répondront avec 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 :