Ricerca nel sito web

Come installare Docker Swarm su Rocky Linux


Su questa pagina

  1. Prerequisiti
  2. Installazione di Docker
  3. Impostazione di Firewalld
  4. Inizializzazione di Swarm Manager
  5. Aggiunta di nodi di lavoro a Swarm
  6. Gestione dei servizi su Docker Swarm
  7. Ridimensionamento dei servizi su Docker Swarm
  8. Eliminazione di servizi su Docker Swarm
  9. Conclusione

Docker Swarm è un'orchestrazione di container basata su Docker Engine. Consente di creare e distribuire un cluster di nodi Docker con più server. Docker Swarm semplifica la distribuzione dell'applicazione containerizzata in un servizio. Fornisce un modo semplice e facile per gestire e orchestrare i contenitori.

Docker Swarm offre un elevato livello di disponibilità per le applicazioni. In Docker Swarm, puoi eseguire una singola applicazione o servizio su più nodi, che sono chiamati Worker Nodes\. E c'è anche un nodo chiamato \Swarm Manager\, che è la gestione centrale e l'orchestrazione di Docker Swarm\.

Questo tutorial ti mostrerà come configurare Docker Swarm utilizzando i server Rocky Linux. Installerai Docker su ciascun server, configurerai firewalld, inizializzerai Swarm Manager e aggiungerai nodi e, infine, imparerai anche l'utilizzo di base di Docker Swarm per la distribuzione di applicazioni containerizzate.

Prerequisiti

Per completare questa guida, avrai bisogno di almeno tre server Rocky Linux e un utente non root con privilegi sudo/amministratore.

Per questa dimostrazione, utilizzeremo tre server Rocky Linux con i dettagli seguenti:

Hostname            IP Address        Used as
---------------------------------------------------
swarm-manager1     192.168.5.100     Swarm Manager
worker1            192.168.5.120     Node
worker2            192.168.5.121     Node

Con tutti questi requisiti in atto, sei pronto per iniziare le distribuzioni di Docker Swarm.

Installazione di Docker

Per configurare Docker Swarm, è necessario installare Docker Engine su ogni macchina/server. Per la distribuzione Rocky Linux, puoi installare Docker tramite il repository Docker ufficiale.

Ora installerai Docker Engine su tutti i tuoi server Rocky Linux.

Aggiungi il repository Docker per il sistema Rocky Linux tramite il comando dnf di seguito.

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

Una volta aggiunto il repository, eseguire il comando dnf di seguito per verificare l'elenco dei repository e aggiornare tutti i pacchetti.

sudo dnf repo list
sudo dnf update

Se viene aggiunto il repository Docker, vedrai l'output di seguito:

Successivamente, installa Docker tramite il comando dnf di seguito. Quando viene richiesto di confermare l'installazione, immettere y e premere INVIO per procedere.

sudo dnf install docker-ce docker-ce-cli containerd.io

Una volta installato Docker, avvia e abilita il servizio docker tramite il comando systemctl di seguito. Il servizio docker dovrebbe essere in esecuzione e verrà eseguito automaticamente all'avvio del sistema.

sudo systemctl enable docker
sudo systemctl start docker

Infine, verifica il servizio docker utilizzando il comando seguente per assicurarti che sia in esecuzione.

sudo systemctl status docker

Se il servizio docker è in esecuzione, dovresti ottenere l'output come di seguito.

Inoltre, se desideri eseguire Docker con un utente non root, devi aggiungere l'utente al gruppo docker tramite il comando seguente.

sudo usermod -aG docker user

Configurazione di Firewalld

Per l'ambiente di produzione, devi abilitare il firewall su ogni server. Sul sistema Rocky Linux predefinito, firewalld è abilitato per impostazione predefinita. Quindi devi solo aggiungere alcune porte TCP e UDP per la distribuzione di Docker Swarm.

Di seguito sono riportate alcune delle porte TCP e UDP che è necessario aprire su ciascun server per distribuire Docker Swarm e farlo funzionare correttamente:

  • Porta TCP 2377 per le comunicazioni di gestione del cluster: se hai più Swarm Manager.
  • Porta TCP e UDP 7946 per la comunicazione tra i nodi - per tutti i nodi nell'ambiente Swarm.
  • Porta UDP 4789 per il traffico di rete sovrapposto

Aggiungi le porte Docker Swarm a firewalld tramite il comando firewall-cmd di seguito.

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

Successivamente, ricarica le regole firewalld e verifica l'elenco delle porte su firewalld utilizzando il comando seguente.

sudo firewall-cmd --reload
sudo firewall-cmd --list-port

