HAProxy significa Proxy de alta disponibilidad, es una herramienta de equilibrio de carga de código abierto y gratuita que permite equilibrar el tráfico entrante (TCP y basado en HTTP) mediante la distribución a través de los servidores back-end utilizando diferentes criterios.
En otras palabras, podemos decir que HAProxy se usa para proporcionar tolerancia a fallas y alta disponibilidad en caso de que un nodo reciba demasiadas solicitudes simultáneas. Es utilizado por los sitios web más famosos como GitHub, Stack Overflow y Tumbler.
En este artículo, discutiremos cómo instalar y configurar HAProxy en CentOS 8/RHEL 8 para servidores web Nginx. Los siguientes son los detalles de la configuración de mi laboratorio haproxy,
- Servidor HAProxy: 192.168.1.10 (haproxy-centos8)
- Servidor Nginx 1: 192.168.1.11 (nginx-node01)
- Servidor Nginx 2: 192.168.1.12 (nginx-node01)
Pasemos a los pasos de instalación y configuración de HAProxy en CentOS 8 / RHEL 8
Paso: 1) Actualice el archivo /etc/hosts de su servidor HAProxy
Inicie sesión en su sistema CentOS 8 o RHEL 8 donde instalará haproxy, agregue las siguientes líneas en el archivo /etc/hosts,
192.168.1.10 haproxy-centos8 192.168.1.11 nginx-node01 192.168.1.12 nginx-node02
Después de actualizar el archivo de hosts, asegúrese de poder hacer ping a los nodos de Nginx,
Paso: 2) Instalar y configurar HAProxy en CentOS 8 / RHEL 8
El paquete Haproxy está disponible en los repositorios de paquetes predeterminados de CentOS 8 y RHEL 8, por lo que se puede instalar fácilmente con el comando dnf. Pero se recomienda actualizar su sistema antes de instalar haproxy. Así que ejecuta el siguiente comando,
[email protected] ~]# dnf update -y [email protected] ~]# reboot
Ahora use el siguiente comando dnf para instalar haproxy,
[[email protected] ~]# dnf install haproxy
Una vez que el haproxy se haya instalado correctamente, configúrelo editando su archivo de configuración “/etc/haproxy/haproxy.cfg“.
Antes de editar el archivo, siempre es una buena práctica hacer una copia de seguridad del archivo original, ejecute el siguiente comando,
[[email protected] ~]# cd /etc/haproxy/ [[email protected] haproxy]# cp haproxy.cfg haproxy.cfg-org [[email protected] haproxy]#
En el archivo de configuración, modificaremos dos secciones Interfaz y back-end. En la sección Frontend definimos la IP haproxy y su puerto, uri de estadísticas y nombre de backend. En la sección Backend, definimos el tipo de algoritmo de equilibrio de carga que usaremos como round robin y conexión mínima, etc. y el nombre del servidor backend, IP y puerto, el ejemplo se muestra a continuación,
[[email protected] haproxy]# vi haproxy.cfg ………………… frontend http_balancer bind 192.168.1.10:80 option http-server-close option forwardfor stats uri /haproxy?stats # 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 nginx_webservers backend nginx_webservers mode http balance roundrobin option httpchk HEAD / HTTP/1.1rnHost: localhost server nginx-node01 192.168.1.11:80 check server nginx-node02 192.168.1.12:80 check ………………………………
Guardar y salir del archivo
Configure rsyslog para que almacene todas las estadísticas de HAProxy, edite el archivo de configuración de rsyslog “/etc/rsyslog.conf” y descomente las líneas 19 y 20,
[[email protected] ~]# vi /etc/rsyslog.conf …… module(load="imudp") input(type="imudp" port="514") ……
Guardar y salir del archivo.
Ahora cree el archivo haproxy.conf para rsyslog, pegue las siguientes líneas,
[[email protected] ~]# vi /etc/rsyslog.d/haproxy.conf local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
Guardar y salir del archivo
Reinicie y habilite el servicio rsyslog para que esté disponible durante los reinicios
[[email protected] ~]# systemctl restart rsyslog [[email protected] ~]# systemctl enable rsyslog
Ahora, finalmente, inicie haproxy, pero antes de iniciar el servicio haproxy, configure la siguiente regla de selinux,
[[email protected] ~]# setsebool -P haproxy_connect_any 1
Inicie y habilite haproxy usando debajo de los comandos systemctl
[[email protected] ~]# systemctl start haproxy [[email protected] ~]# systemctl enable haproxy
Permita el puerto haproxy (en nuestro caso es 80) en el firewall del sistema operativo, ejecute el comando debajo de firewall-cmd,
[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcp [[email protected] ~]# firewall-cmd --reload
Hasta ahora, la parte de instalación y configuración de HAProxy está completa, pasemos a los nodos Nginx,
Paso: 3) Instale NGINX e inicie su servicio
Inicie sesión en ambos nodos nginx, instale nginx e inicie su servicio con los siguientes comandos.
# dnf install nginx -y # systemctl start nginx # systemctl enable nginx
Modifiquemos el archivo index.html del nodo respectivo,
Para nginx-node01
[[email protected] ~]# cd /usr/share/nginx/html [[email protected] html]# echo "Nginx Node01 - Welcome to First Nginx Web Server" > index.html
Para nginx-node02
[[email protected] ~]# cd /usr/share/nginx/html [[email protected] html]# echo "Nginx Node02 - Welcome to 2nd Nginx Web Server" > index.html
Permita el puerto Nginx (80) en el firewall del sistema operativo en ambos nodos usando el siguiente comando,
# firewall-cmd --permanent --add-service=http # firewall-cmd --reload
Paso: 4) Pruebe si su HAProxy funciona correctamente o no
Inicie sesión en el servidor haproxy y ejecute el comando curl un par de veces para ver si el tráfico se distribuye por turnos.
[[email protected] ~]# curl 192.168.1.10
Perfecto, esto confirma que haproxy está funcionando correctamente ya que está distribuyendo el tráfico entre dos nodos,
Verifiquemos también desde el navegador web,
Arriba confirma que HAProxy se configuró correctamente en CentOS 8 y RHEL 8.
Puede ver el estado de su haproxy a través del navegador web, escriba url: http://
En nuestro caso, la URL será http://192.168.1.10/haproxy?stats
También podemos ver las estadísticas de HAProxy desde el archivo de registro ( /var/log/haproxy-access.log).
Eso es todo de este tutorial, espero que estos pasos lo ayuden a configurar HAProxy en CentOS 8 y RHEL 8 sin problemas. Por favor, comparta sus valiosos comentarios y opiniones.
Leer también: Cómo configurar Django Python Framework en CentOS 8