Le mode Docker Swarm est l'outil d'orchestration et de clustering d'un conteneur pour la gestion de l'hôte Docker. Le mode Docker Swarm est la partie native du moteur Docker. Cela signifie que vous n'avez rien à installer à part le moteur Docker, car le mode essaim Docker fait partie du moteur Docker.
Le mode essaim Docker est introduit dans Docker 1.12. Certains des principaux avantages du mode essaim Docker sont l'autoréparation des conteneurs , équilibrage de charge , mise à l'échelle du conteneur et réduire , découverte de services et mises à jour continues . Dans les deux derniers articles, nous avons abordé les sujets suivants
- Comment installer Docker sur CentOS 7
- Comment créer des images de conteneur Docker avec Dockerfile
Dans cet article, nous expliquerons comment installer et configurer le mode Docker Swarm sur CentOS 7.x / RHEL 7.x Pour la démonstration, j'utiliserai 3 CentOS 7.x ou RHEL 7.x Serveurs sur lesquels je vais installer docker engine. Dont deux serveurs agiront en tant que Docker Engine ou nœud de travail et l'autre agira en tant que manager . Dans mon cas, j'utilise les éléments suivants :
- dkmanager.example.com (172.168.10.70 ) - Il agira en tant que gestionnaire qui gérera le moteur ou les hôtes Docker ou le nœud de travail et il fonctionnera également comme moteur Docker.
- workernode1.example.com ( 172.168.10.80 ) – il agit sur le moteur Docker ou le nœud de travail
- workernode2.example.com ( 172.168.10.90 ) - il agira sur le moteur Docker ou le nœud de travail
Mettez à jour les lignes suivantes dans le fichier /etc/hosts sur tous les serveurs
172.168.10.70 dkmanager.example.com dkmanager172.168.10.80 workernode1.example.com workernode1172.168.10.90 workernode2.example.com workernode2
Étape 1 :Installez Docker Engine sur tous les hôtes
Définissez d'abord le référentiel docker, puis exécutez la commande sous sur tous les hôtes.
[[email protected] ~]# yum install yum-utils –y[[email protected] ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/ docker-ce.repo[[email protected] ~]# yum install docker-ce docker-ce-cli containerd.io –y[[email protected] ~]# systemctl start docker[[email protected] ~]# systemctl enable docker
Répétez les étapes ci-dessus pour workernode1 et workernode2
Remarque :Au moment de la rédaction de cet article, la version 1.13 de Docker était disponible.
Étape : 2 Ouvrez les ports du pare-feu sur les nœuds de gestionnaire et de travail
Ouvrez les ports suivants dans le pare-feu du système d'exploitation sur Docker Manager à l'aide des commandes ci-dessous
[[email protected] ~]# firewall-cmd --permanent --add-port=2376/tcpsuccess[[email protected] ~]# firewall-cmd --permanent --add-port=2377/tcpsuccess[ [email protected] ~]# firewall-cmd --permanent --add-port=7946/tcpsuccess[[email protected]ager ~]# firewall-cmd --permanent --add-port=7946/udpsuccess[[email protected] ] ~]# firewall-cmd --permanent --add-port=4789/udpsuccess[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcpsuccess[[email protected] ~]# firewall-cmd --reloadsuccess[[email protected] ~]#
Redémarrez le service Docker sur Docker Manager
[[email protected] ~]# docker de redémarrage systemctl
Ouvrez les ports suivants sur chaque nœud de travail et redémarrez le service docker
~]# firewall-cmd --permanent --add-port=2376/tcp~]# firewall-cmd --permanent --add-port=7946/tcp~]# firewall-cmd --permanent -- add-port=7946/udp~]# firewall-cmd --permanent --add-port=4789/udp~]# firewall-cmd --permanent --add-port=80/tcp~]# firewall-cmd - -reload~]# systemctl redémarrer docker
Étape :3 Initialisez l'essaim ou le cluster à l'aide de la commande "docker swarm init"
Exécutez la commande ci-dessous à partir du nœud du gestionnaire (dkmanager) pour initialiser le cluster.
[[email protected] ~]# docker swarm init --advertise-addr 172.168.10.70
Cette commande fera de notre nœud un nœud de gestionnaire et nous publions également l'adresse IP du gestionnaire dans la commande ci-dessus afin que le nœud esclave ou travailleur puisse rejoindre le cluster.
Exécutez la commande ci-dessous pour vérifier l'état du gestionnaire et afficher la liste des nœuds de votre cluster
[[email protected] ~]# docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUSn64oy2sml1w188ps109mai67b * dkmanager.example.com Ready Active Leader pré>Nous pouvons également utiliser les "info docker ” commande pour vérifier l'état de l'essaim
Étape 3 Ajouter des nœuds de travail à l'essaim ou au cluster
Pour ajouter des nœuds de travail à l'essaim ou au cluster, exécutez la commande que nous obtenons lorsque nous initialisons l'essaim. Un exemple de commande est illustré à l'étape 3
[[email protected] ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Ce nœud a rejoint un swarm en tant que nœud de calcul. ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Ce nœud a rejoint un essaim en tant que travailleur.[[email protected] ~]#Vérifiez l'état du nœud à l'aide de la commande "docker node ls ” du gestionnaire de docker
À ce stade, notre mode ou cluster docker swarm est opérationnel avec deux nœuds de travail. Dans la prochaine étape, nous verrons comment définir un service.
Étape :4 Lancement du service en mode Docker Swarm
En mode essaim Docker, les conteneurs sont remplacés par le mot tâches et les tâches (ou conteneurs) sont lancées et déployées en tant que service et Supposons que je veuille créer un service avec le nom "webserver" avec cinq conteneurs et que vous souhaitez vous assurer que l'état souhaité des conteneurs à l'intérieur du service est de cinq.
Exécutez les commandes ci-dessous à partir de Docker Manager uniquement.
[[email protected] ~]# docker service create -p 80:80 --name webserver --replicas 5 httpd7hqezhyak8jbt8idkkke8wizi[[email protected] ~]#La commande ci-dessus créera un service avec le nom "webserver", dans lequel l'état souhaité des conteneurs ou de la tâche est 5 et les conteneurs seront lancés à partir de l'image docker "httpd “. Les conteneurs seront déployés sur les nœuds du cluster, c'est-à-dire dkmanager , workernode1 et workernode2
Répertoriez le service Docker avec la commande ci-dessous
[[email protected] ~]# lsID du service docker NOM MODE RÉPLIQUES IMAGE7hqezhyak8jb serveur web répliqué 5/5 httpd:latest[[email protected] ~]#Exécutez la commande ci-dessous pour afficher l'état de votre service "serveur Web"
[[email protected] ~]# serveur web ps du service docker
Selon la sortie ci-dessus, nous pouvons voir que les conteneurs sont déployés sur les nœuds du cluster, y compris le nœud du gestionnaire. Nous pouvons maintenant accéder à la page Web à partir de n'importe quel nœud de travail et Docker Manager en utilisant les URL suivantes :
http:// 172.168.10.70 ou http://172.168.10.80 ou http://172.168.10.90
Étape 5 :Testez maintenant l'autoréparation du conteneur
L'auto-guérison des conteneurs est la caractéristique importante du mode docker swarm. Comme son nom l'indique, si quelque chose ne va pas avec container , le gestionnaire s'assurera qu'au moins 5 conteneurs doivent être en cours d'exécution pour le service "webserver". Supprimons le conteneur de workernode2 et voyons si un nouveau conteneur est lancé ou non.
[[email protected] ~]# docker ps[[email protected] ~]# docker rm a9c3d2172670 -f
Vérifiez maintenant le service à partir du gestionnaire de docker et voyez si un nouveau conteneur est lancé ou non
[[email protected] ~]# serveur web ps du service docker
Selon la sortie ci-dessus, nous pouvons voir qu'un nouveau conteneur est lancé sur le nœud dkmanager car l'un des conteneurs sur workernode2 est supprimé
Étape : 6 Mettre à l'échelle et réduire les conteneurs associés à un service
En mode essaim Docker, nous pouvons augmenter et réduire les conteneurs ou les tâches. Faisons évoluer les conteneurs à 7 pour le service 'webserver ‘
[[email protected] ~]# docker service scale webserver=7webserver mis à l'échelle à 7[[email protected] ~]#Vérifiez à nouveau l'état du service avec les commandes suivantes
Réduisons le conteneur à 4 pour le serveur Web de service
[[email protected] ~]# docker service scale webserver=4webserver mis à l'échelle à 4[[email protected] ~]#Vérifiez à nouveau le service avec les commandes ci-dessous
C'est tout pour cet article. J'espère que vous avez une idée de la façon d'installer et de configurer le mode docker swarm sur CentOS 7.x et RHEL 7.x. N'hésitez pas à partager vos retours et commentaires 🙂