Come installare e configurare un Docker Swarm Cluster su CentOS 8

30 mar 2021 5 min di lettura
Come installare e configurare un Docker Swarm Cluster su CentOS 8
Indice dei contenuti

Introduzione

Docker è uno strumento open source che può essere utilizzato per creare, distribuire ed eseguire applicazioni utilizzando un contenitore. Il container consente di creare un pacchetto di un'applicazione con tutte le dipendenze richieste e di spedirla come un unico pacchetto.

Docker Swarm è uno strumento di clustering utilizzato per la gestione dell'host Docker. Ti consente di trasformare un gruppo di host Docker in un unico server virtuale logico. In questo modo puoi ridimensionare la tua applicazione orizzontalmente e aumentare il numero dell'istanza del contenitore. Docker swarm offre funzionalità molto utili, tra cui la riparazione automatica dei container, il bilanciamento del carico, l'aumento e la riduzione dei container, il rilevamento dei servizi e gli aggiornamenti in sequenza.

In questo articolo ti mostreremo come configurare un cluster Docker Swarm su CentOS 8.

Prerequisiti

  • Due server che eseguono CentOS 8.
  • Accesso all'utente root su ogni server.

Installare Docker su Both Node

Innanzitutto, dovrai installare Docker su entrambi i nodi. Per impostazione predefinita, l'ultima versione di Docker non è inclusa nel repository predefinito di CentOS 8. Quindi dovrai aggiungere un repository Docker nel tuo sistema.

Puoi aggiungerlo con il seguente comando:

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

Una volta creato il repository Docker, installa Docker con il seguente comando:

dnf install docker-ce --nobest

Dopo aver installato Docker, avvia il servizio Docker e abilitalo all'avvio al riavvio del sistema con il seguente comando:

systemctl start docker
systemctl enable docker

Puoi anche verificare lo stato di Docker con il seguente comando:

systemctl status docker

Dovresti ottenere il seguente output:

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

...

Mar 11 02:55:24 workernode systemd[1]: Started Docker Application Container Engine.
Mar 12 02:55:24 workernode dockerd[2173]: time="2021-03-11T02:55:24.119523516-05:00" level=info msg="API listen on /var/run/docker.sock"

Ora, verifica la versione installata di Docker utilizzando il seguente comando:

docker --version

Dovresti vedere il seguente output:

Docker version 20.10.5, build 55c4c88

Configurare il firewall

Successivamente, sarà necessario consentire le porte 2376, 2377, 7946 e 80 attraverso il firewall su entrambi i nodi. Puoi consentirli con il seguente comando:

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

Quindi, ricarica il firewalld per applicare le modifiche:

firewall-cmd --reload

Inizializzare il Docker Swarm Cluster

Successivamente, sarà necessario inizializzare il cluster Docker Swarm sul nodo del gestore. Puoi farlo con il seguente comando:

docker swarm init --advertise-addr 45.58.11.112

Dovresti ottenere il seguente output:

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

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

    docker swarm join --token SWMTKN-1-aisjdoj1o2812hfui31h4ifuh13iu4fh13i4ufh1o34ij1po4u9013gj0dsjv09u32er0901923if0 45.58.11.112:2377

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

Puoi utilizzare il comando mostrato nell'output precedente nel nodo di lavoro Docker per unire il nodo al cluster.

Puoi controllare le informazioni del cluster Docker Swarm con il seguente comando:

docker info

Dovresti ottenere il seguente output:

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: h19f38h12jd2398
  Is Manager: true
  ClusterID: 1f13nfv8jhf098jgz
  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.11.112
  Manager Addresses:
   45.58.11.112:2377

È ora possibile verificare il nodo Docker Swarm con il seguente comando:

docker node ls

Dovresti ottenere il seguente output:

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

Aggiungere un nodo di lavoro a Docker Swarm Cluster

Successivamente, dovrai aggiungere il nodo di lavoro al nodo del gestore Docker Swarm. Puoi farlo con il seguente comando sul nodo di lavoro:

docker swarm join --token SWMTKN-1-aisjdoj1o2812hfui31h4ifuh13iu4fh13i4ufh1o34ij1po4u9013gj0dsjv09u32er0901923if0 45.58.32.185:2377

Dovresti ottenere il seguente output:

This node joined a swarm as a worker.

Sul nodo Docker Manager, verifica il nodo di lavoro con il seguente comando:

docker node ls

Dovresti vedere che il nodo di lavoro viene aggiunto a Docker Swarm:

h19f38h12jd2398 *   masternode   Ready     Active         Leader           20.10.5
220fj2094fgj094     workernode   Ready     Active                          20.10.5

Avviare un servizio in Docker Swarm

Qui creeremo un nuovo servizio web Nginx e lo scaleremo con due contenitori. Puoi crearlo eseguendo il seguente comando sul nodo Manager:

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

Dovresti ottenere il seguente output:

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

Ora puoi controllare il servizio web con il seguente comando:

docker service ls

Dovresti vedere il seguente output:

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

Puoi anche controllare il contenitore in esecuzione con il seguente comando:

docker ps

Dovresti vedere il seguente output:

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

Per ottenere le informazioni dettagliate sul servizio web, eseguire il seguente comando:

docker service ps webservice

Dovresti vedere il seguente output:

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

Verificare Docker Swarm

A questo punto, abbiamo distribuito un contenitore Nginx tra i nodi del cluster, incluso il nodo di gestione. È ora possibile accedere al server Web Nginx utilizzando uno qualsiasi degli indirizzi IP del nodo di lavoro o del nodo Manager:

Conclusione

In questo tutorial abbiamo imparato a installare e configurare il cluster Docker Swarm su CentOS 8. Ora puoi aggiungere un numero qualsiasi di nodi di lavoro al cluster Docker Swarm e ridimensionare la tua applicazione.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.