En savoir plus sur les centres de données
Docker Swarm est l'un des clusters de conteneurs les plus faciles à déployer. En quelques minutes, votre cluster peut être opérationnel pour la haute disponibilité, le basculement et l'évolutivité. Une fois opérationnel, vous pouvez ensuite déployer des conteneurs sur l'essaim pour tirer parti du cluster. Par exemple, vous pouvez déployer un service qui peut évoluer pour répondre à toute demande qui se présente.
C'est exactement ce que je vais vous montrer. Ici, nous allons d'abord installer Docker Swarm, puis déployer un service sur le nouveau cluster de sorte qu'il puisse être mis à l'échelle au degré qui convient aux besoins de votre entreprise.
Ce dont vous aurez besoin
Je ferai une démonstration sur un cluster composé d'un contrôleur et de deux nœuds, qui fonctionneront tous sur Ubuntu Server 20.04. Si vous utilisez une autre distribution Linux, vous devrez peut-être modifier les étapes d'installation de Docker (mais rien de plus).
Cela dit, passons à l'essaimage.
Comment installer Docker
La première chose que nous devons faire est d'installer Docker. Assurez-vous de suivre ces mêmes étapes sur votre contrôleur et quel que soit le nombre de nœuds que vous prévoyez de déployer.
Connectez-vous à votre serveur et mettez à jour apt avec :
sudo apt-get update
Ensuite, installez les dépendances nécessaires avec la commande :
sudo apt-get install ca-certificates curl gnupg lsb-release -y
Ajoutez la clé Docker GPG officielle :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Ajoutez le dépôt stable Docker avec :
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Installez Docker Engine avec :
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Démarrez et activez Docker avec :
sudo systemctl enable --now docker
Ajoutez votre utilisateur au groupe docker avec la commande :
sudo usermod -aG docker $USER
Informez le système du nouveau groupe avec :
newgrp docker
Répétez les étapes ci-dessus pour tous vos nœuds.
De retour au contrôleur Docker, initialisez l'essaim avec :
docker swarm init --advertise-addr SERVER
Où SERVER est l'adresse IP du contrôleur Docker.
Vous serez alors présenté avec la commande de jointure qui ressemblera à ceci :
docker swarm join --token SWMTKN-1-46uxtlbe3wrelly1fe5e65p1wdvg95bcjo48izvptpwof62rdo-42yl4jprovhng56sgxmyv7arv 192.168.1.13:2377
Copiez cette commande et exécutez-la à partir de tous vos nœuds. Une fois que vous avez fait cela, vous pouvez vérifier la jointure en exécutant la commande suivante sur le contrôleur :
docker info
Vous devriez voir une sortie semblable à celle-ci :
Swarm: active
NodeID: wb44efzwy68x9gek45ee1nbnb
Is Manager: true
ClusterID: vjec4hz1sjj535x9w0mspox87
Managers: 1
Nodes: 3
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Comment déployer un service sur l'essaim
Maintenant, nous pouvons déployer un service sur notre essaim. Gardons cela simple au début et déployons un service de conteneur NGINX avec lequel nous ne pouvons pas interagir. Pour ce faire, exécutez la commande suivante sur le contrôleur :
docker service create --name nginx_test nginx
Pour vérifier l'état du service, lancez la commande :
docker service ls
Vous devriez voir que notre service NGINX a été répliqué avec une sortie semblable à celle-ci :
zie1n4nm5es3 nginx_test replicated 1/1 nginx:latest
Notre exemple ci-dessus ne profite que de l'un de nos nœuds. Et si nous voulions déployer ce service sur les trois nœuds ? Pour cela, notre commande ressemblerait à ceci :
docker service create --replicas 3 --name nginx3nodes nginx
Exécutez la commande :
docker service ls
Vous devriez voir que notre déploiement nginx3nodes a été répliqué sur 3 des 3 nœuds avec le résultat suivant :
y1yu8fq27aab nginx3nodes replicated 3/3 nginx:latest
Le service tire désormais parti des trois nœuds de notre cluster. Vous pouvez réduire ce service à 2 nœuds avec la commande :
docker service scale nginx3nodes=2
Vérifiez l'état avec :
docker service ls
Vous devriez maintenant voir le service nginx sur 2/2 nœuds.
Disons que vous avez cinq nœuds dans votre essaim. Si vous souhaitez étendre le service aux cinq nœuds, la commande serait :
docker service scale nginx3nodes=5
Pour supprimer le service, vous devez émettre la commande :
docker service rm nginx3nodes
Supposons que vous souhaitiez mettre à jour l'image du conteneur dans votre déploiement. Quelques jours se sont écoulés depuis son déploiement initial et vous souhaitez vous assurer que vous utilisez la dernière image de conteneur disponible. Nous supposerons que nginx:latest est une image de conteneur mise à jour et pour mettre à jour ce service avec la nouvelle image, vous lancerez la commande :
docker service update --image nginx:latest nginx3nodes
Une dernière note, si vous souhaitez gérer plus facilement le swarm, déployez Portainer sur le contrôleur avec la commande :
docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Une fois déployé, rendez-vous sur http://SERVER:9443 (Où SERVER est l'adresse IP du serveur). Après avoir créé un utilisateur administrateur et vous être connecté, vous devriez voir Swarm répertorié dans la navigation de gauche. Cliquez dessus pour afficher votre cluster (Figure A ).
Figure A
Et c'est à peu près la base de la création d'un Docker Swarm et du déploiement d'un service sur les nœuds.
Abonnez-vous à TechRepublic Comment faire fonctionner la technologie sur YouTube pour tous les derniers conseils techniques pour les professionnels de Jack Wallen.
Lien source