Cómo configurar HaProxy como equilibrador de carga para Nginx en Centos 8

Cómo configurar HaProxy como equilibrador de carga para Nginx en Centos 8

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

Haproxi es una alta disponibilidad de código abierto, potente, de alto rendimiento, confiable, seguro y ampliamente utilizado Tcp/http Balancador de carga, servidor proxy y terminador SSL/TLS construido para sitios web de muy alto tráfico. Corre de manera confiable bien en Linux, Solaris, FreeBSD, Abre así como los sistemas operativos AIX.

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

Prerrequisitos:

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

Configuración del entorno de prueba

----------- Configuración del servidor de HaProxy ----------- HA Proxy Server - Nombre de host: haproxy -server.tecmenta.Lan; IP: 10.42.0.247 Dominio del sitio de prueba: www.tecmenta.lan ----------- Configuración de servidores web del cliente ----------- Servidor web #1 - Nombre de host: WebSRV1.tecmenta.Lan; IP: 10.42.0.200 Web Server #2 - Nombre de host: WebSRV2.tecmenta.Lan; IP: 10.42.0.21 Servidor web #3 - Nombre de host: WebSRV3.tecmenta.Lan; IP: 10.42.0.34 

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

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

# DNF Instalar nginx 

2. A continuación, comience el Nginx El servicio, por ahora, permite que comience automáticamente en el arranque del sistema y confirme que está en funcionamiento verificando su estado, utilizando los comandos SystemCTL (haga esto en todas las máquinas cliente).

# SystemCTL Start Nginx # SystemCTL Habilitar Nginx # SystemCTL Status Nginx 

3. Además, si el servicio Firewalld se ejecuta 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 equilibrador de carga pasen a través del firewall hasta el Nginx servidores web. Luego recargar el cortafuegos 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. A continuación, abra un navegador web en sus máquinas locales y pruebe si el Nginx La instalación funciona 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 del cliente funciona correctamente.

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

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

----------- Servidor web #1 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.Orig # echo "que muestra sitio de WebSRV1.tecmenta.lan ">/usr/share/nginx/html/index.html ----------- Servidor web #2 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.Orig # echo "que muestra sitio de WebSRV2.tecmenta.lan ">/usr/share/nginx/html/index.html ----------- Servidor web #3 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.Orig # echo "que muestra sitio de WebSRV3.tecmenta.lan ">/usr/share/nginx/html/index.html 

Paso 2: Instalación y configuración de HaProxy Server en Centos 8

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

# DNF Instalar HaProxy 

7. A continuación, comience el Haproxi servicio, habilitarlo para iniciar automáticamente en el arranque del sistema y verificar su estado.

# SystemCTL Start HaProxy # SystemCTL Habilitar HaProxy # SystemCTL Status HaProxy 
Verificar el estado de Haproxy en Centos 8

8. Ahora configuraremos el haproxy utilizando el siguiente archivo de configuración.

# vi/etc/haproxy/haproxy.CFG 

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

  • ajustes globales - Establece parámetros de todo el proceso.
  • valores predeterminados - Esta sección establece parámetros predeterminados para todas las demás secciones después de su declaración.
  • Interfaz - Esta sección describe un conjunto de enchufes de escucha que aceptan conexiones del cliente.
  • Backend - Esta sección describe un conjunto de servidores a los que el proxy se conectará a las conexiones entrantes hacia adelante.

Para comprender las opciones bajo ajustes globales y valores predeterminados, Lea la documentación de HaProxy (enlace proporcionado al final del artículo). Para esta guía, usaremos los valores predeterminados.

Configuración de HAPROXY Logging

9. Haproxi Una vez implementado, desempeñará un papel importante en su infraestructura de TI, configurar así el registro de TI es un requisito básico; Esto le permite obtener información sobre cada conexión a sus servidores web de backend.

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

La configuración predeterminada apunta al hostil (127.0.0.1) y local2 es el código de instalación predeterminado utilizado para identificar mensajes de registro de haproxy en rsyslog.

Parámetro de registro predeterminado de HaProxy

10. A continuación, debes decirle al rsyslog servidor cómo recibir y procesar Haproxi Mensajes de registro. Abra el archivo de configuración de rsyslog a /etc/rsyslog.confusión o crear un nuevo archivo dentro del /etc/rsyslog.d directorio, por ejemplo /etc/rsyslog.d/haproxy.confusión.

# vi /etc /rsyslog.d/haproxy.confusión 

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

$ Modload iMUDP $ UDPSERVERADDRESS 127.0.0.1 $ Udpserverrun 514 

También agregue estas líneas para instruir rsyslog escribir en dos archivos de registro separados basados ​​en la gravedad, donde local2 ¿El código de la instalación se define en la configuración de HaProxy anterior?.

local2.*/var/log/haproxy-traftic.registro local2.aviso/var/log/haproxy-admin.registro 

11. Guarde el archivo y cierre. Luego reinicie el rsyslog Servicio para aplicar los cambios recientes.

# SystemCTL reiniciar rsyslog 

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

12. En esta sección, demostraremos cómo configurar los proxies front-end y back-end. Volver a la Haproxi archivo de configuración y modificar las secciones predeterminadas de front-end y back-end 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 un escuchar sección utilizada para servir el Estadísticas de haproxy página. El unir El parámetro asigna un oyente a una dirección IP dada (* para todos en este caso) y puerto (9000).

