GNU/Linux >> Linux Esercitazione >  >> Linux

Come distribuire un servizio in un cluster Docker Swarm

Ulteriori informazioni sui data center

Docker Swarm è uno dei cluster di contenitori più semplici che puoi distribuire. In pochi minuti puoi avere il tuo cluster attivo e funzionante per disponibilità elevata, failover e scalabilità. Una volta installato e funzionante, puoi quindi distribuire i container nello swarm per sfruttare il cluster. Ad esempio, potresti distribuire un servizio in grado di scalare per soddisfare qualsiasi domanda gli si presenti.

Questo è esattamente quello che ti mostrerò. Qui installeremo prima Docker Swarm e quindi implementeremo un servizio nel nuovo cluster in modo che possa essere ridimensionato a qualsiasi livello si adatti alle esigenze della tua azienda.

Di cosa avrai bisogno

Dimostrerò su un cluster composto da un controller e due nodi, che funzioneranno tutti su Ubuntu Server 20.04. Se stai utilizzando una distribuzione Linux diversa, potresti dover modificare i passaggi di installazione di Docker (ma niente di più).

Detto questo, diamoci da fare.

Come installare Docker

La prima cosa che dobbiamo fare è installare Docker. Assicurati di seguire questi stessi passaggi sul controller e su tutti i nodi che intendi distribuire.

Accedi al tuo server e aggiorna apt con:

sudo apt-get update

Quindi, installa le dipendenze necessarie con il comando:

sudo apt-get install ca-certificates curl gnupg lsb-release -y

Aggiungi la chiave GPG Docker ufficiale:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Aggiungi il repository stabile Docker con:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Installa Docker Engine con:

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io -y

Avvia e abilita Docker con:

sudo systemctl enable --now docker

Aggiungi il tuo utente al gruppo Docker con il comando:

sudo usermod -aG docker $USER

Rendi il sistema a conoscenza del nuovo gruppo con:

newgrp docker

Ripeti i passaggi precedenti per tutti i tuoi nodi.

Tornando al controller Docker, inizializza lo swarm con:

docker swarm init --advertise-addr SERVER

Dove SERVER è l'indirizzo IP del Docker Controller.

Ti verrà quindi presentato il comando join che avrà un aspetto simile a questo:

docker swarm join --token SWMTKN-1-46uxtlbe3wrelly1fe5e65p1wdvg95bcjo48izvptpwof62rdo-42yl4jprovhng56sgxmyv7arv 192.168.1.13:2377

Copia quel comando ed eseguilo da tutti i tuoi nodi. Una volta fatto, puoi verificare il join emettendo il seguente comando sul controller:

docker info

Dovresti vedere un output simile a questo:

Swarm: active

NodeID: wb44efzwy68x9gek45ee1nbnb

Is Manager: true

ClusterID: vjec4hz1sjj535x9w0mspox87

Managers: 1

Nodes: 3

Default Address Pool: 10.0.0.0/8

SubnetSize: 24

Data Path Port: 4789

Orchestration:

Task History Retention Limit: 5

Come distribuire un servizio allo sciame

Ora possiamo distribuire un servizio al nostro sciame. All'inizio manteniamo questo semplice e distribuiamo un servizio contenitore NGINX con cui non possiamo interagire. Per fare ciò, emettere il seguente comando sul controller:

docker service create --name nginx_test nginx

Per verificare lo stato del servizio, impartisci il comando:

docker service ls

Dovresti vedere che il nostro servizio NGINX è stato replicato con un output simile a questo:

zie1n4nm5es3   nginx_test             replicated   1/1                nginx:latest

Il nostro esempio sopra sta sfruttando solo uno dei nostri nodi. E se volessimo distribuire quel servizio su tutti e tre i nodi? Per questo, il nostro comando sarebbe qualcosa del genere:

docker service create --replicas 3 --name nginx3nodes nginx

Dai il comando:

docker service ls

Dovresti vedere che la nostra distribuzione di nginx3nodes è stata replicata su 3 nodi su 3 con il seguente output:

y1yu8fq27aab   nginx3nodes              replicated   3/3                nginx:latest

Il servizio ora sta sfruttando tutti e tre i nodi nel nostro cluster. Puoi ridimensionare quel servizio a 2 nodi con il comando:

docker service scale nginx3nodes=2

Verifica lo stato con:

docker service ls

Ora dovresti vedere il servizio nginx su 2/2 nodi.

Supponi di avere cinque nodi nel tuo sciame. Se desideri ridimensionare il servizio su tutti e cinque i nodi, il comando sarebbe:

docker service scale nginx3nodes=5

Per eliminare il servizio, devi dare il comando:

docker service rm nginx3nodes

Supponiamo che tu voglia aggiornare l'immagine del contenitore nella tua distribuzione. Sono trascorsi alcuni giorni da quando è stato originariamente distribuito e vuoi assicurarti di utilizzare l'ultima immagine del contenitore disponibile. Assumiamo che nginx:latest sia un'immagine del contenitore aggiornata e per aggiornare quel servizio con la nuova immagine, devi dare il comando:

docker service update --image nginx:latest nginx3nodes

Un'ultima nota, se vuoi gestire più facilmente lo swarm, schiera Portainer sul controller con il comando:

docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Una volta distribuito, vai a http://SERVER:9443 (dove SERVER è l'indirizzo IP del server). Dopo aver creato un utente amministratore e aver effettuato l'accesso, dovresti vedere Swarm elencato nella barra di navigazione a sinistra. Fare clic per visualizzare il cluster (Figura A ).

Figura A

E queste sono praticamente le basi per avviare uno sciame Docker e distribuire un servizio ai nodi.

Abbonati a TechRepublic Come far funzionare la tecnologia su YouTube per tutti i consigli tecnologici più recenti per i professionisti del business di Jack Wallen.

Link sorgente


Linux
  1. Come distribuire Nginx Load Balancing su Kubernetes Cluster su Ubuntu 18.04 LTS

  2. Come distribuire il tuo primo pod su un cluster Kubernetes

  3. Come distribuire microservizi con Docker

  4. Come distribuire app con Rancher

  5. Come distribuire un container nginx con Docker su Linode

Come installare un cluster Docker Kubernetes su CentOS 7

Come installare e configurare un cluster Docker Swarm su CentOS 8

Come distribuire il cluster Kubernetes su AWS con Amazon EKS

Come distribuire Pi-Hole su Debian 11

Come distribuire CouchDB come cluster con Docker

Come distribuire il container Docker su Jelastic Cloud