GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo configurar HAProxy como Load Balancer para Nginx en CentOS 8

Para garantizar la máxima disponibilidad, escalabilidad y alto rendimiento de las aplicaciones web, ahora es común implementar tecnologías que introducen redundancia, como la agrupación de servidores y el equilibrio de carga. Por ejemplo, configurar un grupo de servidores que ejecuten las mismas aplicaciones y luego implementar balanceadores de carga frente a ellos para distribuir el tráfico.

HAProxy es un TCP/HTTP de alta disponibilidad de código abierto, potente, de alto rendimiento, confiable, seguro y ampliamente utilizado equilibrador de carga, servidor proxy y terminador SSL/TLS construido para sitios web de muy alto tráfico. Funciona correctamente en Linux , Solaris , FreeBSD , OpenBSD así como sistemas operativos AIX.

Esta guía muestra cómo configurar un balanceador de carga de alta disponibilidad dedicado con HAProxy en CentOS 8 para controlar el tráfico en un clúster de NGINX servidores web También demuestra cómo configurar SSL/TLS terminación en HAProxy .

Requisitos previos:

Un total de 4 servidores con una instalación mínima de CentOS 8.

Configuración del entorno de prueba

----------- HAProxy Server Setup ----------- 
HA Proxy Server - hostname: haproxy-server.tecmint.lan; IP: 10.42.0.247
Test Site Domain: www.tecmint.lan


----------- Client Web Servers Setup ----------- 
Web Server #1 - hostname: websrv1.tecmint.lan; IP: 10.42.0.200
Web Server #2 - hostname: websrv2.tecmint.lan; IP: 10.42.0.21
Web Server #3 - hostname: websrv3.tecmint.lan; IP: 10.42.0.34

Paso 1:Configuración del servidor HTTP Nginx en las máquinas cliente

1. Inicie sesión en todos sus CentOS 8 máquinas cliente e instalar Nginx servidor web usando el administrador de paquetes dnf como se muestra.

# dnf install Nginx

2. A continuación, inicie el Nginx servicio, por ahora, habilítelo para que se inicie automáticamente en el arranque del sistema y confirme que está en funcionamiento comprobando su estado, usando los comandos systemctl (haga esto en todas las máquinas cliente).

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Además, si el servicio firewalld se está ejecutando en todas las máquinas cliente (que puede verificar ejecutando systemctl start firewalld), debe agregar el HTTP y HTTPS servicios en la configuración del firewall para permitir que las solicitudes del balanceador de carga pasen a través del firewall al Nginx servidores web Luego recarga el firewalld servicio para efectuar los nuevos cambios (haga esto en todas las máquinas cliente).

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

4. Luego, abra un navegador web en sus máquinas locales y pruebe si Nginx la instalación está funcionando bien. Use las IP del cliente para navegar, una vez que vea el Nginx página de prueba, significa que el servidor web instalado en la máquina cliente está funcionando correctamente.

Probar la instalación de Nginx en todas las máquinas cliente CentOS 8

5. A continuación, debemos crear páginas de prueba en las máquinas cliente que usaremos más adelante para probar el HAProxy configuración.

----------- Web Server #1 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv1.tecmint.lan"> /usr/share/nginx/html/index.html

----------- Web Server #2 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv2.tecmint.lan"> /usr/share/nginx/html/index.html

----------- Web Server #3 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv3.tecmint.lan"> /usr/share/nginx/html/index.html

Paso 2:Instalación y configuración del servidor HAProxy en CentOS 8

6. Ahora instale el HAProxy paquete en HAProxy servidor ejecutando el siguiente comando.

# dnf install haproxy

7. A continuación, inicie el HAProxy servicio, habilítelo para que se inicie automáticamente al arrancar el sistema y verifique su estado.

# systemctl start haproxy
# systemctl enable haproxy
# systemctl status haproxy

Verificar el estado de HAProxy en CentOS 8

8. Ahora configuraremos el HAProxy usando el siguiente archivo de configuración.

# vi /etc/haproxy/haproxy.cfg

El archivo de configuración se divide en cuatro secciones principales.

  • configuración global – establece parámetros para todo el proceso.
  • predeterminados – esta sección establece parámetros predeterminados para todas las demás secciones después de su declaración.
  • frontal – esta sección describe un conjunto de conectores de escucha que aceptan conexiones de clientes.
  • Back-end – esta sección describe un conjunto de servidores a los que se conectará el proxy para reenviar las conexiones entrantes.

Para comprender las opciones en configuración global y predeterminados , lea la documentación de HAProxy (enlace proporcionado al final del artículo). Para esta guía, usaremos los valores predeterminados.

Configuración del registro HAProxy

9. HAProxy una vez implementado, jugará un papel importante en su infraestructura de TI, por lo que configurar el registro es un requisito básico; esto le permite obtener información sobre cada conexión a sus servidores web back-end.

El parámetro de registro (resaltado en la siguiente captura de pantalla) declara un Syslog global servidor (como rsyslog el predeterminado en CentOS) que recibirá mensajes de registro. Aquí se puede declarar más de un servidor.

