Introducció

Docker Swarm és una eina d'orquestració de contenidors nativa de Docker que permet gestionar un clúster de nodes Docker com una sola entitat. Amb Docker Swarm, pots desplegar, gestionar i escalar aplicacions contenidoritzades de manera eficient.

Objectius d'aquest tema:

  • Entendre què és Docker Swarm i els seus components clau.
  • Aprendre a configurar un clúster Docker Swarm.
  • Gestionar serveis i tasques dins d'un clúster Swarm.
  • Escalar serveis i gestionar l'estat dels nodes.

Components clau de Docker Swarm

  1. Node: Una instància de Docker que forma part del clúster Swarm. Pot ser un node gestor (manager) o un node treballador (worker).
  2. Clúster: Un conjunt de nodes que treballen junts sota la gestió de Docker Swarm.
  3. Servei: Una definició d'una aplicació que s'executa en el clúster Swarm. Un servei pot tenir múltiples rèpliques.
  4. Tasca: Una instància d'un contenidor que forma part d'un servei.

Configurant un clúster Docker Swarm

Pas 1: Inicialitzar el clúster Swarm

Per inicialitzar un clúster Swarm, executa la següent comanda en el node que vols designar com a gestor:

docker swarm init --advertise-addr <IP_ADDRESS>

Pas 2: Afegir nodes al clúster

Un cop inicialitzat el clúster, pots afegir nodes treballadors o gestors. Per obtenir el token d'unió per als nodes treballadors, executa:

docker swarm join-token worker

Això generarà una comanda que hauràs d'executar en els nodes treballadors per unir-los al clúster. Per exemple:

docker swarm join --token <WORKER_TOKEN> <MANAGER_IP>:2377

Pas 3: Verificar els nodes del clúster

Per veure els nodes que formen part del clúster, utilitza:

docker node ls

Gestionant serveis en Docker Swarm

Crear un servei

Per crear un servei en Docker Swarm, utilitza la comanda docker service create. Per exemple, per crear un servei Nginx amb 3 rèpliques:

docker service create --name my_nginx --replicas 3 -p 80:80 nginx

Llistar serveis

Per veure els serveis que s'estan executant en el clúster, utilitza:

docker service ls

Escalar un servei

Per escalar un servei, pots utilitzar la comanda docker service scale. Per exemple, per escalar el servei my_nginx a 5 rèpliques:

docker service scale my_nginx=5

Actualitzar un servei

Per actualitzar la imatge d'un servei, utilitza la comanda docker service update. Per exemple, per actualitzar el servei my_nginx a una nova versió de Nginx:

docker service update --image nginx:latest my_nginx

Gestionant l'estat dels nodes

Draining un node

Per treure un node del clúster sense interrompre els serveis, pots posar el node en mode "drain":

docker node update --availability drain <NODE_ID>

Tornar un node a l'estat actiu

Per tornar un node a l'estat actiu, utilitza:

docker node update --availability active <NODE_ID>

Exercicis pràctics

Exercici 1: Crear un clúster Swarm

  1. Inicialitza un clúster Swarm en un node gestor.
  2. Afegeix dos nodes treballadors al clúster.
  3. Verifica que els nodes s'han unit correctament.

Exercici 2: Gestionar serveis en Docker Swarm

  1. Crea un servei Nginx amb 3 rèpliques.
  2. Escala el servei a 5 rèpliques.
  3. Actualitza el servei a una nova versió de Nginx.
  4. Posa un node en mode "drain" i verifica que les tasques es redistribueixen.

Solucions als exercicis

Solució a l'Exercici 1

  1. Inicialitzar el clúster Swarm:
docker swarm init --advertise-addr <IP_ADDRESS>
  1. Obtenir el token d'unió per als nodes treballadors:
docker swarm join-token worker
  1. Unir els nodes treballadors:
docker swarm join --token <WORKER_TOKEN> <MANAGER_IP>:2377
  1. Verificar els nodes:
docker node ls

Solució a l'Exercici 2

  1. Crear el servei Nginx:
docker service create --name my_nginx --replicas 3 -p 80:80 nginx
  1. Escalar el servei:
docker service scale my_nginx=5
  1. Actualitzar el servei:
docker service update --image nginx:latest my_nginx
  1. Posa un node en mode "drain":
docker node update --availability drain <NODE_ID>

Conclusió

Docker Swarm és una eina poderosa per a l'orquestració de contenidors, permetent gestionar i escalar aplicacions de manera eficient. Amb els coneixements adquirits en aquest tema, ara pots configurar un clúster Swarm, gestionar serveis i escalar aplicacions segons les necessitats. En el proper tema, explorarem Kubernetes, una altra eina d'orquestració de contenidors àmpliament utilitzada.

© Copyright 2024. Tots els drets reservats