Dovresti vedere alcune porte TCP e UDP per la distribuzione di Docker Swarm aggiunte a firewalld.

Con il motore Docker installato su ogni server e la configurazione Firewalld, ora puoi impostare la distribuzione di Docker Swarm inizializzando il primo nodo come \Swarm manager\.

Inizializzazione di Swarm Manager

Swarm Manager è il cervello del tuo ambiente Docker Swarm. Per distribuzioni di grandi dimensioni, puoi aggiungere più server come Swarm Manager, che consente l'alta disponibilità e la tolleranza ai guasti del tuo Swarm Manager.

Swarm Manager è il gestore cluster per il tuo Docker Swarm, gestisce lo stato delle distribuzioni delle applicazioni ed è anche integrato con Docker Engine. Swarm Manager fornisce un modello di servizio dichiarativo e il ridimensionamento del servizio, lo stato di servizio desiderato e fornisce anche aggiornamenti continui.

In questo esempio, inizializzeremo il server \swarm-manager1\ con indirizzo IP \192.168.5.100\ come Swarm Manager.

Esegui il seguente comando \docker swarm init\ sul server \swarm-manager1\ per avviare l'inizializzazione di Swarm Manager sulla tua distribuzione.

Per questo esempio, Swarm Manager è in esecuzione sull'indirizzo IP \192.168.5.100\ e la rete predefinita per i servizi su Docker Swarm sarà \10.10.0.0/16\.

docker swarm init --advertise-addr 192.168.5.100 --default-addr-pool 10.10.0.0/16

Ora dovresti vedere un output simile allo screenshot seguente quando Swarm Manager viene inizializzato. Inoltre, puoi vedere le istruzioni necessarie per aggiungere nodi di lavoro alla tua distribuzione Docker Swarm, incluso il token generato che devi utilizzare.

Successivamente, esegui il seguente comando docker per verificare che la modalità Swarm sia attivata e abilitata.

docker info

Vedrai che la modalità Swarm è \attiva\ con l'indirizzo IP di rete per i servizi \10.10.0.0/16\, che è lo stesso della configurazione durante il processo di inizializzazione. Inoltre, puoi vedere che il nodo corrente disponibile su Docker Swarm è solo \1\.

Verifica l'elenco dei nodi disponibili sul tuo Docker Swarm tramite il comando \docker node\ di seguito. E vedrai che c'è un solo nodo nella tua distribuzione di Docker Swarm.

docker node ls

Aggiunta di nodi di lavoro a Swarm

In Docker Swarm, il nodo di lavoro ha lo stesso concetto di un'altra orchestrazione di container, ovvero dove i container vengono eseguiti e in esecuzione. Il Docker Engine deve essere installato su ciascun nodo di lavoro e anche il lavoratore può essere promosso a \Swarm Manager\.

Allo stesso tempo, Swarm Manager può essere utilizzato anche come nodo di lavoro, il che significa che la tua applicazione può essere eseguita anche su Swarm Manager.

Esegui il seguente comando \docker swarm join\ per aggiungere i server \worker1\ e \worker2\ a Docker Swarm. Inoltre, assicurati di sostituire il token con il token generato nel tuo ambiente.

docker swarm join \
--token SWMTKN-1-4qxedy87gygenejrw06hlqpuwfm6erulccfj1jhnmsn0kehbnb-2ld4g3zo36bzu8d8ss4115rhq 192.168.5.100:2377

Quando ricevi un messaggio di output come \Questo nodo si è unito a uno swarm come lavoratore\, significa che il nodo di lavoro è stato aggiunto.

Puoi vedere l'output simile quando \worker1\ e \worker2\ sono uniti allo sciame Docker.

Quindi, vai di nuovo a Swarm Manager ed esegui il comando docker di seguito per verificare l'elenco dei nodi sul tuo Docker Swarm.

docker node ls

Dovresti vedere tre nodi nel tuo ambiente Docker Swarm. In questo esempio, swarm-manager1\ viene utilizzato come Swarm Manager e entrambi i server \worker1\ e \worker2\ vengono utilizzati come nodo di lavoro.

Inoltre, puoi anche verificare l'elenco dei nodi utilizzando il comando docker di seguito.

docker info

Sul server Swarm Manager, puoi vedere l'output nello screenshot seguente. Ci sono 1 manager e 3 nodi (lo swarm-manager è usato anche come lavoratore).

Ma, sui server \worker1\ e \worker2\, vedrai l'output come il seguente. Puoi vedere l'indirizzo IP di Swarm Manager con la porta TCP predefinita 2377.

A questo punto, hai completato la distribuzione di Docker Swarm utilizzando Rocky Linux. Successivamente, distribuirai l'applicazione/il servizio nel tuo ambiente Swarm.

