Cómo instalar y configurar HAProxy en CentOS 8 / RHEL 8

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,

Nginx-nodos-conectividad-haproxy-servidor

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

dnf-instalar-haproxy-centos8

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

haproxy-cfg-centos8

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

curl-comando-para-verificar-haproxy

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,

haproxy-test-centos8

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:///haproxy?stats

En nuestro caso, la URL será http://192.168.1.10/haproxy?stats

HaProxy-Estadísticas-Web

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

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *