Docker Swarm è uno strumento che consente di distribuire un cluster di Docker Host. È uno strumento di clustering nativo fornito da Docker che fornisce alta disponibilità e prestazioni elevate per la tua applicazione distribuendola a tutti i nodi all'interno del cluster swarm.
In questo tutorial, ti mostreremo passo dopo passo come creare uno Swarm Cluster usando Ubuntu 16.04. Creeremo un cluster swarm utilizzando 2 macchine server Ubuntu, 1 nodo server come manager e 1 altro come lavoratore. E poi proveremo a distribuire il semplice servizio Nginx al cluster swarm.
Prerequisiti
- 2 o più - Server Ubuntu 16.04
- gestore 132.92.41.4
- lavoratore01 132.92.41.5
- Privilegi di root
Cosa faremo?
- Configura host
- Installa Docker-ce
- Inizializzazione Docker Swarm
- Distribuzione del primo servizio al cluster
Passaggio 1:configurazione degli host
Prima di installare qualsiasi pacchetto per il cluster swarm, configureremo il file hosts su entrambi i server.
Esegui i comandi seguenti su tutti i server, 'manager' e 'worker01'.
Modifica il file '/etc/hosts' utilizzando l'editor vim.
vim /etc/hosts
Aggiungi la seguente configurazione alla fine della riga.
132.92.41.4 manager
132.92.41.5 worker01
Salva ed esci.
Ora esegui il ping di tutti i nodi usando 'hostname' invece usando l'indirizzo IP.
ping -c 3 manager
ping -c 3 worker01
E assicurati che funzioni su tutti gli host.
Passaggio 2 - Installa Docker-ce
Per creare il cluster swarm, è necessario installare la finestra mobile su tutti i nodi del server. In questo passaggio, installeremo Docker-ce Community Edition sia su server manager che su worker01.
Installa le dipendenze Docker-ce usando il comando apt di seguito.
sudo apt install apt-transport-https software-properties-common ca-certificates -y
Ora aggiungi la chiave Docker e il repository Docker-ce ai nostri server.
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" > /etc/apt/sources.list.d/docker-ce.list
Aggiorna il repository e installa i pacchetti Docker-ce usando il comando apt install di seguito.
sudo apt update
sudo apt install docker-ce -y
Al termine dell'installazione, avvia il servizio Docker e abilitalo per l'avvio ogni volta all'avvio del sistema.
systemctl start docker
systemctl enable docker
Docker-ce è ora installato sui nostri nodi server.
Successivamente, configureremo la finestra mobile per l'esecuzione come utente normale o utente non root.
Crea un nuovo utente chiamato "mohammad" e aggiungilo al gruppo "docker".
useradd -m -s /bin/bash mohammad
sudo usermod -aG docker mohammad
Ora accedi all'utente 'mohammad' ed esegui il comando hello-world della finestra mobile come di seguito.
su - mohammad
docker run hello-world
E otterrai il mondo ciao dalla finestra mobile come mostrato di seguito.
Fase 3:crea il cluster dello sciame
In questo passaggio creeremo il Cluster Swarm dei nostri nodi. E per creare i nodi del cluster swarm, dobbiamo inizializzare la modalità swarm sul nodo "manager" e quindi unire il nodo "worker01" al cluster.
Inizializza la modalità Docker Swarm eseguendo il comando Docker di seguito sul nodo "manager".
docker swarm init --advertise-addr 132.92.41.4
E otterrai il risultato come mostrato di seguito.
Vedrai che "join-token" è stato generato dal nodo "manager".
Successivamente, è necessario aggiungere il nodo "worker01" al "manager" del cluster. E per farlo, abbiamo bisogno di un "join-token" dal nodo "manager" del cluster, quindi assicurati di scriverlo sulla tua nota.
Esegui il comando Docker swarm join sul nodo 'worker01'.
docker swarm join --token SWMTKN-1-5p5ujrr67rl2rlmyvrj56fksblbcrtaeirf7fj5r4snid2vn6y-918gbqr02m64xct43i2ssi4qs 132.92.41.4:2377
Ora otterrai il risultato come mostrato di seguito.
Il nodo 'worker01' è stato unito al cluster.
Verificalo eseguendo il comando seguente sul nodo 'manager'.
docker node ls
Ora vedi che il nodo 'worker01' è stato unito al cluster swarm.
L'Ammasso dello Sciame è stato creato.
Passaggio 4:distribuzione del primo servizio al cluster
In questo passaggio, creeremo e implementeremo il nostro primo servizio nel cluster swarm. Vogliamo creare un nuovo servizio web server Nginx che verrà eseguito sulla porta http predefinita 80, quindi esporlo alla porta 8080 sul server host, quindi provare a replicare il servizio nginx all'interno del cluster swarm.
Crea servizio
Crea un nuovo servizio Nginx denominato 'my-web' ed esponi la porta HTTP del container alla porta 8080 dell'host.
docker service create --name my-web --publish 8080:80 nginx:1.13-alpine
E una volta creato, controlla utilizzando il comando Docker Service di seguito.
docker service ls
E otterrai il risultato come mostrato di seguito.
Il servizio Nginx è stato creato e distribuito nel cluster swarm come servizio denominato 'my-web', è basato su Nginx Alpine Linux, espone la porta HTTP del servizio container alla porta '8080' sull'host e ha solo 1 replica.
Repliche e scalabilità del servizio
Ora faremo repliche per il servizio 'my-web'. Realizzeremo 2 repliche del servizio 'my-web', in modo che il servizio sia accessibile sui nodi 'manager' e 'worker01'.
Per replicare il servizio 'my-web', esegui il comando seguente.
docker service scale my-web=2
E al termine, controlla di nuovo utilizzando il comando del servizio Docker.
docker service ls
E ora il server ha 2 repliche.
Apri il tuo browser web e digita l'indirizzo IP del nodo manager con la porta 8080.
http://manager:8080/
E otterrai la pagina predefinita di Nginx.
Di seguito è riportato il risultato del nodo 'worker01'.
http://lavoratore01:8080/
Lo Swarm Cluster è stato creato e il servizio Nginx è stato completato e distribuito nel nostro Swarm Cluster.