GNU/Linux >> Tutoriales Linux >  >> Rocky Linux

Cómo instalar y configurar el balanceador de carga HAProxy en Rocky Linux/Alma Linux 8

Haproxy es popular para el equilibrio de carga debido a su eficiencia, confiabilidad y bajo consumo de memoria y CPU. El balanceo de carga es una solución común para distribuir aplicaciones web de forma horizontal en varios hosts y, al mismo tiempo, proporcionar a los usuarios un único punto de acceso al servicio.

Está disponible para su instalación en las principales distribuciones de Linux. En esta guía, aprenderemos cómo instalar y configurar el balanceador de carga HAProxy en Rocky Linux 8. Esta guía también funciona en otras distribuciones basadas en RHEL 8 como Alma Linux y Oracle Linux.

Compruebe también:

  • Cómo instalar y configurar el balanceador de carga HAProxy en Debian 11
  • Cómo instalar y configurar el balanceador de carga HAProxy en Ubuntu 20.04

Algoritmos de equilibrio de carga HAProxy

Los algoritmos de equilibrio se utilizan para decidir a qué servidor en el backend se transfiere cada conexión. Algunas de las opciones útiles incluyen las siguientes:

  • Roundrobin: Cada servidor se usa por turnos según sus pesos. Este es el algoritmo más fluido y justo cuando el tiempo de procesamiento de los servidores permanece igualmente distribuido. Este algoritmo es dinámico, lo que permite que los pesos de los servidores se ajusten sobre la marcha.
  • Leastconn:se elige el servidor con el menor número de conexiones. El round-robin se realiza entre servidores con la misma carga. Se recomienda usar este algoritmo con sesiones largas, como LDAP, SQL, TSE, etc., pero no es muy adecuado para sesiones cortas como HTTP.
  • Primero: el primer servidor con ranuras de conexión disponibles recibe la conexión. Los servidores se eligen desde el identificador numérico más bajo hasta el más alto, que de forma predeterminada es la posición del servidor en la granja. Una vez que un servidor alcanza su valor maxconn , se utiliza el siguiente servidor.
  • Fuente: la dirección IP de origen se codifica y se divide por el peso total de los servidores en ejecución para designar qué servidor recibirá la solicitud. De esta forma la misma dirección IP de cliente siempre llegará al mismo servidor mientras los servidores permanecen iguales.

Tabla de contenido

  1. Asegurarse de que el servidor esté actualizado
  2. Instalación de HAProxy
  3. Configuración de HAProxy como equilibrador de carga
  4. Probar la configuración

1. Asegurarse de que el servidor esté actualizado

Antes de continuar, asegurémonos de que el servidor esté actualizado. Use este comando para lograr esto:

sudo dnf -y update

2. Instalación de Haproxy

El paquete que proporciona haproxy está disponible en los repositorios predeterminados de Rocky Linux. Instalar usando este comando:

sudo dnf install -y haproxy

Confirme la instalación con este comando:

$ rpm -qi haproxy
Name        : haproxy
Version     : 1.8.27
Release     : 2.el8
Architecture: x86_64
Install Date: Tue 11 Jan 2022 09:39:45 PM UTC
Group       : System Environment/Daemons
Size        : 4446585
License     : GPLv2+
Signature   : RSA/SHA256, Wed 19 May 2021 05:13:23 AM UTC, Key ID 15af5dac6d745a60
Source RPM  : haproxy-1.8.27-2.el8.src.rpm
Build Date  : Wed 19 May 2021 02:37:50 AM UTC
Build Host  : ord1-prod-x86build004.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager    : [email protected]
Vendor      : Rocky
URL         : http://www.haproxy.org/
Summary     : HAProxy reverse proxy for high availability environments
Description :
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. Indeed, it can:
 - route HTTP requests depending on statically assigned cookies
 - spread load among several servers while assuring server persistence
   through the use of HTTP cookies
 - switch to backup servers in the event a main one fails
 - accept connections to special ports dedicated to service monitoring
 - stop accepting connections without breaking existing ones
 - add, modify, and delete HTTP headers in both directions
 - block requests matching particular patterns
 - report detailed status to authenticated users from a URI
   intercepted from the application

Puede verificar el número de versión instalada con el siguiente comando.

haproxy -v

Esta es la salida en mi máquina

$ haproxy -v
HA-Proxy version 1.8.27-493ce0b 2020/11/06
Copyright 2000-2020 Willy Tarreau <[email protected]>

A continuación, la instalación está completa. Continúe a continuación con las instrucciones sobre cómo configurar el balanceador de carga para redirigir las solicitudes a sus servidores web.

3. Configuración de HAProxy como equilibrador de carga

Para configurar HAProxy como equilibrador de carga, debemos indicarle qué tipo de conexiones debe escuchar y dónde se deben retransmitir las conexiones. Esto se hace creando un archivo de configuración /etc/haproxy/haproxy.cfg con la configuración de definición.

Equilibrio de carga en la capa 4

Tras la instalación, HAProxy ya tendrá una plantilla para configurar el balanceador de carga. Abra el archivo de configuración usando su editor de texto, estoy usando vim:

sudo vim /etc/haproxy/haproxy.cfg

Agregue este contenido para configurar la interfaz de escucha y la interfaz de back-end donde se equilibrará la carga del tráfico.

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server <server1 name> <private IP 1>:80 check
   server <server2 name> <private IP 2>:80 check

