🖧 Installation de Docker Swarm
Introduction rapide à Docker Swarm
Pourquoi Docker Swarm ?
Docker Swarm (Essaim en français) permet de regrouper plusieurs machines faisant tourner Docker au sein d'un cluster. C'est un système d'orchestration de conteneurs intégré au daemon Docker. C'est comme Kubernetes, plus léger, certes avec moins de fonctionnalités mais aussi avec moins de maux de tête.
Maintenant il faut garder en tête que choisir Docker Swarm au lieu de kubernetes, c'est un peu comme avoir choisi le HD-DVD au lieu du Blue-Ray, ou encore le Beta-Max au lieu de la VHS. Cependant cela reste un bon marche pied pour se lancer dans l'orchestration de conteneurs. Je suis d'avis que toute personne voulant se lancer dans cette aventure devrait commencer par Docker Swarm étant donné sa relative faible courbe d'apprentissage.
Système d'orchestration de conteneurs
Ensemble d'outils conçus pour gérer, automatiser et coordonner le déploiement, la mise à l'échelle et la gestion des conteneurs Docker dans un environnement distribué. Il fournit des fonctionnalités telles que la gestion des ressources, l'équilibrage de charge, la redondance, la découverte de services, la gestion des configurations, les mises à jour automatiques, la surveillance et la récupération en cas de défaillance.
Composition d'un cluster Docker Swarm
Les manager nodes :
- C'est le premier noeud de départ sur lequel Docker Swarm est initialisé.
- Ils s’occupent des tâches de gestion, de supervision et de contrôle du cluster.
- C'est seulement sur ces noeuds que nous pilotons nos conteneurs (déploiement, arrêt,...).
- Par défaut, un manager fait également office de worker.
- Ils élisent un leader parmi les managers qui sera en charge des tâches d'orchestration.
- Pour de la HA, il faut à minima 3 noeuds managers (qorum oblige)
Les worker nodes :
- Ils se chargent uniquement d’exécuter les conteneurs.
- Ils ont besoin des noeuds manager pour fonctionner.
Les services et les tâches
Un service n'est rien d'autre qu'une description de l'état souhaité pour vos conteneurs (image docker, sur quel(s) noeud(s), les ports publiés, les ressources telles les limites de RAM ou de CPU...). Une fois le service lancé, une tâche est alors attribuée au(x) nœud(s) impliqués afin d'effectuer le travail demandé par le service à savoir exécuter un conteneur.
Création du cluster Docker Swarm
Sur le node ds01 :
root@ds01:~# docker swarm init --advertise-addr 10.1.4.2
Swarm initialized: current node (j4zyi816645bq5gb4z34n8zbr) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-331bmng17mzhyw2se6lmdujegv9d5bfuuiuh8eyvkq1bawnoqv-0cde1dehpx72y36btc6ob8jcc 10.1.4.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Jonction des noeuds au cluster :
root@ds02:~# docker swarm join --token SWMTKN-1-331bmng17mzhyw2se6lmdujegv9d5bfuuiuh8eyvkq1bawnoqv-0cde1dehpx72y36btc6ob8jcc 10.1.4.2:2377
This node joined a swarm as a worker.
----------------------------------
root@ds03:~# docker swarm join --token SWMTKN-1-331bmng17mzhyw2se6lmdujegv9d5bfuuiuh8eyvkq1bawnoqv-0cde1dehpx72y36btc6ob8jcc 10.1.4.2:2377
This node joined a swarm as a worker.
----------------------------------
root@ds04:~# docker swarm join --token SWMTKN-1-331bmng17mzhyw2se6lmdujegv9d5bfuuiuh8eyvkq1bawnoqv-0cde1dehpx72y36btc6ob8jcc 10.1.4.2:2377
This node joined a swarm as a worker.
Affichage des noeuds :
root@ds01:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
j4zyi816645bq5gb4z34n8zbr * ds01 Ready Active Leader 26.1.1
v6gfhvcxwblenq80jc3oma072 ds02 Ready Active 26.1.1
7ayt0clzfh5f438r8s1sh0ows ds03 Ready Active 26.1.1
hvq2c3qu1m0l0y0mz1v2h0scw ds04 Ready Active 26.1.1