El balanceig de càrrega és una tècnica essencial per distribuir el tràfic de xarxa a través de múltiples servidors per garantir la disponibilitat, la fiabilitat i la capacitat de resposta de les aplicacions web. NGINX és àmpliament utilitzat com a balancejador de càrrega gràcies a la seva eficiència i flexibilitat.
Conceptes clau
- Balancejador de càrrega: Un dispositiu o programari que distribueix el tràfic de xarxa entre diversos servidors.
- Backend: Els servidors que reben el tràfic distribuït pel balancejador de càrrega.
- Algorismes de balanceig: Mètodes utilitzats per determinar com es distribueix el tràfic entre els servidors.
Algorismes de balanceig de càrrega
NGINX suporta diversos algorismes de balanceig de càrrega. A continuació es presenten els més comuns:
- Round Robin: Distribueix les sol·licituds de manera seqüencial entre els servidors.
- Least Connections: Envia les sol·licituds al servidor amb menys connexions actives.
- IP Hash: Assigna les sol·licituds basant-se en l'adreça IP del client, garantint que les sol·licituds del mateix client vagin sempre al mateix servidor.
Configurant el balanceig de càrrega
Exemple de configuració bàsica
A continuació es mostra un exemple de configuració de NGINX com a balancejador de càrrega utilitzant l'algorisme 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; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
Explicació del codi
- upstream backend: Defineix un grup de servidors backend. En aquest cas,
backend1.example.com
,backend2.example.com
ibackend3.example.com
. - server: Defineix un servidor virtual que escolta a la porta 80.
- location /: Defineix una ubicació que redirigeix totes les sol·licituds al grup de servidors
backend
utilitzantproxy_pass
. - proxy_set_header: Afegeix capçaleres HTTP per mantenir informació sobre el client original.
Exemple amb Least Connections
Per utilitzar l'algorisme Least Connections, simplement afegeix la directiva least_conn
al bloc upstream
:
http { upstream backend { least_conn; server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
Exemple amb IP Hash
Per utilitzar l'algorisme IP Hash, afegeix la directiva ip_hash
al bloc upstream
:
http { upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
Exercicis pràctics
Exercici 1: Configuració bàsica de balanceig de càrrega
- Configura NGINX per utilitzar l'algorisme Round Robin amb tres servidors backend.
- Verifica que les sol·licituds es distribueixen de manera equitativa entre els servidors.
Solució
http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
Exercici 2: Utilitzant Least Connections
- Modifica la configuració anterior per utilitzar l'algorisme Least Connections.
- Verifica que les sol·licituds es distribueixen al servidor amb menys connexions actives.
Solució
http { upstream backend { least_conn; server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
Errors comuns i consells
- Error 502 Bad Gateway: Aquest error sovint indica que NGINX no pot comunicar-se amb els servidors backend. Verifica que els servidors backend estan en funcionament i que les adreces i ports són correctes.
- Configuració incorrecta de capçaleres: Assegura't d'afegir les capçaleres necessàries (
proxy_set_header
) per mantenir la informació del client original.
Conclusió
El balanceig de càrrega amb NGINX és una tècnica poderosa per millorar la disponibilitat i la capacitat de resposta de les aplicacions web. Amb diversos algorismes de balanceig disponibles, NGINX ofereix flexibilitat per adaptar-se a diferents necessitats i escenaris. Practicar amb diferents configuracions i comprendre els errors comuns t'ajudarà a dominar aquesta funcionalitat essencial.
Curs de NGINX
Mòdul 1: Introducció a NGINX
Mòdul 2: NGINX com a servidor web
- Servint contingut estàtic
- Llistats de directoris
- Pàgines d'error personalitzades
- Registre i formats de registre