Reemplace  con el nombre que desee para sus servidores en la página de estadísticas y  con las IP privadas de los servidores a los que desea dirigir el tráfico web. Esta es la configuración que estoy usando en mi servidor

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server web_server_1 10.70.5.41:80 check
   server web_server_2 10.70.5.187:80 check

Lo anterior define un balanceador de carga de capa 4 con un nombre de front-end http_front que escucha el número de puerto 80, que luego dirige el tráfico al backend predeterminado llamado http_back. El URI de estadísticas adicional /haproxy?stats habilita la página de estadísticas en esa dirección especificada.

Equilibrio de carga en la capa 7

También podemos configurar el balanceador de carga para que funcione en la capa 7. Esto es útil cuando partes de su aplicación web están ubicadas en diferentes hosts. Esto se puede lograr condicionando la transferencia de conexión, por ejemplo, por la URL.

Abra el archivo de configuración usando su editor de texto, estoy usando vim:

sudo vim /etc/haproxy/haproxy.cfg

Luego agregue estas configuraciones

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server <server name> <private IP>:80 check
   server <server name> <private IP>:80 check

backend blog_back
   server <server name> <private IP>:80 check
   server <server name> <private IP>:80 check

El front-end declara una regla de ACL llamada url_blog que se aplica a todas las conexiones con rutas que comienzan con /blog. Use_backend define que las conexiones que coincidan con la condición url_blog deben ser atendidas por el backend denominado blog_back, mientras que el backend predeterminado gestiona todas las demás solicitudes.

En el backend, la configuración establece dos grupos de servidores, http_back como antes y el nuevo llamado blog_back que sirve específicamente para conexiones a example.com/blog.

Después de realizar las configuraciones, guarde el archivo y reinicie HAProxy con el siguiente comando.

sudo systemctl restart haproxy

Si recibe algún error o advertencia al inicio, verifique la configuración en busca de errores de escritura y luego intente reiniciar nuevamente.

Configuración de SSL

Si tiene un archivo de clave privada y un archivo de certificado que desea usar con HAProxy, combínelos con este comando.

cat citizix.fullchain.pem citizix.key > citizix.pem

Luego configure HAProxy para usar el certificado SSL en la interfaz.

frontend http_front
        bind *:80
        bind *:443 ssl crt /etc/letsencrypt/live/apps.citizix.com/citizix.pem 

4. Probando la configuración

Con HAProxy configurado y ejecutándose, abra la IP pública de su servidor de balanceador de carga en un navegador web y verifique que esté conectado a su backend correctamente. El parámetro stats uri en la configuración habilita la página de estadísticas en la dirección definida.

http://<Haproxy public IP>/haproxy?stats

Cuando carga la página de estadísticas y todos sus servidores aparecen en verde, ¡su configuración fue exitosa!

La página de estadísticas contiene información útil para realizar un seguimiento de sus servidores web, incluidos los tiempos de actividad y de inactividad y el recuento de sesiones. Si un servidor aparece en rojo, verifique que el servidor esté encendido y que pueda hacer ping desde la máquina del balanceador de carga.

En caso de que su balanceador de carga no responda, verifique que las conexiones HTTP no estén bloqueadas por un firewall. Además, confirme que HAProxy se está ejecutando con el siguiente comando.

sudo systemctl status haproxy

5. Contraseña que protege la página de estadísticas

Sin embargo, tener la página de estadísticas simplemente enumerada en la parte delantera está abierta públicamente para que cualquiera la vea, lo que podría no ser una buena idea. En su lugar, puede configurarlo en su propio número de puerto agregando el siguiente ejemplo al final de su haproxy.cfg expediente. Reemplace el nombre de usuario y la contraseña con algo seguro.

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy\ Statistics
   stats auth username:password

Después de agregar el nuevo grupo de escucha, elimine la referencia anterior al uri de estadísticas del grupo de interfaz. Cuando termine, guarde el archivo y reinicie HAProxy nuevamente.

sudo systemctl restart haproxy

Luego abra el balanceador de carga nuevamente con el nuevo número de puerto e inicie sesión con el nombre de usuario y la contraseña que estableció en el archivo de configuración.

http://<load balancer public IP>:8181

Verifique que sus servidores aún estén en verde y luego abra solo la IP del balanceador de carga sin ningún número de puerto en su navegador web.

http://<load balancer public IP>/

Si sus servidores back-end tienen al menos páginas de destino ligeramente diferentes, notará que cada vez que recarga la página, obtiene la respuesta de un host diferente.

Conclusiones

¡Eso es! En esta guía, aprendimos cómo instalar y configurar HAProxy para equilibrar la carga del tráfico. Esto aumentará el rendimiento y la disponibilidad de su aplicación web.


Rocky Linux
  1. Cómo instalar y configurar docker en Rocky Linux/Centos 8

  2. Cómo instalar y configurar Ansible en Rocky Linux/CentOS 8

  3. Cómo instalar Erlang en Rocky Linux/Alma Linux/CentOS 8

  4. Cómo instalar y usar Podman en Rocky Linux/Alma Linux/Centos 8

  5. Cómo instalar y configurar PHP y Nginx (LEMP) en Rocky Linux/Alma Linux 8

Cómo instalar y configurar HAProxy en Rocky Linux 8

Cómo instalar y configurar Fail2ban en Alma Linux 8

Cómo instalar PHP 8 en Alma Linux y Rocky Linux

Cómo instalar y configurar Mono en Rocky Linux 8 y CentOS 8

Cómo instalar y configurar TensorFlow en Rocky Linux 8

Cómo instalar y configurar OpenCV en Rocky Linux 8.4