Introducción
HAProxy es un software gratuito de código abierto que proporciona un equilibrador de carga y un servidor proxy de alta disponibilidad para aplicaciones basadas en TCP y HTTP. Es particularmente adecuado para sitios web con mucho tráfico y es compatible con un buen número de los más visitados del mundo. Configurar HAProxy en CentOS/RHEL (Red Hat Enterprise Linux) puede mejorar su infraestructura de red mejorando su rendimiento y confiabilidad.
Esta guía lo guiará a través de los pasos necesarios para instalar y configurar HAProxy en CentOS/RHEL 9/8.
Requisitos previos
- Un servidor CentOS/RHEL 9/8
- Un usuario no root con privilegios sudo
Paso 1: actualiza tu sistema
Antes de instalar cualquier paquete, es una buena idea actualizar el índice de paquetes de su sistema. Esto garantiza que tenga las últimas actualizaciones y parches de seguridad.
sudo dnf update
Paso 2: Instale HAProxy
HAProxy está disponible en los repositorios predeterminados de CentOS/RHEL. Instálelo usando el siguiente comando:
sudo dnf install haproxy
Paso 3: configurar HAProxy
Después de la instalación, el siguiente paso es configurar HAProxy según sus necesidades. El archivo de configuración principal para HAProxy es /etc/haproxy/haproxy.cfg
. Deberá modificar este archivo con su configuración. Utilice un editor de texto como nano o vim para editar el archivo:
sudo nano /etc/haproxy/haproxy.cfg
Configuracion basica
A continuación se muestra un ejemplo de configuración básica que configura HAProxy como equilibrador de carga para dos servidores web:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Update to use only TLS 1.3 and TLS 1.2
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
ssl-default-bind-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http-in
bind *:80
# Enable TLS 1.3 and TLS 1.2 on HTTPS connections
bind *:443 ssl crt /etc/haproxy/certs/example.com.pem alpn h2,http/1.1
redirect scheme https if!{ ssl_fc }
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i.jpg.gif.png.css.js
use_backend static if url_static
default_backend app
backend static
balance roundrobin
server static1 192.168.1.101:80 check
server static2 192.168.1.102:80 check
backend app
balance roundrobin
cookie SERVERID insert indirect nocache
server app1 192.168.1.103:80 check cookie app1
server app2 192.168.1.104:80 check cookie app2
listen stats
bind *:8080
stats enable
stats uri /haproxy?stats
stats hide-version
stats auth admin:admin
Esta configuración le dice a HAProxy que escuche en el puerto 80 el tráfico HTTP entrante (http_front frontend) y que equilibre la carga entre dos servidores backend (http_back backend) utilizando el algoritmo round-robin.
La línea stats uri /haproxy?stats habilita la página de estadísticas en la URL /haproxy?stats
, donde puede ver estadísticas útiles sobre el servidor HAProxy.
Guardar y Salir
Una vez que haya configurado HAProxy a su gusto, guarde el archivo y salga del editor de texto.
Paso 4: habilite e inicie HAProxy
Con HAProxy configurado, el siguiente paso es habilitarlo para que se inicie al arrancar y luego iniciar el servicio inmediatamente:
sudo systemctl enable haproxy
sudo systemctl start haproxy
Para asegurarse de que HAProxy se esté ejecutando, puede verificar su estado con:
sudo systemctl status haproxy
Paso 5: cambie la configuración de su firewall
Si tiene un firewall habilitado, deberá permitir el tráfico a través del puerto en el que escucha HAProxy. Por ejemplo, para permitir el tráfico en el puerto 80, puedes utilizar:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
Conclusión
Ha instalado y configurado correctamente HAProxy en su servidor CentOS/RHEL 9/8. HAProxy ahora está configurado para distribuir el tráfico de red entrante a servidores backend, aumentando la confiabilidad y el rendimiento de su aplicación. No olvide consultar la página de estadísticas de HAProxy con regularidad para monitorear su rendimiento y realizar los ajustes necesarios.