Las estadísticas permitir la configuración habilita la página de estadísticas a la que se accederá utilizando el Uri /estadísticas (i.mi http: // server_ip: 9000/estadísticas).

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

Escuchar estadísticas BIND *: 9000 estadísticas Habilitar estadísticas de escondite estadísticas de versiones uri /estadísticas estadísticas admin si localhost stats auth HaProxy: [Correo electrónico protegido] 

13. La siguiente configuración define una sección frontend llamada TL (puedes dar un nombre de tu gusto). El modo El parámetro define el modo que opera HaProxy.

El LCA (Lista de control de acceso) El parámetro se utiliza para tomar una decisión basada en el contenido extraído de la solicitud. En este ejemplo, la solicitud se considera clara Http Si no se hace Ssl.

Entonces el http-request-header La configuración se usa para agregar un encabezado HTTP a la solicitud. Esto ayuda a informar Nginx que la solicitud inicial se realizó sobre Http (o por puerto 80).

El default_backend o use_backend La directiva define los servidores de backend, en este caso, a los que se hace referencia Tl_web_servers.

Tenga en cuenta que Haproxi devolverá un "503 Servicio Error no disponible"Si una solicitud no es enrutada por un use_backend o default_backend directiva.

frontend tl bink *: 80 Modo http acl http ssl_fc, no http-request set-header x-forward-protocol http si http default_backend tl_web_serververs 

14. Entonces necesitamos definir una sección de backend donde el balance La configuración define cómo Haproxi Selecciona los servidores de back-end para procesar una solicitud si ningún método de persistencia anula esa selección.

El Galleta Directiva habilita a base de galletas persistencia, instruye Haproxi Para enviar una cookie llamada Servidor al cliente y asociarlo con el IDENTIFICACIÓN del servidor que dio la respuesta inicial.

El servidor La directiva se utiliza para definir los servidores aguas arriba en el formato Sever_name (mi.gramo WebSRV1), server_ip: puerto y opción.

Una opción clave es controlar Lo que dice Haproxi Para seguir revisando la disponibilidad de un servidor e informar en la página de estadísticas.

Backend TL_WEB_SERVERS MODO HTTP Balance Opción RoundRobin Opción Httpchk Head / Cookie ServerUid Insertar indirecto Nocache Server WebSRV1 10.42.0.200: 80 Cookie WebSRV1 Verifica el servidor WebSRV2 10.42.0.21:80 Cookie WebSRV2 Verifique el servidor WebSRV3 10.42.0.34:80 check websrv3 cookie 

Comente cualquier otra sección frontend y backend como se muestra en la captura de pantalla que sigue. Guarde el archivo y cierre.

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

15. Ahora reinicie el Haproxi Servicio para aplicar los nuevos cambios.

# SystemCTL reiniciar haproxy 

dieciséis. A continuación, asegúrese de que el Http (puerto 80) y Https (puerto 433) Los servicios se abren en el firewall para aceptar las solicitudes de los clientes de la siguiente manera. Además, puerto abierto 9000 en el firewall para acceder a la página de estadísticas y recargar la configuración del firewall.

# 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: Prueba de estadísticas de configuración y visualización de HaProxy

17. Ahora es el momento de probar el Haprxoy configuración. En la máquina de escritorio local de donde está accediendo a todos los servidores, agregue la siguiente línea en el /etc/huéspedes Archivo para habilitarnos usar el dominio del sitio ficticio.

10.42.0.247 www.tecmenta.lan 

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

http: // 10.42.0.247/o http: // www.tecmenta.LAN/ 
Verifique la configuración de HaProxy

19. Para acceder al Haproxi Página de estadísticas, use la siguiente dirección.

http: // 10.42.0.247: 9000/estadísticas 

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 HAPROXY STATS

Después de un inicio de sesión exitoso, aterrizará en el Haproxi Página de estadísticas que le muestra métricas que cubren la salud 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 puesto uno de los servidores de back-end.

Informe de estadísticas de HaProxy

Paso 4: Configuración de HTTPS en HaProxy utilizando 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 principales Https Modos de configuración, pero para esta guía, usaremos SSL/TLS descarga.

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

Comenzaremos creando el certificado y llave Como se muestra (responda las preguntas en consecuencia en función de los detalles de su empresa durante la creación de certificados, 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.Clave> Tecmint.Pem # ls -l 
Crear SSL para HaProxy

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

frontend tl bind *: 80 bind *: 443 ssl crt/etc/ssl/tecmint.Lan/Tecmint.esquema de redirección de PEM https si !ssl_fc modo http acl http ssl_fc, no acl https ssl_fc http-request set-header x-forwarded-proteocol http si http http-request set-header x-forwococol-propol https if https predeterminado 
Configurar el front-end de HaProxy con SSL

Guarde el archivo y cierre.

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

# SystemCTL reiniciar haproxy.servicio 

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 de HaProxy SSL Proceder con la conexión Sitio de acceso 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 equilibrio 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, cómo usar Haproxi, 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 pensamiento a través del formulario de comentarios a continuación.