GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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

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 Ubuntu 20.04.

Compruebe también:

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

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
  5. Contraseña que protege la página de estadísticas de HAProxy

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 apt update
sudo apt upgrade -y

2. Instalación de Haproxy

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

sudo apt install -y haproxy

Confirme la instalación con este comando:

$ apt-cache policy haproxy
haproxy:
  Installed: 2.0.13-2ubuntu0.3
  Candidate: 2.0.13-2ubuntu0.3
  Version table:
 *** 2.0.13-2ubuntu0.3 500
        500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
        100 /var/lib/dpkg/status
     2.0.13-2 500
        500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal/main amd64 Packages

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 de HAProxy

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.


Ubuntu
  1. Cómo instalar y configurar el servidor Algo VPN en Ubuntu 20.04

  2. Cómo instalar y configurar el servidor DHCP en Ubuntu 20.04

  3. Cómo instalar y configurar el servidor Redis en Ubuntu

  4. Cómo configurar el balanceador de carga HAProxy

  5. Cómo instalar y configurar Squid Proxy en Ubuntu 20.04

Cómo instalar y configurar el servidor web Apache en Ubuntu

Cómo instalar y configurar el servidor LAMP en Ubuntu

Cómo instalar y configurar el servidor OpenLDAP en Ubuntu 16.04

Cómo instalar y configurar el servidor VNC en Ubuntu 20.04

Cómo instalar y configurar VNC en Ubuntu Server 20.04

Cómo instalar y configurar el servidor DNS en Ubuntu 16.04 LTS