El balanceig de càrrega és una tècnica fonamental en el disseny de sistemes escalables. Permet distribuir el tràfic de xarxa o les càrregues de treball entre diversos servidors per garantir que cap servidor es sobrecarregui, millorant així la disponibilitat i la capacitat de resposta del sistema.
Objectius del Balanceig de Càrrega
- Distribuir la càrrega de treball: Evitar que un sol servidor es converteixi en un coll d'ampolla.
- Millorar la disponibilitat: Assegurar que el sistema continuï funcionant fins i tot si un o més servidors fallen.
- Optimitzar el rendiment: Reduir el temps de resposta i augmentar la velocitat de processament.
Tipus de Balancejadors de Càrrega
Hi ha diversos tipus de balancejadors de càrrega, cadascun amb les seves pròpies característiques i usos específics:
-
Balancejadors de Càrrega de Programari:
- Nginx: Un servidor web que també pot actuar com a balancejador de càrrega.
- HAProxy: Un balancejador de càrrega de codi obert molt utilitzat per la seva alta disponibilitat i rendiment.
- Traefik: Un balancejador de càrrega modern que s'integra bé amb entorns de contenidors com Docker i Kubernetes.
-
Balancejadors de Càrrega de Maquinari:
- F5 Networks: Ofereix solucions de balanceig de càrrega de maquinari amb funcionalitats avançades.
- Citrix ADC: Un altre exemple de balancejador de càrrega de maquinari amb capacitats de seguretat i optimització.
-
Balancejadors de Càrrega al Núvol:
- AWS Elastic Load Balancer (ELB): Un servei de balanceig de càrrega gestionat per Amazon Web Services.
- Google Cloud Load Balancing: Un servei de balanceig de càrrega gestionat per Google Cloud Platform.
- Azure Load Balancer: Un servei de balanceig de càrrega gestionat per Microsoft Azure.
Algoritmes de Balanceig de Càrrega
Els balancejadors de càrrega utilitzen diferents algoritmes per distribuir el tràfic. Alguns dels més comuns són:
- Round Robin: Distribueix les sol·licituds de manera seqüencial entre els servidors disponibles.
- Least Connections: Assigna la sol·licitud al servidor amb menys connexions actives.
- IP Hash: Assigna les sol·licituds basant-se en l'adreça IP del client.
- Weighted Round Robin: Similar al Round Robin, però assigna més sol·licituds als servidors amb més capacitat.
Implementació Pràctica amb HAProxy
A continuació, es mostra un exemple de configuració bàsica de HAProxy per balancejar la càrrega entre dos servidors web.
Exemple de Configuració de HAProxy
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 roundrobin server server1 192.168.1.1:80 check server server2 192.168.1.2:80 check
Explicació del Codi
- global: Configuració global de HAProxy.
- defaults: Configuració per defecte per a totes les seccions.
- frontend http_front: Defineix el punt d'entrada per a les sol·licituds HTTP.
- backend http_back: Defineix els servidors de backend i l'algoritme de balanceig de càrrega (roundrobin en aquest cas).
Exercici Pràctic
Exercici 1: Configuració de Balanceig de Càrrega amb Nginx
- Instal·la Nginx en un servidor.
- Configura Nginx per balancejar la càrrega entre dos servidors web.
Solució
http { upstream backend { server 192.168.1.1; server 192.168.1.2; } server { listen 80; location / { proxy_pass http://backend; } } }
Explicació del Codi
- upstream backend: Defineix els servidors de backend.
- server: Configura el servidor Nginx per escoltar a la porta 80 i redirigir les sol·licituds al grup de backend.
Errors Comuns i Consells
- No configurar la verificació de salut: Assegura't que els servidors de backend estiguin configurats per verificar la seva salut. Això permet al balancejador de càrrega evitar enviar tràfic a servidors que no estan disponibles.
- No ajustar els temps d'espera: Configura adequadament els temps d'espera per evitar que les connexions es quedin penjades.
- No monitoritzar el rendiment: Utilitza eines de monitoratge per assegurar-te que el balancejador de càrrega està funcionant correctament i per identificar possibles colls d'ampolla.
Conclusió
El balanceig de càrrega és una tècnica essencial per garantir l'escalabilitat, la disponibilitat i el rendiment dels sistemes tecnològics. Mitjançant l'ús de balancejadors de càrrega de programari, maquinari o al núvol, i l'aplicació d'algoritmes adequats, es pot distribuir eficientment la càrrega de treball entre diversos servidors. La configuració correcta i el monitoratge constant són claus per a l'èxit del balanceig de càrrega en qualsevol arquitectura tecnològica.
Curs d'Arquitectura Tecnològica
Mòdul 1: Fonaments de l'Arquitectura Tecnològica
- Introducció a l'Arquitectura Tecnològica
- Principis de Disseny de Sistemes
- Components d'una Arquitectura Tecnològica
- Models d'Arquitectura
Mòdul 2: Disseny de Sistemes Escalables
- Conceptes d'Escalabilitat
- Patrons de Disseny Escalable
- Balanceig de Càrrega
- Caché i Emmagatzematge en Memòria
Mòdul 3: Seguretat en l'Arquitectura Tecnològica
Mòdul 4: Eficiència i Optimització
- Optimització de Recursos
- Monitoratge i Manteniment
- Automatització de Processos
- Avaluació de Rendiment
Mòdul 5: Gestió de l'Arquitectura Tecnològica
- Governança de TI
- Gestió de Projectes Tecnològics
- Documentació i Comunicació
- Avaluació i Millora Contínua