Cuando implementa 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 redundancia, como equilibrio de carga, agrupación en clústeres y proxy.
HAProxy es un equilibrador de carga gratuito, de código abierto y confiable diseñado para sitios web de alto tráfico. Equilibra la carga del tráfico entrante distribuyéndolo entre varios servidores backend.
En este artículo le mostramos cómo instalar HAProxy en Rocky Linux 8.
Para los fines 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
- Un servidor que ejecuta RockyLinux 8.
- Se configura una contraseña raíz en el servidor.
Instalar HAProxy
De forma predeterminada, el paquete HAProxy está disponible en el repositorio predeterminado de Rocky Linux 8. Puede instalarlo con el siguiente comando:
dnf install haproxy -y
Una vez que HAProxy esté instalado, inicie el servicio HAProxy y habilítelo para que se inicie al reiniciar el sistema:
systemctl start haproxy
systemctl enable haproxy
Configurar HAProxy
A continuación, deberá editar el archivo /etc/haproxy/haproxy.cfg y modificar dos secciones frontend y backend. En la sección Frontend, deberá definir la IP de HAProxy, su puerto, URI de estadísticas y nombre de backend. En la sección Backend, deberá definir el algoritmo de equilibrio de carga, el nombre del servidor backend, las direcciones IP y el puerto.
nano /etc/haproxy/haproxy.cfg
Modifique 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
Guarde y cierre el archivo cuando haya terminado, luego deberá editar el archivo /etc/rsyslog.conf.
nano /etc/rsyslog.conf
Descomente las siguientes líneas:
module(load="imudp") input(type="imudp" port="514")
Guarde y cierre el archivo, luego cree el archivo haproxy.conf para rsyslog con el siguiente comando:
nano /etc/rsyslog.d/haproxy.conf
Agregue las siguientes líneas:
local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
A continuación, inicie el servicio rsyslog y habilítelo para que se inicie al reiniciar el sistema:
systemctl start rsyslog
systemctl enable rsyslog
Finalmente, reinicie el servicio HAProxy para aplicar los cambios:
systemctl restart haproxy
También puede verificar el estado del servicio HAProxy con el siguiente comando:
systemctl status haproxy
Debería ver el siguiente resultado:
? 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 cortafuegos
A continuación, deberá configurar firewalld en todos los servidores y permitir el puerto 80 a través del firewall.
Puede ejecutar el siguiente comando para permitir el puerto 80:
firewall-cmd --permanent --add-port=80/tcp
A continuación, vuelva a cargar el servicio firewalld para aplicar los cambios.
firewall-cmd --reload
Configurar servidores backend
A continuación, deberá instalar el servidor Apache en ambos servidores backend. Ejecute el siguiente comando para instalar el servidor Apache.
dnf install httpd -y
Una vez que se haya instalado el servidor Apache, inicie el servicio Apache y habilítelo para que se inicie al reiniciar el sistema:
systemctl start httpd
systemctl enable httpd
A continuación, deberá modificar el archivo index.html predeterminado en ambos servidores backend.
En el primer servidor, edite el archivo index.html con el siguiente comando:
nano /usr/share/httpd/noindex/index.html
Elimine todas las líneas y agregue la siguiente línea:
Welcome to First Apache Web Server!
Guarde y cierre el archivo cuando haya terminado.
En el segundo backend, edite el archivo index.html con el siguiente comando:
nano /usr/share/httpd/noindex/index.html
Elimine todas las líneas y agregue la siguiente línea:
Welcome to Second Apache Web Server!
Guarde y cierre el archivo cuando haya terminado.
Verificar HAProxy
En este punto, HAProxy está configurado para reenviar todas las solicitudes entrantes a los servidores backend en función del algoritmo de equilibrio de carga. Ahora es el momento de comprobar si HAProxy funciona correctamente o no.
Abra su navegador web y escriba la IP de HAProxy en la URL http://172.16.10.10 . Debería ver la primera página de su servidor web apache:
A continuación, actualice la misma página nuevamente, debería ver la segunda página de su servidor web apache:
Esto confirma que HAProxy funciona como se esperaba y distribuye el tráfico entre dos servidores backend.
Conclusión
¡Felicidades! ha instalado y configurado con éxito el balanceador de carga HAProxy en Rocky Linux 8. Ahora puede implementar HAProxy en el entorno de producción para lograr un alto rendimiento y escalabilidad.