GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer et configurer un cluster Docker Swarm sur CentOS 8

Docker est un outil open source qui peut être utilisé pour créer, déployer et exécuter des applications à l'aide d'un conteneur. Le conteneur vous permet de regrouper une application avec toutes les dépendances requises et de l'expédier en un seul package.

Docker Swarm est un outil de clustering utilisé pour gérer l'hôte Docker. Il vous permet de transformer un groupe d'hôtes Docker en un seul serveur virtuel logique. De cette façon, vous pouvez redimensionner votre application horizontalement et augmenter le nombre d'instances de conteneur. Docker Swarm offre des fonctionnalités très utiles, notamment l'autoréparation des conteneurs, l'équilibrage de charge, l'augmentation et la réduction des conteneurs, la découverte de services et les mises à jour continues.

Dans cet article, nous allons vous montrer comment configurer un cluster Docker Swarm sur CentOS 8.

Prérequis

  • Deux serveurs exécutant CentOS 8.
  • Un mot de passe root est configuré sur chaque serveur.

Installer Docker sur les deux nœuds

Tout d'abord, vous devrez installer Docker sur les deux nœuds. Par défaut, la dernière version de Docker n'est pas incluse dans le référentiel par défaut de CentOS 8. Vous devrez donc ajouter un dépôt Docker dans votre système.

Vous pouvez l'ajouter avec la commande suivante :

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Une fois le dépôt Docker créé, installez le Docker avec la commande suivante :

dnf install docker-ce --nobest

Après avoir installé Docker, démarrez le service Docker et activez-le pour qu'il démarre au redémarrage du système avec la commande suivante :

systemctl start docker
systemctl enable docker

Vous pouvez également vérifier l'état de Docker avec la commande suivante :

systemctl status docker

Vous devriez obtenir le résultat suivant :

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-03-12 03:55:24 EST; 6s ago
     Docs: https://docs.docker.com
 Main PID: 2173 (dockerd)
    Tasks: 8
   Memory: 44.7M
   CGroup: /system.slice/docker.service
           ??2173 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.570387991-05:00" level=error msg="Failed to built-in GetDriver graph btrfs>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617049696-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617096273-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617278059-05:00" level=info msg="Loading containers: start."
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.884953789-05:00" level=info msg="Default bridge (docker0) is assigned with>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.039811428-05:00" level=info msg="Loading containers: done."
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066358016-05:00" level=info msg="Docker daemon" commit=363e9a8 graphdriver>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066498611-05:00" level=info msg="Daemon has completed initialization"
Mar 12 03:55:24 workernode systemd[1]: Started Docker Application Container Engine.
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.119523516-05:00" level=info msg="API listen on /var/run/docker.sock"

Maintenant, vérifiez la version installée de Docker à l'aide de la commande suivante :

docker --version

Vous devriez voir le résultat suivant :

Docker version 20.10.5, build 55c4c88

Configurer le pare-feu

Ensuite, vous devrez autoriser les ports 2376, 2377, 7946 et 80 à travers le pare-feu sur les deux nœuds. Vous pouvez les autoriser avec la commande suivante :

firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udp

Ensuite, rechargez le pare-feu pour appliquer les modifications :

firewall-cmd --reload

Initialiser le cluster Docker Swarm

Ensuite, vous devrez initialiser le cluster Docker Swarm sur le nœud du gestionnaire. Vous pouvez le faire avec la commande suivante :

docker swarm init --advertise-addr 45.58.32.185

Vous devriez obtenir le résultat suivant :

Swarm initialized: current node (cq8xpscsls2ctqhdha8lhdrph) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Vous pouvez utiliser la commande indiquée dans la sortie ci-dessus dans le nœud de travail Docker pour joindre le nœud au cluster.

Vous pouvez vérifier les informations du cluster Docker Swarm avec la commande suivante :

docker info

Vous devriez obtenir le résultat suivant :

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.5
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: active
  NodeID: cq8xpscsls2ctqhdha8lhdrph
  Is Manager: true
  ClusterID: m7jrgvuw1k7pvfd1qyc3mffpl
  Managers: 1
  Nodes: 1
  Default Address Pool: 10.0.0.0/8  
  SubnetSize: 24
  Data Path Port: 4789
  Orchestration:
   Task History Retention Limit: 5
  Raft:
   Snapshot Interval: 10000
   Number of Old Snapshots to Retain: 0
   Heartbeat Tick: 1
   Election Tick: 10
  Dispatcher:
   Heartbeat Period: 5 seconds
  CA Configuration:
   Expiry Duration: 3 months
   Force Rotate: 0
  Autolock Managers: false
  Root Rotation In Progress: false
  Node Address: 45.58.32.185
  Manager Addresses:
   45.58.32.185:2377

