Comment configurer Docker Swarm avec plusieurs nœuds docker sur Ubuntu 18.04

Comment configurer Docker Swarm avec plusieurs nœuds docker sur Ubuntu 18.04

Docker Swarm est un outil d'orchestration et de clustering de conteneurs pour gérer les hôtes Docker, et fait partie du moteur Docker. Il s'agit d'un outil de clustering natif fourni par Docker qui offre une haute disponibilité et une performance haute pour votre application.

L'objectif principal de Docker Swarm est de regrouper plusieurs hôtes Docker dans un serveur virtuel logique unique - cela garantit une disponibilité et des performances élevées pour votre application en la distribuant sur un certain nombre d'hôtes Docker au lieu d'une seule.

Dans ce tutoriel, vous apprendrez:

  • Qu'est-ce que Docker Swarm
  • Comment configurer les hôtes
  • Comment installer et exécuter le service docker
  • Comment configurer le nœud du gestionnaire pour l'initialisation du cluster d'essaims
  • Comment configurer les nœuds de travail pour rejoindre le cluster d'essaims
  • Comment vérifier le cluster d'essaims
  • Comment déployer un nouveau service sur le cluster Swarm
Services d'essaims Docker.

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Ubuntu 18.04
Logiciel Docker-ce 18.09
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Concept de essaim en détail

Les fonctionnalités de gestion et d'orchestration des cluster intégrées dans le moteur Docker sont construites à l'aide de Swarmkit.

Un essaim se compose de plusieurs hôtes docker qui fonctionnent en mode essaim et agissent en tant que managers (qui gèrent l'adhésion et la délégation) et les travailleurs (qui gèrent des services d'essaim). Un hôte docker donné peut être un manager, un travailleur ou jouer les deux rôles. Lorsque vous créez un service, vous définissez son état optimal comme le nombre de répliques, les ressources de réseau et de stockage à leur disposition, les ports que le service expose au monde extérieur, etc. Si un nœud de travailleur devient indisponible, Docker planifie les tâches du nœud sur d'autres nœuds. Une tâche est un conteneur en cours d'exécution qui fait partie d'un service d'essaims et géré par un gestionnaire de Swarm.



L'un des principaux avantages des services d'essaims sur des conteneurs autonomes est que vous pouvez modifier la configuration d'un service, y compris les réseaux et les volumes auxquels il est connecté, sans avoir besoin de redémarrer manuellement le service. Docker mettra à jour la configuration, arrêtera les tâches de service avec la configuration hors date et en créer de nouvelles correspondant à la configuration souhaitée.

Lorsque Docker fonctionne en mode essaim, vous pouvez toujours exécuter des conteneurs autonomes sur l'un des hôtes Docker participant à l'essaim, ainsi que des services d'essaim. Une différence clé entre les conteneurs autonomes et les services d'essaims est que seuls les gestionnaires d'essaims peuvent gérer un essaim, tandis que les conteneurs autonomes peuvent être démarrés sur n'importe quel démon. Les démons de Docker peuvent participer à un essaim en tant que gestionnaires, travailleurs ou les deux.

Configurer les hôtes docker

Avant d'installer les packages Docker nécessaires pour le cluster Swarm, nous configurerons le fichier hosts sur tous les nœuds Ubuntu.

