Docker Swarm és una eina d'agrupació i programació de contenidors Docker. Amb Swarm pots establir i gestionar un grup de nodes Docker com un únic sistema virtual.
En aquest article crearàs un servei Nginx replicat en 3 nodes. L'avantatge és que pots desplegar rèpliques molt fàcilment, de manera que podràs escalar la teva infraestructura quan ho necessitis.
Per a aquest article necessitaràs 3 servidors amb Ubuntu 22.04, un serà el “Manager” des del qual controlaràs les rèpliques (el Manager també farà de node) i els altres 2 servidors seran “Workers” (nodes), en podràs desplegar tants com necessitis. La idea és muntar la infraestructura següent:
Instal·lació i configuració dels servidors
El primer que farem és actualitzar el servidor i instal·lar Docker als 3 servidors.
# apt update && apt upgrade
# apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
# install -m 0755 -d /etc/apt/keyrings
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# chmod a+r /etc/apt/keyrings/docker.gpg
# echo "deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt update
# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# systemctl is-enabled docker
# systemctl status dockerConfigura els hosts (nano /etc/hosts) als 3 servidors amb la seva IP pública (exemple):
200.234.228.230 manager01
200.234.230.228 worker01
200.234.232.71 worker02Per poder connectar els servidors hauràs d'obrir el port 2377 al FW de Clouding als 3 servidors, pots fer-ho afegint al perfil utilitzat la regla de FW següent:
Configuració per al Manager
Aquest pas només l'executarem al servidor “manager01” (substitueix-lo per la IP pública del teu servidor):
200.234.228.230Retornarà una ordre que és la que executarem al pas següent.
Configuració per als Workers
Aquest pas només el faràs als servidors “worker01” i “worker02”, serveix per afegir els servidors a Swarm (és exactament la línia que et proporcionarà l'ordre anterior, cal copiar-la directament):
# docker swarm join --token SWMTKN-1-4ptgo95auiw4azer1uy9mw223wcg5s1p39z7qojkeubiyttran-6x1yt4a0fdquxmqomm2dslexi 200.234.228.230:2377Si et dona un error de Timeout, és molt probable que es degui al tallafoc del servidor:
Swarm Visualizer
Aquest pas és opcional, et permetrà veure nodes, contenidors, serveis… des d'una interfície web. L'hauràs d'executar a “manager01”:
# apt install unzip
# wget https://github.com/dockersamples/docker-swarm-visualizer/archive/master.zip
# unzip master.zip
# mv docker-swarm-visualizer-master dockersamples
# docker run -it -d -p 5000:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizerPer poder connectar-te al web hauràs d'obrir el port 5000 al FW de Clouding al servidor master, pots fer-ho afegint al perfil utilitzat la regla de FW següent:
Creem un servei Nginx amb 3 rèpliques
Ara que ja ho tens tot a punt, pots crear el teu servei de Nginx amb 3 rèpliques:
# docker service create --name mi-web --publish 8080:80 nginx
# docker service scale mi-web=3Si accedeixes des d'un navegador a la IP pública del manager01 pel port 5000 veuràs Swarm Visualizer, en aquest cas http://46.183.119.183:5000/
Ja has arribat al final de l'article, l'avantatge d'utilitzar Swarm és que pots tenir una infraestructura escalable, podem crear més rèpliques dins d'un mateix node o afegir nodes en qualsevol moment. En el nostre exemple podrien ser diversos contenidors amb el servei Nginx que podríem balancejar seguint aquest article.
Pots trobar més informació sobre aquest tema a la documentació de Docker.
Recorda, si tens consultes sobre aquesta o qualsevol altra qüestió relacionada amb els teus servidors a Clouding, no dubtis a escriure a soporte@clouding.io Som al teu costat per al que necessitis, consulta'ns!