L’equilibratge de càrrega és una tècnica o un mecanisme que distribueix les sol·licituds entrants al grup de servidors del backend. S'utilitza per augmentar la disponibilitat, la fiabilitat i l'escalabilitat de les aplicacions. Permet afegir molts servidors quan augmenta el trànsit.
Nginx admet diversos mètodes per a l'equilibratge de càrrega. Et donem una breu explicació de cadascun:
- IP-hash: aquest mètode utilitza un algorisme que pren l'adreça IP d'origen i de destinació del client i del servidor per generar una clau hash única. Això permet la persistència de la sessió.
- Round-robin: és el mètode predeterminat per a l'equilibratge de càrrega. Indica a l'equilibrador de càrrega que torni al principi de la llista i es repeteixi de nou.
- "El menys connectat": aquest mètode utilitza un algorisme d'equilibratge de càrrega dinàmic. Redistribueix les connexions al membre del grup que gestiona el nombre més baix de connexions obertes en el moment en què es rep la nova sol·licitud de connexió.
En aquest tutorial, aprendrem com configurar un equilibratge de càrrega de Nginx al servidor Ubuntu 20.04.
Comencem!
Requisits
- Tres servidors que executin Ubuntu 20.04.
- Un nom de domini vàlid que apunti a la IP del servidor equilibrador de càrrega.
- Una contrasenya de root a cada servidor.
Per a aquest article, utilitzarem la configuració següent:
- Equilibrador de càrrega Nginx: 192.168.10.10
- App servidor1 : 192.168.10.11
- App servidor2 : 192.168.10.12
Instal·lació del servidor Nginx
Primer, hauràs d'instal·lar Nginx a tots els servidors. Pots fer-ho amb l'ordre següent:
# apt-get install nginx -y
Un cop instal·lat, inicia el servei Nginx i habilita'l perquè s'iniciï en reiniciar el sistema:
# systemctl start nginx
# systemctl enable nginx
Configuració dels servidors d'aplicacions
A continuació, hauràs de configurar tots dos servidors d'aplicacions.
Al primer servidor d'aplicacions, elimina el fitxer index.html predeterminat i crea'n un de nou:
# rm -rf /usr/share/nginx/html/index.html
# nano /usr/share/nginx/html/index.html
Afegeix les línies següents:
<html>
<title>First Application Server</title>
<body>
This is my first application server
</body>
</html>
Desa i tanca el fitxer.
Al segon servidor d'aplicacions, elimina el fitxer index.html predeterminat i crea'n un de nou:
# rm -rf /usr/share/nginx/html/index.html
# nano /usr/share/nginx/html/index.html
Afegeix les línies següents:
<html>
<title>Second Application Server</title>
<body>
This is my second application server
</body>
</html>
Desa i tanca el fitxer.
Configura un equilibrador de càrrega Nginx
Per continuar, hauràs de configurar un servidor equilibrador de càrrega que distribueixi la càrrega entre tots dos servidors d'aplicacions.
Primer, elimina el fitxer de configuració predeterminat de Nginx i crea un fitxer de configuració nou de l'equilibrador de càrrega:
# rm -rf /etc/nginx/sites-enabled/default
# nano /etc/nginx/conf.d/load-balancing.conf
Afegeix les línies següents:
upstream backend {
server 192.168.10.11;
server 192.168.10.12;
}
server {
listen 80;
server_name loadbalancing.example.com;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://backend;
}
}
Desa i tanca el fitxer quan hagis acabat.
Insereix les línies següents si vols utilitzar el mètode Least_conn:
upstream backend {
least_conn;
server 192.168.10.11;
server 192.168.10.12;
}
Insereix les línies següents si vols utilitzar el mètode Ip_hash:
upstream backend {
ip_hash;
server 192.168.10.11;
server 192.168.10.12;
}
Desa i tanca el fitxer i després comprova Nginx per detectar qualsevol error de sintaxi amb l'ordre següent:
# nginx -t
Hauries d'obtenir el resultat següent:
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
Per acabar, reinicia el servei Nginx per aplicar els canvis:
# systemctl restart nginx
Comprova l'equilibratge de càrrega
Ara obre el navegador web i accedeix al servidor d'equilibratge de càrrega utilitzant l'URL http://loadbalancing.example.com. Se't redirigirà al servidor d'aplicacions1:
A continuació, actualitza la pàgina contínuament; al cap d'un temps, l'aplicació s'hauria de carregar des del segon servidor d'aplicacions, tal com es mostra a continuació:
Conclusió
Enhorabona! Has configurat correctament un equilibrador de càrrega Nginx al servidor Ubuntu 20.04.
Ja pots afegir diversos servidors a l'equilibrador de càrrega per distribuir la càrrega entre ells.