El equilibrio de carga es una técnica o un mecanismo que distribuye las solicitudes entrantes al grupo de servidores del backend. Se utiliza para aumentar la disponibilidad, confiabilidad y escalabilidad de las aplicaciones. Permite agregar muchos servidores cuando aumenta el tráfico.
Nginx admite varios métodos para el equilibrio de carga. Te damos una breve explicación sobre cada uno de ellos:
- IP-hash: este método utiliza un algoritmo que toma la dirección IP de origen y destino del cliente y el servidor para generar una clave hash única. IT permite la persistencia de la sesión.
- Round-robin: es el método predeterminado para el equilibrio de carga. Indica al equilibrador de carga que vuelva a la parte superior de la lista y se repita de nuevo.
- "El Menos conectado": este método utiliza un algoritmo de equilibrio de carga dinámico. Redistribuye las conexiones al miembro del grupo que administran la menor cantidad de conexiones abiertas en el momento en que se recibe la nueva solicitud de conexión.
En este tutorial, aprenderemos cómo configurar un equilibrio de carga de Nginx en el servidor Ubuntu 20.04.
¡Empecemos!
Requisitos
- Tres servidores corriendo con Ubuntu 20.04.
- Un nombre de dominio válido que apunte a la IP del servidor balancedor de carga.
- Una contraseña de root en cada servidor.
Para el propósito de este artículo, utilizaremos la siguiente configuración:
- Balanceador de carga Nginx: 192.168.10.10
- App servidor1 : 192.168.10.11
- App servidor2 : 192.168.10.12
Instalación del Servidor Nginx
Primero, deberás instalar Nginx en todos los servidores. Puedes hacerlos con el siguiente comando:
# apt-get install nginx -y
Una vez instalado, inicia el servicio Nginx y habilítalo para que se inicie al reiniciar el sistema:
# systemctl start nginx
# systemctl enable nginx
Configuración de los Servidores de aplicaciones
A continuación, deberás configurar ambos servidores de aplicaciones.
En el primer servidor de aplicaciones, elimina el archivo index.html predeterminado y crea uno nuevo:
# rm -rf /usr/share/nginx/html/index.html
# nano /usr/share/nginx/html/index.html
Añade las siguientes líneas:
<html>
<title>First Application Server</title>
<body>
This is my first application server
</body>
</html>
Guarda y cierra el archivo.
En el segundo servidor de aplicaciones, elimina el archivo index.html predeterminado y crea uno nuevo:
# rm -rf /usr/share/nginx/html/index.html
# nano /usr/share/nginx/html/index.html
Añade las siguientes líneas:
<html>
<title>Second Application Server</title>
<body>
This is my second application server
</body>
</html>
Guarda y cierra el archivo.
Configura un balanceador de carga Nginx
Para continuar, deberás configurar un servidor balanceador de carga que distribuya la carga entre ambos servidores de aplicaciones.
Primero, elimina el archivo de configuración predeterminado de Nginx y crea un nuevo archivo de configuración del balanceador de carga:
# rm -rf /etc/nginx/sites-enabled/default
# nano /etc/nginx/conf.d/load-balancing.conf
Añade las siguientes líneas:
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;
}
}
Guarda y cierra el archivo cuando hayas terminado.
Inserta las siguientes líneas si quieres usar el método Least_conn:
upstream backend {
least_conn;
server 192.168.10.11;
server 192.168.10.12;
}
Inserta las siguientes líneas si quieres usar el método Ip_hash:
upstream backend {
ip_hash;
server 192.168.10.11;
server 192.168.10.12;
}
Guarda y cierra el archivo y luego verifica Nginx para detectar cualquier error de sintaxis con el siguiente comando:
# nginx -t
Deberías obtener el siguiente resultado:
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
Para terminar, reinicia el servicio Nginx para aplicar los cambios:
# systemctl restart nginx
Verifica el Balanceo de Carga
Ahora abre tu navegador web y accede al servidor de equilibrio de carga utilizando la URL http://loadbalancing.example.com. Serás redirigido al servidor de aplicaciones1:
A continuación, actualiza la página continuamente después de un tiempo, tu aplicación debería cargarse desde el segundo servidor de aplicaciones como se muestra a continuación:
Conclusión
¡Felicidades! Has configurado con éxito un balanceador de carga Nginx en el servidor Ubuntu 20.04.
Ya puedes agregar varios servidores en el balanceador de carga para distribuir la carga entre ellos.