Node du gestionnaire - 192.168.1.103 (nom d'hôte - dockermanager) Node de travailleur1 - 192.168.1.107 (nom d'hôte - dockerworker1) Worker Node2 - 192.168.1.108 (nom d'hôte - dockerworker2) 

Modifier le / etc / hôtes fichier sur les trois nœuds via faire un get ou vigueur Et effectuez les modifications suivantes:

192.168.1.103 DockerManager 192.168.1.107 Dockerworker1 192.168.1.108 Dockerworker2 
Copie

Après avoir modifié avec les détails ci-dessus dans le fichier des hôtes, vérifiez la connectivité avec ping-ping Entre tous les nœuds.

De l'hôte Docker Manager

# ping dockerworker1 # ping 192.168.1.107 
# ping dockerworker2 # ping 192.168.1.108 

Du nœud Docker Worker 1

# ping dockermanager # ping 192.168.1.103 

Du nœud Docker Worker 2

# ping dockermanager # ping 192.168.1.103 

Installer et exécuter le service Docker

Pour créer le cluster Swarm, nous devons installer Docker sur tous les nœuds de serveur. Nous installerons Docker-CE I.e. Docker Community Edition sur les trois machines Ubuntu.

Avant d'installer Docker CE pour la première fois sur une nouvelle machine hôte, vous devez configurer le référentiel Docker. Par la suite, vous pouvez installer et mettre à jour Docker à partir du référentiel. Effectuez toutes les étapes ci-dessous sur les trois nœuds Ubuntu.

Mettez à jour l'indice du package APT:

# mise à jour apt-get 

Installez des packages pour permettre à APT d'utiliser un référentiel sur HTTPS:

# apt-get install apt-transport-https ca-certificates curl logiciel-properties-common -y 


Ajouter la clé GPG officielle de Docker:

curl -fssl https: // télécharger.docker.com / linux / ubuntu / gpg | sudo apt-key ajouter - 

Utilisez la commande suivante pour configurer le référentiel stable:

# add-att-repository "deb [arch = amd64] https: // télécharger.docker.com / linux / ubuntu $ (lsb_release -cs) stable " 

Mettez à jour à nouveau le package APT:

# mise à jour apt-get 

Installez la dernière version de Docker CE:

APT-GET INSTALLATION DOCKER-CE

Une fois l'installation terminée, démarrez le service Docker et permettez-lui de se lancer à chaque fois au démarrage du système.

# systemctl start docker # systemctl activer docker 

Pour configurer Docker pour exécuter en tant qu'utilisateur normal ou utilisateur non racine, exécutez la commande suivante:

# Usermod -Ag docker  
# UserMod -Ag Docker Manager # Usermod -Ag docker Worker1 # Usermod -Ag docker Worker2 

Maintenant, connectez-vous en tant qu'utilisateur désigné et exécutez le docker Bonjour le monde vérifier.

# su - Manager $ docker run hello-world 

Une fois une course réussie, il donnera la sortie ci-dessous

Installation de docker Vérifiez hello_world.

Configurez le nœud de gestionnaire pour l'initialisation du cluster d'essaim

Dans cette étape, nous créerons le cluster essaim de nos nœuds. Pour créer le cluster Swarm, nous devons initialiser le mode essaim sur le nœud 'dockerManager', puis rejoindre le nœud `` dockerworker1 '' et "dockerworker2" au cluster.

Initialisez le mode Docker Swarm en exécutant la commande docker suivante sur le nœud 'dockermanager'.




Docker Swarm Init - Advertise-Addr

$ docker Swarm init - Advertise-Addr 192.168.1.103 
Initialisation de la cluster d'essaims.

`` Join Token '' a été généré par le «DockerManager» qui sera nécessaire pour rejoindre les nœuds de travailleur au gestionnaire de cluster.

Configurer les nœuds de travail pour rejoindre le cluster d'essaims

Maintenant, pour rejoindre les nœuds de travailleur à l'essaim, nous exécuterons la commande docker swarm join sur tous les nœuds de travail que nous avons reçus dans l'étape d'initialisation de l'essaim:

$ docker essaim jointe --token swmtkn-1-4htf3vnzmbhc88vxjyguipo91ihmutrxi2p1si2de4whaqylr6-3oed1hnttwkalu1ey7zkdp9l 192.168.1.103: 2377 
Nœud de travailleur 1 rejoignant le cluster d'essaims. Nœud de travailleur 2 rejoignant le cluster d'essaims.

Vérifiez le cluster d'essaims

Pour voir l'état du nœud, afin que nous puissions déterminer si les nœuds sont actifs / disponibles, etc., à partir du nœud Manager, répertorient tous les nœuds de l'essaim:

$ nœud docker ls 
Vérification du cluster d'essaims docker.

Si à tout moment, vous avez perdu votre jeton de jointure, il peut être récupéré en exécutant la commande suivante sur le nœud Manager pour le token Manager:

$ docker swarm join-token manager -Q 

La même manière pour récupérer le jeton de travail exécute la commande suivante sur le nœud Manager:

$ docker swarm join-token Worker -Q 

Déployer un nouveau service sur le cluster Swarm

Dans cette étape, nous créerons et déployer notre premier service au cluster Swarm. Le nouveau serveur Web Nginx Service s'exécutera sur le port HTTP 80 par défaut, puis l'exposera au port 8081 sur la machine hôte. Nous allons créer ce service Nginx avec 2 répliques, ce qui signifie qu'il y aura 2 conteneurs de Nginx en cours d'exécution dans notre essaim. Si l'un de ces conteneurs échoue, ils seront à nouveau engendrés pour avoir le numéro souhaité que nous définissons sur l'option de réplique.

$ Docker Service Create --name My-web1 - Édition 8081: 80 --replicas 2 nginx 

Après un déploiement réussi du service, vous pouvez voir la sortie ci-dessous:

Déployer le service Nginx sur le cluster Swarm.

Pour vérifier le service Nginx nouvellement créé à l'aide des commandes de service Docker ci-dessous.

$ docker service ls 
Énumérez le service nouvellement déployé sur le cluster Swarm.


Service Docker PS

$ docker Service Ps My-Web1 
Énumére les tâches exécutées dans le cadre de services spécifiés sur le cluster Swarm.

Si nous devons vérifier si le service Nginx fonctionne bien, nous pouvons utiliser la commande curl ou vérifier le navigateur sur la machine hôte pour la page de bienvenue du serveur Web Nginx.

$ curl http: // dockermanager: 8081 

Vérification du service Web Nginx via Curl.

Dans le navigateur sur la machine hôte, nous pouvons accéder à la page de bienvenue de Nginx

Vérification du service Nginx via le navigateur.

Maintenant, si nous devons mettre à l'échelle le service Nginx, nous ferons 3 répliques et pour faire cela exécuter la commande suivante sur le nœud Manager:

$ docker du service échelle my-web1 = 3 

Échelle de service pour le nombre de répliques souhaité.

Pour vérifier la sortie après la mise à l'échelle, nous pouvons utiliser Docker Service LS ou Service Docker PS commande.

On peut utiliser Inspect du service Docker commande pour vérifier les détails étendus d'un service déployé sur essaim. Par défaut, cela rend tous les résultats dans un tableau JSON.

Conclusion

Docker est devenu un moyen extrêmement populaire de configurer, enregistrer et partager des environnements de serveur à l'aide de conteneurs. Pour cette raison, l'installation d'une application ou même d'une grande pile peut souvent être aussi simple que l'exécution de Docker Pull ou Docker Run. La séparation des fonctions d'application en différents conteneurs offre également des avantages en matière de sécurité et de gestion des dépendances.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Introduction aux moteurs de stockage MySQL
  • Masterring Bash Script Loops
  • Comment installer Kubernetes sur Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • À quelle fréquence devez-vous redémarrer votre serveur Linux?
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment installer Kubernetes sur Ubuntu 22.04 Jammy Jellyfish…
  • Boucles imbriquées dans les scripts bash