En aquest tema, aprendrem com escalar aplicacions Docker i com implementar equilibrat de càrrega per assegurar-nos que les nostres aplicacions siguin robustes i puguin gestionar un gran volum de trànsit. Aquestes tècniques són essencials per a qualsevol aplicació que es desplegui en producció.
- Introducció a l'escalat
Què és l'escalat?
L'escalat és el procés d'augmentar o disminuir els recursos assignats a una aplicació per gestionar la càrrega de treball. Hi ha dos tipus principals d'escalat:
- Escalat vertical: Augmentar els recursos (CPU, memòria) d'un únic contenidor.
- Escalat horitzontal: Augmentar el nombre de rèpliques d'un contenidor per distribuir la càrrega.
Avantatges de l'escalat horitzontal
- Alta disponibilitat: Si un contenidor falla, altres rèpliques poden continuar servint les sol·licituds.
- Distribució de càrrega: Les sol·licituds es distribueixen entre múltiples rèpliques, millorant el rendiment.
- Escalant contenidors amb Docker Swarm
Docker Swarm és una eina d'orquestració que permet gestionar múltiples contenidors com un únic clúster. A continuació, veurem com escalar serveis utilitzant Docker Swarm.
Configurant Docker Swarm
-
Inicialitzar un Swarm:
docker swarm init
-
Afegir nodes al Swarm:
docker swarm join --token <token> <manager-ip>:2377
Escalant un servei
-
Crear un servei:
docker service create --name web --replicas 1 -p 80:80 nginx
-
Escalar el servei:
docker service scale web=5
-
Verificar l'estat del servei:
docker service ls
- Equilibrat de càrrega
L'equilibrat de càrrega distribueix les sol·licituds entrants entre múltiples rèpliques d'un servei per assegurar-se que cap rèplica es sobrecarregui.
Equilibrat de càrrega amb Docker Swarm
Docker Swarm inclou un equilibrador de càrrega integrat que distribueix automàticament les sol·licituds entre les rèpliques d'un servei.
Exemple pràctic
-
Crear un servei amb múltiples rèpliques:
docker service create --name web --replicas 3 -p 80:80 nginx
-
Verificar que l'equilibrador de càrrega està funcionant:
- Obre un navegador i accedeix a
http://<manager-ip>
. - Refresca la pàgina diverses vegades i observa com les sol·licituds es distribueixen entre les rèpliques.
- Obre un navegador i accedeix a
- Escalat i equilibrat de càrrega amb Kubernetes
Kubernetes és una altra eina d'orquestració que ofereix funcionalitats avançades per a l'escalat i l'equilibrat de càrrega.
Escalant amb Kubernetes
-
Crear un Deployment:
apiVersion: apps/v1 kind: Deployment metadata: name: web spec: replicas: 3 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: nginx image: nginx ports: - containerPort: 80
-
Aplicar el Deployment:
kubectl apply -f deployment.yaml
-
Escalar el Deployment:
kubectl scale deployment web --replicas=5
Equilibrat de càrrega amb Kubernetes
Kubernetes utilitza serveis per equilibrar la càrrega entre rèpliques de pods.
-
Crear un Service:
apiVersion: v1 kind: Service metadata: name: web spec: selector: app: web ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
-
Aplicar el Service:
kubectl apply -f service.yaml
- Exercicis pràctics
Exercici 1: Escalant amb Docker Swarm
- Inicialitza un Swarm.
- Crea un servei
web
amb 2 rèpliques utilitzant la imatgenginx
. - Escala el servei a 4 rèpliques.
- Verifica que l'equilibrador de càrrega distribueix les sol·licituds entre les rèpliques.
Exercici 2: Escalant amb Kubernetes
- Crea un Deployment
web
amb 3 rèpliques utilitzant la imatgenginx
. - Escala el Deployment a 5 rèpliques.
- Crea un Service per equilibrar la càrrega entre les rèpliques del Deployment.
- Resum
En aquest tema, hem après com escalar aplicacions Docker i com implementar equilibrat de càrrega utilitzant Docker Swarm i Kubernetes. Hem vist com aquestes tècniques poden millorar la disponibilitat i el rendiment de les nostres aplicacions. A més, hem practicat amb exemples pràctics per consolidar els conceptes apresos. En el proper tema, explorarem altres eines i tècniques avançades per gestionar aplicacions Docker en producció.
Docker: De Principiant a Avançat
Mòdul 1: Introducció a Docker
- Què és Docker?
- Instal·lant Docker
- Arquitectura de Docker
- Comandes bàsiques de Docker
- Entenent les imatges de Docker
- Creant el teu primer contenidor Docker
Mòdul 2: Treballant amb imatges Docker
- Docker Hub i Repositoris
- Construint imatges Docker
- Conceptes bàsics de Dockerfile
- Gestionant imatges Docker
- Etiquetant i pujant imatges
Mòdul 3: Contenidors Docker
- Executant contenidors
- Cicle de vida del contenidor
- Gestionant contenidors
- Xarxes a Docker
- Persistència de dades amb volums
Mòdul 4: Docker Compose
- Introducció a Docker Compose
- Definint serveis a Docker Compose
- Comandes de Docker Compose
- Aplicacions multi-contenidor
- Variables d'entorn a Docker Compose
Mòdul 5: Conceptes avançats de Docker
- Exploració profunda de xarxes Docker
- Opcions d'emmagatzematge de Docker
- Millors pràctiques de seguretat de Docker
- Optimitzant imatges Docker
- Registre i monitoratge de Docker
Mòdul 6: Docker en producció
- CI/CD amb Docker
- Orquestrant contenidors amb Docker Swarm
- Introducció a Kubernetes
- Desplegant contenidors Docker a Kubernetes
- Escalat i equilibrat de càrrega