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ó.

  1. 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.

  1. 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

  1. Inicialitzar un Swarm:

    docker swarm init
    
  2. Afegir nodes al Swarm:

    docker swarm join --token <token> <manager-ip>:2377
    

Escalant un servei

  1. Crear un servei:

    docker service create --name web --replicas 1 -p 80:80 nginx
    
  2. Escalar el servei:

    docker service scale web=5
    
  3. Verificar l'estat del servei:

    docker service ls
    

  1. 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

  1. Crear un servei amb múltiples rèpliques:

    docker service create --name web --replicas 3 -p 80:80 nginx
    
  2. 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.

  1. 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

  1. 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
    
  2. Aplicar el Deployment:

    kubectl apply -f deployment.yaml
    
  3. 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.

  1. Crear un Service:

    apiVersion: v1
    kind: Service
    metadata:
      name: web
    spec:
      selector:
        app: web
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
  2. Aplicar el Service:

    kubectl apply -f service.yaml
    

  1. Exercicis pràctics

Exercici 1: Escalant amb Docker Swarm

  1. Inicialitza un Swarm.
  2. Crea un servei web amb 2 rèpliques utilitzant la imatge nginx.
  3. Escala el servei a 4 rèpliques.
  4. Verifica que l'equilibrador de càrrega distribueix les sol·licituds entre les rèpliques.

Exercici 2: Escalant amb Kubernetes

  1. Crea un Deployment web amb 3 rèpliques utilitzant la imatge nginx.
  2. Escala el Deployment a 5 rèpliques.
  3. Crea un Service per equilibrar la càrrega entre les rèpliques del Deployment.

  1. 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ó.

© Copyright 2024. Tots els drets reservats