Cómo instalar y configurar HAProxy en Rocky Linux 8

Cuando despliegas una aplicación en Internet, la disponibilidad, la escalabilidad y el rendimiento de la aplicación son muy importantes para una mejor experiencia del usuario. Hay muchas tecnologías que introducen la redundancia, como el equilibrio de carga, el clustering y el proxy.

HAProxy es un equilibrador de carga gratuito, de código abierto y fiable, diseñado para sitios web con mucho tráfico. Equilibra la carga del tráfico entrante distribuyéndolo entre varios servidores backend.

En este artículo te mostramos cómo instalar HAProxy en Rocky Linux 8.

Para el propósito de este tutorial, utilizaremos la siguiente configuración:

Servidor Dirección IP

HAProxy 172.16.10.10

Backend1 172.16.10.11

Backend2 172.16.10.12

Requisitos previos

  • Un servidor que ejecute RockyLinux 8.
  • Se ha configurado una contraseña de root en el servidor.

Instalar HAProxy

Por defecto, el paquete HAProxy está disponible en el repositorio por defecto de Rocky Linux 8. Puedes instalarlo con el siguiente comando:

dnf install haproxy -y

Una vez instalado el HAProxy, inicia el servicio HAProxy y permite que se inicie al reiniciar el sistema:

systemctl start haproxy
systemctl enable haproxy

Configurar HAProxy

A continuación, tendrás que editar el archivo /etc/haproxy/haproxy.cfg y modificar dos secciones frontend y backend. En la sección Frontend, tendrás que definir la IP de HAProxy, su puerto, el URI de las estadísticas y el nombre del backend. En la sección Backend, tendrás que definir el algoritmo de equilibrio de carga, el nombre del servidor backend, las IPs y el puerto.

nano /etc/haproxy/haproxy.cfg

Modifica las siguientes secciones:

frontend http_balancer
    bind 172.16.10.10:80
    option http-server-close
    option forwardfor
    stats uri /haproxy?stats

default_backend     Apache_webservers

backend apache_webservers
    mode        http
    balance     roundrobin
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    
    server  apache1  172.16.10.11:80  check
    server  apache2  172.16.10.12:80  check

Guarda y cierra el archivo cuando hayas terminado, entonces tendrás que editar el archivo /etc/rsyslog.conf.

nano /etc/rsyslog.conf

Descomenta las siguientes líneas:

module(load="imudp")
input(type="imudp" port="514")

Guarda y cierra el archivo y luego crea el archivo haproxy.conf para rsyslog con el siguiente comando:

nano /etc/rsyslog.d/haproxy.conf

Añade las siguientes líneas:

local2.=info     /var/log/haproxy-access.log
local2.notice    /var/log/haproxy-info.log

A continuación, inicia el servicio rsyslog y habilítalo para que se inicie al reiniciar el sistema:

systemctl start rsyslog
systemctl enable rsyslog

Por último, reinicia el servicio HAProxy para aplicar los cambios:

systemctl restart haproxy

También puedes verificar el estado del servicio HAProxy con el siguiente comando:

systemctl status haproxy

Deberías ver la siguiente salida:

? haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-08-03 03:10:37 EDT; 1min 16s ago
  Process: 44032 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 44036 (haproxy)
    Tasks: 2 (limit: 12524)
   Memory: 3.1M
   CGroup: /system.slice/haproxy.service
           ??44036 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
           ??44111 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid

Aug 03 03:10:36 RockyLinux8 systemd[1]: Starting HAProxy Load Balancer...
Aug 03 03:10:37 RockyLinux8 systemd[1]: Started HAProxy Load Balancer.

Configurar el cortafuegos

A continuación, tendrás que configurar el firewalld en todos los servidores y permitir el puerto 80 a través del firewall.

Puedes ejecutar el siguiente comando para permitir el puerto 80:

firewall-cmd --permanent --add-port=80/tcp

A continuación, recarga el servicio firewalld para aplicar los cambios.

firewall-cmd --reload

Configurar los servidores backend

A continuación, tendrás que instalar el servidor Apache en ambos servidores backend. Ejecuta el siguiente comando para instalar el servidor Apache.

dnf install httpd -y

Una vez instalado el servidor Apache, inicia el servicio Apache y habilítalo para que se inicie al reiniciar el sistema:

systemctl start httpd
systemctl enable httpd

A continuación, tendrás que modificar el archivo index.html por defecto en ambos servidores backend.

En el primer backend, edita el archivo index.html con el siguiente comando:

nano /usr/share/httpd/noindex/index.html

Elimina todas las líneas y añade la siguiente:

Welcome to First Apache Web Server!

Guarda y cierra el archivo cuando hayas terminado.

En el segundo servidor, edita el archivo index.html con el siguiente comando:

nano /usr/share/httpd/noindex/index.html

Elimina todas las líneas y añade la siguiente línea:

Welcome to Second Apache Web Server!

Guarda y cierra el archivo cuando hayas terminado.

Verificar HAProxy

Llegados a este punto, HAProxy está configurado para reenviar todas las peticiones entrantes a los servidores del backend en función del algoritmo de equilibrio de carga. Ahora, es el momento de comprobar si HAProxy funciona correctamente o no.

Abre tu navegador web y escribe la IP de HAProxy en la URL http://172.16.10.10. Deberías ver tu primera página del servidor web apache:

Primer servidor

A continuación, actualiza de nuevo la misma página, deberías ver tu segunda página del servidor web apache:

Segundo servidor

Esto confirma que HAProxy está funcionando como se esperaba y está distribuyendo el tráfico entre dos servidores backend.

Conclusión

Enhorabuena! has instalado y configurado con éxito el equilibrador de carga HAProxy en Rocky Linux 8. Ahora puedes implementar HAProxy en el entorno de producción para conseguir un alto rendimiento y escalabilidad.

También te podría gustar...