La configuración predeterminada apunta a localhost (127.0.0.1 ) y local2 es el código de instalación predeterminado que se utiliza para identificar los mensajes de registro de HAProxy en rsyslog .

Parámetro de registro predeterminado de HAProxy

10. A continuación, debe informar al rsyslog servidor cómo recibir y procesar HAProxy registrar mensajes. Abra el archivo de configuración de rsyslog en /etc/rsyslog.conf o cree un nuevo archivo dentro de /etc/rsyslog.d directorio, por ejemplo /etc/rsyslog.d/haproxy.conf .

# vi /etc/rsyslog.d/haproxy.conf

Copie y pegue la siguiente configuración para recopilar registros con UDP en el puerto predeterminado 514 .

$ModLoad imudp 
$UDPServerAddress 127.0.0.1 
$UDPServerRun 514 

También agregue estas líneas para instruir a rsyslog para escribir en dos archivos de registro separados según la gravedad, donde local2 es el código de instalación definido en la configuración de HAProxy anterior.

local2.* 	/var/log/haproxy-traffic.log 
local2.notice 	/var/log/haproxy-admin.log

11. Guarde el archivo y ciérrelo. Luego reinicie el rsyslog servicio para aplicar los cambios recientes.

# systemctl restart rsyslog

Configuración de front-end y back-end de HAProxy

12. En esta sección, demostraremos cómo configurar los proxies front-end y back-end. Vuelva a HAProxy archivo de configuración y modifique las secciones front-end y back-end predeterminadas de la siguiente manera. No entraremos en una explicación detallada de cada parámetro, siempre puede consultar la documentación oficial.

La siguiente configuración define una escucha sección utilizada para mostrar las Estadísticas de HAProxy página. El vínculo El parámetro asigna un oyente a una dirección IP dada (* para todos en este caso) y puerto (9000 ).

