Cómo usar NGINX como un equilibrador de carga HTTP en Linux

Cómo usar NGINX como un equilibrador de carga HTTP en Linux

Cuando se trata de configurar múltiples servidores de aplicaciones para redundancia, el equilibrio de carga es un mecanismo de uso común para distribuir eficientemente las solicitudes de servicio entrantes o el tráfico de red en un grupo de servidores de fondo.

El equilibrio de carga tiene varias ventajas, incluida la mayor disponibilidad de aplicaciones a través de la redundancia, una mayor confiabilidad y escalabilidad (se pueden agregar más servidores en la mezcla cuando aumenta el tráfico). También provoca un mejor rendimiento de la aplicación y muchos otros beneficios.

Leído recomendado: La guía final para asegurar, endurecer y mejorar el rendimiento del servidor web NGINX

Nginx se puede implementar como un eficiente Equilibrador de carga http Para distribuir el tráfico de red entrante y la carga de trabajo entre un grupo de servidores de aplicaciones, en cada caso devuelve la respuesta del servidor seleccionado al cliente apropiado.

Los métodos de equilibrio de carga compatibles con Nginx son:

  • round-roBin - que distribuye solicitudes a los servidores de aplicaciones de forma redonda. Se usa de forma predeterminada cuando no se especifica ningún método,
  • menos conectado - Asigna la siguiente solicitud a un servidor menos ocupado (el servidor con la menor cantidad de conexiones activas),
  • hostil - donde se utiliza una función hash para determinar qué servidor debe seleccionarse para la siguiente solicitud en función de la dirección IP del cliente. Este método permite la persistencia de la sesión (ate a un cliente a un servidor de aplicaciones en particular).

Además, puede usar pesas del servidor para influir Nginx Algoritmos de equilibrio de carga en un nivel más avanzado. Nginx También admite verificaciones de salud para marcar un servidor como falló (por una cantidad de tiempo configurable, el valor predeterminado es 10 segundos) Si su respuesta falla con un error, evita elegir ese servidor para las solicitudes entrantes posteriores por algún tiempo.

Esta guía práctica muestra cómo usar Nginx como un Equilibrador de carga http Para distribuir solicitudes de clientes entrantes entre dos servidores, cada uno tiene una instancia de la misma aplicación.

Para fines de prueba, cada instancia de la aplicación es etiquetado (en la interfaz de usuario) para indicar el servidor en el que se está ejecutando.

Configuración del entorno de prueba

Balancador de carga: 192.168.58.7 Servidor de aplicaciones 1: 192.168.58.5 Servidor de aplicaciones 2: 192.168.58.8 

En cada servidor de aplicaciones, cada instancia de la aplicación está configurada para acceder utilizando el dominio tecmintapp.lan. Suponiendo que este es un dominio completamente registrado, agregaríamos lo siguiente en la configuración de DNS.

Un récord @ 192.168.58.7 

Este registro le dice a las solicitudes del cliente dónde debe dirigir el dominio a, en este caso, el balancer de carga (192.168.58.7). El DNS A Los registros solo aceptan valores de IPv4. Alternativamente, el /etc/huéspedes El archivo en las máquinas cliente también se puede utilizar para fines de prueba, con la siguiente entrada.

192.168.58.7 tecMintapp.lan 

Configuración del equilibrio de carga Nginx en Linux

Antes de configurar el equilibrio de carga Nginx, debe instalar Nginx en su servidor utilizando el administrador de paquetes predeterminado para su distribución como se muestra.

$ sudo apt install nginx [en Debian/Ubuntu] $ sudo yum install nginx [en CentOS/RHEL] 

A continuación, cree un archivo de bloque de servidor llamado /etc/nginx/conf.d/loadbalancer.confusión (Dé un nombre de su elección).

$ sudo vi/etc/nginx/conf.d/loadbalancer.confusión 

Luego copie y pegue la siguiente configuración en él. Esta configuración predeterminada se define a la redonda, ya que no se define ningún método de equilibrio de carga.

 Backend ascendente servidor 192.168.58.5; servidor 192.168.58.8;  servidor escuchar 80 default_server; escuchar [::]: 80 default_server; server_name tecMintApp.Lan; ubicación / proxy_redirect OFF; proxy_set_header X-Real-IP $ Remote_addr; proxy_set_header x-forwarded-para $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_pass http: // backend;  

En la configuración anterior, el proxy_pass Directiva (que debe especificarse dentro de una ubicación, / en este caso) se usa para pasar una solicitud a los servidores proxy http referenciados utilizando el backend de la palabra, en el directiva aguas arriba (Se utiliza para definir un grupo de servidores). Además, las solicitudes se distribuirán entre los servidores utilizando un mecanismo de equilibrio de round-robin.

Para emplear el menor mecanismo de conexión, use la siguiente configuración

Backend ascendente MENTO_CONN; servidor 192.168.58.5; servidor 192.168.58.8;  

Y para habilitar ip_hash Mecanismo de persistencia de sesión, uso:

Backend ascendente ip_hash; servidor 192.168.58.5; servidor 192.168.58.8;  

También puede influir en la decisión de equilibrio de carga utilizando el servidor pesas. Usando la siguiente configuración, si hay seis solicitudes de los clientes, el servidor de aplicaciones 192.168.58.5 se le asignará 4 solicitudes y 2 irán 192.168.58.8.

Backend ascendente servidor 192.168.58.5 peso = 4; servidor 192.168.58.8;  

Guarde el archivo y salga. Luego, asegúrese de que la estructura de configuración de Nginx sea correcta después de agregar los cambios recientes, ejecutando el siguiente comando.

$ sudo nginx -t 

Si la configuración está bien, reinicie y habilite el servicio NGINX para aplicar los cambios.

$ sudo systemctl reiniciar nginx $ sudo systemctl habilita nginx 

Prueba de equilibrio de carga Nginx en Linux

Para probar el Nginx Carga de equilibrio, abra un navegador web y use la siguiente dirección para navegar.

http: // tecMintapp.lan 

Una vez que se carga la interfaz del sitio web, tome nota de la instancia de la aplicación que se ha cargado. Luego actualiza continuamente la página. En algún momento, la aplicación debe cargarse desde el segundo servidor que indica el equilibrio de carga.

Verifique el equilibrio de carga Nginx en Linux

Acabas de aprender a configurar Nginx Como un equilibrador de carga HTTP en Linux. Nos gustaría saber sus pensamientos sobre esta guía, y especialmente sobre el empleo de NGINX como equilibrador de carga, a través del formulario de retroalimentación a continuación. Para obtener más información, consulte la documentación de Nginx sobre el uso de NGINX como un equilibrador de carga HTTP.