Gestione dei servizi su Docker Swarm

Quando si distribuisce un'applicazione nell'ambiente Docker Swarm, tale applicazione verrà chiamata \servizio\. È un'immagine della tua applicazione di microservizi e potrebbe essere un server HTTP, un server di database o altre applicazioni.

Per distribuire un servizio su Docker Swarm, devi specificare l'immagine di base che utilizzerai, le porte, il nome specifico del tuo servizio e anche il numero di repliche per il tuo servizio.

Ora imparerai la distribuzione di base dei tuoi servizi su Docker Swarm.

In questo esempio, creerai un nuovo servizio \test-httpd\ con la replica 1 ed esporrai la porta \8000\ sul nodo Swarm. L'immagine che utilizzerai è \httpd:alpine\.

Esegui il seguente comando \docker service\ per creare un nuovo servizio.

docker service create --replicas 1 --name test-httpd -p 8000:80 httpd:alpine

Ora verifica i servizi sul tuo Docker Swarm tramite il comando docker di seguito. Dovresti vedere che il servizio \test-httpd\ è in esecuzione ed ha anche esposto la porta TCP 8000 con solo 1 replica.

docker service ls

Successivamente, controlla i dettagli del tuo servizio \test-httpd\ tramite il comando seguente.

docker service inspect test-httpd
docker service inspect --pretty test-httpd

Di seguito puoi vedere il servizio dettagliato di \test-httpd\.

Inoltre, puoi controllare il contenitore che viene eseguito sul servizio \test-httpd\ tramite il comando \docker service\ come di seguito.

docker service ps test-httpd

Puoi vedere che il contenitore \test-httpd.1\ è in esecuzione sul server \swarm-manager1\.

Ora apri la porta \8000\ su tutti i server usando il seguente comando firewall-cmd.

sudo firewall-cmd --add-port=8000/tcp

Successivamente, verifica il servizio \test-httpd\ utilizzando il comando curl come di seguito. In questo esempio, l'indirizzo IP \swarm-manager1\ è \192.168.5.100\.

curl 192.168.5.30:8000
curl -I 192.168.5.30:8000

Vedrai la pagina index.html predefinita del servizio \test-httpd\.

Servizi di ridimensionamento su Docker Swarm

Dopo aver distribuito il servizio su Docker Swarm, ora imparerai come ridimensionare i tuoi servizi e le tue applicazioni.

Eseguire il seguente comando per ridimensionare il servizio \test-httpd\ a 3 repliche. Questo comando creerà altri due servizi di \test-httpd\ sui nodi di lavoro.

docker service scale test-httpd=3

Ora, verifica l'elenco dei servizi in esecuzione utilizzando il seguente comando. Dovresti vedere un altro servizio \test-httpd\ in esecuzione su entrambi i server \worker1\ e \worker2\.

docker service ps test-httpd

Infine, verifica il servizio tramite il comando curl come di seguito su entrambi i server \worker1\ e \worker2\. Se il servizio è in esecuzione, dovresti vedere la pagina index.html predefinita sullo schermo.

Controllo del servizio su worker1.

docker ps
curl worker1:8000

Controllo del servizio su worker2.

docker ps
curl worker2:8000

Eliminazione di servizi su Docker Swarm

Hai appreso i servizi di distribuzione e ridimensionamento di base su Docker Swarm. Successivamente, pulirai il tuo ambiente Docker Swarm eliminando il servizio \test-httpd\.

Eseguire il seguente comando per rimuovere il servizio \test-httpd\ dallo sciame Docker.

docker service rm test-httpd

Successivamente, verifica il servizio \test-httpd\ tramite il comando \docker service inspect\ di seguito. Dovresti vedere che il servizio è stato eliminato.

docker service inspect test-httpd

Inoltre, puoi anche verificare tramite il comando docker di seguito per controllare l'elenco dei contenitori e delle immagini in esecuzione sul tuo Swarm.

Dovresti vedere che il contenitore è stato rimosso e l'immagine httpd:alpine è disponibile su tutti i server.

docker ps
docker images

Conclusione

In questa guida, hai distribuito Docker Swarm con tre server Rocky Linux. Hai anche imparato l'installazione di Docker Engine su un server Linux e la configurazione di Firewalld sul sistema Rocky Linux. Infine, hai anche appreso la distribuzione di base dell'applicazione in Docker Swarm tramite il comando \docker service\.

Da qui, ora puoi distribuire le tue applicazioni containerizzate con tutte le dipendenze in Docker Swarm. Puoi anche aggiungere più Swarm Manager per configurare l'alta disponibilità del tuo ambiente Docker Swarm.