Vous pouvez maintenant vérifier le nœud Docker Swarm avec la commande suivante :

docker node ls

Vous devriez obtenir le résultat suivant :

ID                            HOSTNAME     STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
cq8xpscsls2ctqhdha8lhdrph *   masternode   Ready     Active         Leader           20.10.5

Ajouter un nœud de travail au cluster Docker Swarm

Ensuite, vous devrez ajouter le nœud de travail au nœud du gestionnaire Docker Swarm. Vous pouvez le faire avec la commande suivante sur le noeud worker :

docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377

Vous devriez obtenir le résultat suivant :

This node joined a swarm as a worker.

Sur le nœud Docker Manager, vérifiez le nœud de travail avec la commande suivante :

docker node ls

Vous devriez voir que le noeud worker est ajouté au Docker Swarm :

cq8xpscsls2ctqhdha8lhdrph *   masternode   Ready     Active         Leader           20.10.5
bipfv8sfm94a9po0uame5rd1n     workernode   Ready     Active                          20.10.5

Lancer un service dans Docker Swarm

Ici, nous allons créer un nouveau service Web Nginx et le mettre à l'échelle avec deux conteneurs. Vous pouvez le créer en exécutant la commande suivante sur le nœud Manager :

docker service create -p 80:80 --name webservice --replicas 2 nginx

Vous devriez obtenir le résultat suivant :

agyxlaswxakrbboakkyydsh0k
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

Vous pouvez maintenant vérifier le webservice avec la commande suivante :

docker service ls

Vous devriez voir le résultat suivant :

ID             NAME         MODE         REPLICAS   IMAGE          PORTS
agyxlaswxakr   webservice   replicated   2/2        nginx:latest   *:80->80/tcp

Vous pouvez également vérifier le conteneur en cours d'exécution avec la commande suivante :

docker ps

Vous devriez voir le résultat suivant :

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
c887cad1df2e   nginx:latest   "/docker-entrypoint.…"   32 seconds ago   Up 30 seconds   80/tcp    webservice.2.jelyj9gmeb7ikl2scg7mz8yg8

Pour obtenir les informations détaillées du service Web, exécutez la commande suivante :

docker service ps webservice

Vous devriez voir le résultat suivant :

ID             NAME           IMAGE          NODE         DESIRED STATE   CURRENT STATE           ERROR     PORTS
eye9zukwwrkq   webservice.1   nginx:latest   workernode   Running         Running 3 minutes ago             
jelyj9gmeb7i   webservice.2   nginx:latest   masternode   Running         Running 3 minutes ago   

Vérifier l'essaim Docker

À ce stade, nous avons déployé un conteneur Nginx sur les nœuds du cluster, y compris le nœud de gestion. Vous pouvez désormais accéder à votre serveur Web Nginx à l'aide de l'adresse IP du nœud Worker ou du nœud Manager :

Conclusion

Dans le guide ci-dessus, vous avez appris à configurer le cluster Docker Swarm sur CentOS 8. Vous pouvez maintenant ajouter n'importe quel nombre de nœuds de travail au cluster Docker Swarm et faire évoluer votre application.


Cent OS
  1. Comment installer et configurer Nginx sur CentOS 7

  2. Comment installer et configurer Redis sur CentOS 7

  3. Comment installer et configurer GitLab sur CentOS 7

  4. Comment installer et configurer Redmine sur CentOS 7

  5. Comment installer et configurer docker dans Rocky Linux/Centos 8

Comment installer et configurer Nagios 4.0.7 sur CentOS 7

Comment installer et configurer ISPConfig CP sur CentOS 7

Comment installer et configurer Docker Swarm sur CentOS 7 / Ubuntu 16.04 / Fedora 26/25

Comment installer et configurer ownCloud sur CentOS 7

Comment installer et configurer Samba sur CentOS 8

Comment installer et configurer Fail2ban sur CentOS 8