La modalità Docker Swarm è uno strumento di orchestrazione e clustering di un contenitore per la gestione dell'host Docker. La modalità Docker Swarm è la parte nativa del motore Docker. Significa che non devi installare nulla tranne il motore Docker perché la modalità sciame Docker fa parte del motore Docker.
La modalità sciame Docker è stata introdotta in Docker 1.12. Alcuni dei principali vantaggi della modalità sciame Docker sono l'autoguarigione del contenitore , bilanciamento del carico , aumento della capacità del contenitore e ridimensionare , scoperta del servizio e aggiornamenti continui . Negli ultimi due articoli abbiamo discusso i seguenti argomenti
- Come installare Docker su CentOS 7
- Come creare immagini Docker Container con Dockerfile
In questo articolo illustreremo come installare e configurare Docker Swarm Mode su CentOS 7.x / RHEL 7.x Per la dimostrazione utilizzerò 3 CentOS 7.x o RHEL 7.x Server su cui installerò il motore Docker. Di cui due server fungeranno da Motore Docker o Nodo di lavoro e uno agirà come un manager . Nel mio caso sto usando i seguenti:
- dkmanager.example.com (172.168.10.70 ) – Agirà come manager che gestirà il motore Docker o gli host o il nodo di lavoro e funzionerà anche come motore Docker.
- workernode1.example.com ( 172.168.10.80 ) – agirà sul motore Docker o sul nodo di lavoro
- workernode2.example.com ( 172.168.10.90 ) – agirà sul motore Docker o sul nodo di lavoro
Aggiorna le seguenti righe nel file /etc/hosts su tutti i server
172.168.10.70 dkmanager.example.com dkmanager172.168.10.80 workernode1.example.com workernode1172.168.10.90 workernode2.example.com workernode2
Passaggio:1 Installa Docker Engine su tutti gli host
Per prima cosa imposta il repository docker e quindi esegui sotto il comando su tutti gli host.
[[email protected] ~]# yum install yum-utils –y[[email protected] ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/ docker-ce.repo[[email protected] ~]# yum install docker-ce docker-ce-cli containerd.io –y[[email protected] ~]# systemctl start docker[[email protected] ~]# systemctl abilita docker
Ripeti i passaggi precedenti per workernode1 e workernode2
Nota:al momento della stesura di questo articolo era disponibile la versione Docker 1.13.
Passaggio:2 Apri le porte del firewall sui nodi Manager e Worker
Apri le seguenti porte nel firewall del sistema operativo su Docker Manager utilizzando i seguenti comandi
[[email protected] ~]# firewall-cmd --permanent --add-port=2376/tcpsuccess[[email protected] ~]# firewall-cmd --permanent --add-port=2377/tcpsuccess[ [email protected] ~]# firewall-cmd --permanent --add-port=7946/tcpsuccess[[email protected]ager ~]# firewall-cmd --permanent --add-port=7946/udpsuccess[[email protected] ] ~]# firewall-cmd --permanent --add-port=4789/udpsuccess[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcpsuccess[[email protected] ~]# firewall-cmd --reloadsuccess[[email protected] ~]#
Riavvia il servizio Docker su Docker Manager
[[email protected] ~]# systemctl restart docker
Apri le seguenti porte su ciascun nodo di lavoro e riavvia il servizio Docker
~]# firewall-cmd --permanent --add-port=2376/tcp~]# firewall-cmd --permanent --add-port=7946/tcp~]# firewall-cmd --permanent -- add-port=7946/udp~]# firewall-cmd --permanent --add-port=4789/udp~]# firewall-cmd --permanent --add-port=80/tcp~]# firewall-cmd - -reload~]# systemctl riavvia la finestra mobile
Passaggio:3 Inizializza lo swarm o il cluster usando il comando "docker swarm init"
Esegui il comando seguente dal nodo manager(dkmanager) per inizializzare il cluster.
[[email protected] ~]# docker swarm init --advertise-addr 172.168.10.70
Questo comando renderà il nostro nodo un nodo manager e stiamo anche pubblicizzando l'indirizzo IP del manager nel comando sopra in modo che il nodo slave o di lavoro possa unirsi al cluster.
Esegui il comando seguente per verificare lo stato del gestore e per visualizzare l'elenco dei nodi nel tuo cluster
[[email protected] ~]# docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUSn64oy2sml1w188ps109mai67b * dkmanager.example.com Pronto Attivo [e Leader] ~#preted Possiamo anche utilizzare le "informazioni docker ” comando per verificare lo stato di swarm
Passaggio:3 aggiungi nodi di lavoro allo sciame o al cluster
Per aggiungere nodi di lavoro allo swarm o al cluster, esegui il comando che riceviamo quando inizializziamo lo swarm. Il comando di esempio è mostrato nel passaggio 3
[[email protected] ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Questo nodo si è unito a uno swarm come worker.[protected[email] email [protetto] ~]# Docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Questo nodo si è unito a uno sciame come lavoratore.[[email protected] ~]#Verifica lo stato del nodo utilizzando il comando "docker node ls ” da Docker Manager
A questo punto la nostra modalità o cluster swarm della finestra mobile è attiva e funzionante con due nodi di lavoro. Nel prossimo passaggio vedremo come definire un servizio.
Passaggio:4 Avvio del servizio in modalità Docker Swarm
Nella modalità sciame Docker i contenitori vengono sostituiti con le parole attività e le attività (o contenitori) vengono avviate e distribuite come servizio e supponiamo di voler creare un servizio con il nome "server web" con cinque contenitori e vuoi assicurarti che lo stato desiderato dei contenitori all'interno del servizio sia cinque.
Esegui i seguenti comandi solo da Docker Manager.
[[email protected] ~]# docker service create -p 80:80 --name webserver --replicas 5 httpd7hqezhyak8jbt8idkkke8wizi[[email protected] ~]#Il comando precedente creerà un servizio con il nome "server web", in cui lo stato desiderato dei contenitori o dell'attività è 5 e i contenitori verranno avviati dall'immagine della finestra mobile "httpd “. I container verranno distribuiti sui nodi del cluster, ovvero dkmanager , workernode1 e workernode2
Elenca il servizio Docker con il comando seguente
[[email protected] ~]# docker service lsID NOME MODALITÀ REPLICHE IMAGE7hqezhyak8jb webserver replicato 5/5 httpd:latest[[email protected] ~]#Esegui il comando seguente per visualizzare lo stato del tuo servizio "server web"
[[email protected] ~]# docker service ps webserver
Come per l'output sopra, possiamo vedere che i contenitori sono distribuiti tra i nodi del cluster, incluso il nodo manager. Ora possiamo accedere alla pagina Web da qualsiasi nodo di lavoro e Docker Manager utilizzando i seguenti URL:
http:// 172.168.10.70 o http://172.168.10.80 o http://172.168.10.90
Fase:5 ora prova l'autoguarigione del contenitore
L'autoguarigione del contenitore è la caratteristica importante della modalità sciame Docker. Come suggerisce il nome, se qualcosa va storto con container , il manager si assicurerà che almeno 5 container siano in esecuzione per il servizio "webserver". Rimuoviamo il container da workernode2 e vediamo se viene avviato o meno un nuovo container.
[[email protetta] ~]# docker ps[[email protetta] ~]# docker rm a9c3d2172670 -f
Ora verifica il servizio da Docker Manager e verifica se un nuovo container viene avviato o meno
[[email protected] ~]# docker service ps webserver
Come per l'output sopra, possiamo vedere che un nuovo container viene lanciato sul nodo dkmanager perché uno dei container su workernode2 è stato rimosso
Passaggio:6 Aumentare e ridurre i contenitori associati a un servizio
Nella modalità sciame Docker possiamo aumentare e ridurre i contenitori o le attività. Aumentiamo i contenitori a 7 per il servizio "server web '
[[email protected] ~]# docker service scale webserver=7webserver ridimensionato a 7[[email protected] ~]#Verifica nuovamente lo stato del servizio con i seguenti comandi
Riduciamo il contenitore a 4 per il server web del servizio
[[email protected] ~]# docker service scale webserver=4webserver ridimensionato a 4[[email protected] ~]#Verifica di nuovo il servizio con i comandi sotto
Questo è tutto per questo articolo. Spero che tu abbia un'idea su come installare e configurare la modalità swarm docker su CentOS 7.x e RHEL 7.x. Non esitare a condividere feedback e commenti 🙂