Las estadísticas habilitan la configuración habilita la página de estadísticas a la que se accederá utilizando el URI /stats (es decir, http://server_ip:9000/stats ).

Las estadísticas auth La configuración se usa para agregar una autenticación básica al acceder a la página (reemplace haproxy y [correo electrónico protegido] con un nombre de usuario y contraseña de su elección).

listen stats
    bind *:9000
    stats enable
    stats hide-version
    stats uri /stats
    stats admin if LOCALHOST
    stats auth haproxy:[email protected]

13. La siguiente configuración define una sección de interfaz llamada TL (puedes poner un nombre de tu agrado). El modo El parámetro define el modo en el que opera HAProxy.

La acl (Lista de control de acceso) se utiliza para tomar una decisión basada en el contenido extraído de la solicitud. En este ejemplo, la solicitud se considera simple HTTP si no está hecho sobre SSL .

Luego, el encabezado del conjunto de solicitudes http La configuración se utiliza para agregar un encabezado HTTP a la solicitud. Esto ayuda a informar a Nginx que la solicitud inicial se realizó a través de HTTP (o a través del puerto 80 ).

El backend_predeterminado o use_backend directiva define los servidores backend, en este caso, a los que hace referencia TL_web_servers .

Tenga en cuenta que HAProxy devolverá un “Error de servicio no disponible 503 ” si una solicitud no es enrutada por un use_backend o default_backend directiva.

frontend TL
    bind *:80
    mode http
    acl http  ssl_fc,not
    http-request set-header X-Forwarded-Protocol http if http
    default_backend TL_web_servers

14. Luego necesitamos definir una sección de back-end donde el saldo configuración define cómo HAProxy selecciona los servidores back-end para procesar una solicitud si ningún método de persistencia anula esa selección.

La cookie directiva habilita basado en cookies persistencia, instruye a HAProxy para enviar una cookie llamada SERVERID al cliente y asociarlo con el ID del servidor que dio la respuesta inicial.

El servidor La directiva se usa para definir los servidores ascendentes en el formato sever_name (por ejemplo, websrv1 ), IP_del_servidor:puerto y opciones .

Una opción clave es marcar que le dice a HAProxy para seguir comprobando la disponibilidad de un servidor e informar en la página de estadísticas.

backend TL_web_servers
    mode http
    balance roundrobin
    option  httpchk HEAD /
    cookie SERVERUID insert indirect nocache
    server  websrv1 10.42.0.200:80 cookie websrv1 check
    server  websrv2 10.42.0.21:80  cookie websrv2 check
    server  websrv3 10.42.0.34:80  cookie websrv3 check

Comente cualquier otra sección de frontend y backend como se muestra en la siguiente captura de pantalla. Guarde el archivo y ciérrelo.

Configuración de front-end y back-end de HAProxy

15. Ahora reinicie el HAProxy servicio para aplicar los nuevos cambios.

# systemctl restart haproxy

16. A continuación, asegúrese de que HTTP (puerto 80 ) y HTTPS (puerto 433 ) los servicios se abren en el cortafuegos para aceptar las solicitudes de los clientes de la siguiente manera. Además, abra el puerto 9000 en el cortafuegos para acceder a la página de estadísticas y recargar la configuración del cortafuegos.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent –add-service=https
# firewall-cmd --zone=public --permanent --add-port=9000/tcp
# firewall-cmd --reload

Paso 3:Probar la configuración de HAProxy y ver las estadísticas

17. Ahora es el momento de probar el HAPrxoy configuración. En la máquina de escritorio local desde la que accede a todos los servidores, agregue la siguiente línea en /etc/hosts para permitirnos usar el dominio del sitio ficticio.

10.42.0.247  www.tecmint.lan

18. A continuación, abra un navegador y navegue utilizando la dirección del servidor o el dominio del sitio.

http://10.42.0.247/
OR
http://www.tecmint.lan/

Compruebe la configuración de HAProxy

19. Para acceder al HAProxy página de estadísticas, utilice la siguiente dirección.

http://10.42.0.247:9000/stats

Luego use el nombre de usuario y la contraseña que definió en el archivo de configuración de HAProxy (consulte el parámetro de autenticación de estadísticas).

Página de inicio de sesión de estadísticas de HAProxy

Después de un inicio de sesión exitoso, aterrizará en el HAProxy página de estadísticas que le muestra métricas que cubren el estado de sus servidores, las tasas de solicitud actuales, los tiempos de respuesta y mucho más.

Para demostrar cómo funciona el informe de estado con respecto a los códigos de color, hemos colocado uno de los servidores back-end.

Informe de estadísticas HAProxy

Paso 4:Configuración de HTTPS en HAProxy mediante un certificado SSL autofirmado

20. En esta sección final, demostraremos cómo configurar SSL/TLS para asegurar todas las comunicaciones entre el servidor HAProxy y el cliente. HAProxy admite cuatro HTTPS principales modos de configuración, pero para esta guía, usaremos SSL/TLS descargando.

En SSL/TLS modo de descarga, HAProxy descifra el tráfico en el lado del cliente y se conecta en tráfico claro a los servidores backend.

Comenzaremos creando el certificado y clave como se muestra (responda las preguntas según corresponda según los detalles de su empresa durante la creación del certificado, como se destaca en la captura de pantalla).

# mkdir /etc/ssl/tecmint.lan
# cd /etc/ssl/tecmint.lan/
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/tecmint.lan.key -out /etc/ssl/tecmint.lan.crt
# cd /etc/ssl/tecmint.lan/
# cat tecmint.crt tecmint.key >tecmint.pem
# ls -l

Crear SSL para HAProxy

21. A continuación, abra el HAProxy archivo de configuración (/etc/haproxy/haproxy.cfg ) y edite la sección de front-end.

frontend TL
    bind *:80
    bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem
    redirect  scheme  https  if  !{ ssl_fc }
    mode http
    acl http  ssl_fc,not
    acl https ssl_fc
    http-request set-header X-Forwarded-Protocol http if http
    http-request set-header X-Forwarded-Protocol https if https
    default_backend TL_web_servers

Configurar el front-end de HAProxy con SSL

Guarde el archivo y ciérrelo.

22. Luego reinicie el servicio HAProxy para aplicar los nuevos cambios.

# systemctl restart haproxy.service

23. A continuación, abra un navegador web e intente acceder al sitio una vez más. El navegador mostrará un error debido al certificado autofirmado, haga clic en Avanzado para proceder.

Error de conexión SSL HAProxy

Continuar con la conexión

Acceder al sitio a través de HTTPS

¡Eso es todo por ahora! Cada aplicación web tiene su propio conjunto de requisitos, debe diseñar y configurar el balanceo de carga para adaptarse a su infraestructura de TI y los requisitos de la aplicación.

Para obtener más información sobre algunas de las opciones de configuración utilizadas en esta guía y, en general, sobre cómo usar HAProxy , consulte la documentación oficial de la edición comunitaria de HAProxy o la documentación de la versión empresarial de HAProxy. Puede publicar cualquier pregunta o comentario a través del formulario de comentarios a continuación.

Compartir es cuidar…
Compartir en FacebookCompartir en TwitterCompartir en LinkedinCompartir en Reddit
Cent OS
  1. Cómo configurar un servidor SFTP en CentOS

  2. Cómo configurar el servidor SysLog en CentOS 7 / RHEL 7

  3. Cómo configurar el servidor NFS en CentOS 7 / RHEL 7

  4. Cómo configurar la replicación de MySQL en CentOS

  5. Cómo configurar el servidor VNC para nuevos usuarios en CentOS/RHEL 5

Cómo instalar HAProxy en CentOS 7

Cómo configurar HAProxy como Load Balancer para Nginx en CentOS 7

Cómo instalar Nginx en CentOS 7

Cómo configurar NGINX en un servidor CentOS 7

Cómo configurar HAProxy en CentOS 8

Cómo configurar un servidor NGINX RTMP para transmisión