Aller au contenu

🖧 Installation de Docker Swarm

dockersarwm

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 :

Initialisation de Swarm
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 :

Jonction des noeuds
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 :

État 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