El balanceig de càrrega és una tècnica fonamental en el disseny d'arquitectures de sistemes escalables i robustes. Aquesta tècnica permet distribuir de manera eficient el tràfic de xarxa o les càrregues de treball entre múltiples servidors, assegurant que cap servidor individual es sobrecarregui i que els recursos es utilitzin de manera òptima.

Conceptes Clau

  1. Balancejador de Càrrega (Load Balancer): Dispositiu o programari que distribueix el tràfic entrant entre diversos servidors.
  2. Nodes: Els servidors que reben el tràfic distribuït pel balancejador de càrrega.
  3. Algoritmes de Balanceig de Càrrega: Regles que determinen com es distribueix el tràfic entre els nodes.

Tipus de Balancejadors de Càrrega

  1. Balancejadors de Càrrega de Capa 4 (Transport Layer)

Operen en la capa de transport del model OSI (TCP/UDP). Distribueixen el tràfic basant-se en la informació de les capçaleres de transport, com ara adreces IP i ports.

Exemples:

  • AWS Elastic Load Balancer (ELB)
  • HAProxy

  1. Balancejadors de Càrrega de Capa 7 (Application Layer)

Operen en la capa d'aplicació del model OSI. Distribueixen el tràfic basant-se en informació de les capçaleres d'aplicació, com ara URL, cookies, o capçaleres HTTP.

Exemples:

  • NGINX
  • Traefik

Algoritmes de Balanceig de Càrrega

  1. Round Robin

Distribueix les sol·licituds de manera seqüencial entre els servidors disponibles.

Sol·licitud 1 -> Servidor 1
Sol·licitud 2 -> Servidor 2
Sol·licitud 3 -> Servidor 3
Sol·licitud 4 -> Servidor 1

  1. Least Connections

Assigna la sol·licitud al servidor amb el menor nombre de connexions actives.

  1. IP Hash

Utilitza un hash de l'adreça IP del client per determinar quin servidor ha de gestionar la sol·licitud.

  1. Weighted Round Robin

Similar al Round Robin, però permet assignar pesos als servidors per distribuir el tràfic de manera no uniforme.

Implementació Pràctica

Exemple amb NGINX

A continuació es mostra un exemple de configuració d'un balancejador de càrrega amb NGINX utilitzant l'algoritme Round Robin.

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
        }
    }
}

Explicació del Codi

  • upstream backend: Defineix un grup de servidors backend.
  • server backend1.example.com: Defineix cada servidor backend.
  • proxy_pass http://backend: Redirigeix les sol·licituds al grup de servidors backend.

Exercici Pràctic

Configuració d'un Balancejador de Càrrega amb HAProxy

  1. Instal·la HAProxy en el teu servidor.
  2. Configura HAProxy per utilitzar l'algoritme Least Connections.

Configuració Exemple:

global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000

frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    balance leastconn
    server server1 192.168.1.1:80 check
    server server2 192.168.1.2:80 check
    server server3 192.168.1.3:80 check

Explicació del Codi

  • frontend http_front: Defineix la configuració del frontend, que escolta en el port 80.
  • default_backend http_back: Defineix el backend per defecte.
  • balance leastconn: Utilitza l'algoritme Least Connections per distribuir el tràfic.
  • server server1 192.168.1.1:80 check: Defineix els servidors backend i habilita la verificació de salut.

Errors Comuns i Consells

  1. No Configurar la Verificació de Salut: Assegura't que els servidors backend es verifiquin periòdicament per evitar enviar tràfic a servidors inactius.
  2. Sobrecàrrega d'un Sol Servidor: Utilitza algoritmes de balanceig adequats per evitar la sobrecàrrega d'un sol servidor.
  3. No Monitoritzar el Rendiment: Implementa eines de monitorització per assegurar-te que el balancejador de càrrega funciona correctament i optimitza segons sigui necessari.

Conclusió

El balanceig de càrrega és una tècnica essencial per assegurar la disponibilitat i escalabilitat dels sistemes. Comprendre els diferents tipus de balancejadors de càrrega i algoritmes de distribució de tràfic és crucial per dissenyar arquitectures robustes i eficients. Amb les eines i configuracions adequades, pots millorar significativament el rendiment i la resiliència del teu sistema.

Arquitectures de Sistemes: Principis i Pràctiques per Dissenyar Arquitectures Tecnològiques Robustes i Escalables

Mòdul 1: Introducció a les Arquitectures de Sistemes

Mòdul 2: Principis de Disseny d'Arquitectures

Mòdul 3: Components d'una Arquitectura de Sistemes

Mòdul 4: Escalabilitat i Rendiment

Mòdul 5: Seguretat en Arquitectures de Sistemes

Mòdul 6: Eines i Tecnologies

Mòdul 7: Casos d'Estudi i Exemples Pràctics

Mòdul 8: Tendències i Futur de les Arquitectures de Sistemes

© Copyright 2024. Tots els drets reservats