En este artículo, habremos explicado los pasos necesarios para instalar y configurar HAProxy Load Balancer en Ubuntu 18.04 LTS. Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo. Todos los comandos de este tutorial deben ejecutarse como un usuario no root.
HAProxy es una herramienta Linux de código abierto que proporciona equilibrio de carga de alta disponibilidad y servicios de proxy para aplicaciones de red basadas en TCP y HTTP. Debido a su fácil integración en las arquitecturas existentes, la idoneidad para sitios web de alto tráfico, la confiabilidad extrema y el enfoque en la compatibilidad ascendente, se envía de forma predeterminada en la mayoría de las distribuciones principales de Linux.
Instalar HAProxy en Ubuntu
Paso 1. Detalles de la red
En aras de la simplicidad, asumiremos las siguientes direcciones IP y nombres de host para las instancias:
- haproxy-server :dirección IP pública 198.18.0.1
- backend-server1 :dirección IP privada 172.16.0.1 , dirección IP pública 198.18.0.1
- backend-server2 :dirección IP privada 172.16.0.2 , dirección IP pública 198.18.0.2
Paso 2. Primero, antes de comenzar a instalar cualquier paquete en su servidor Ubuntu, siempre recomendamos asegurarse de que todos los paquetes del sistema estén actualizados.
sudo apt update sudo apt upgrade
Paso 3. Instale HaProxy en Ubuntu 18.04 LTS.
HaProxy está disponible en el repositorio de software de Ubuntu, por lo que podemos instalarlo usando el administrador de paquetes ejecutando el siguiente comando:
sudo add-apt-repository ppa:vbernat/haproxy-1.8 sudo apt-get update sudo apt-get install haproxy
Paso 4. Configuración del equilibrio de carga con HAProxy.
Ahora edite el archivo de configuración predeterminado de haproxy /etc/haproxy/haproxy.cfg e inicie la configuración:
sudo nano /etc/haproxy/haproxy.cfg
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 # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 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
Entonces, hacia el final del archivo, agregue el contenido a continuación:
frontend ourwebsitefrontend bind *:80 mode http default_backend ourwebsiteendpoin
El parámetro bind le dice a HaProxy que escuche el puerto 80 en busca de conexiones. Al final del texto, hemos especificado ourwebsiteendpoint como la directiva donde se ubican nuestros puntos finales. Ahora podemos continuar y agregar los detalles de configuración de back-end de la siguiente manera:
backend ourwebsiteendpoint
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server backend-server1 172.16.0.1:8080 check
server backend-server2 172.16.0.2:8080 check
Ahora, si lo desea, puede habilitar las estadísticas de Haproxy agregando la siguiente configuración en el archivo de configuración de HAProxy:
listen stats bind :32600 stats enable stats uri / stats hide-version stats auth username:password
Paso 5. Archivo de configuración final de HAProxy.
El archivo de configuración final puede tener el siguiente aspecto:
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 # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM$ ssl-default-bind-options no-sslv3 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 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 ourwebsitefrontend bind *:80 mode http default_backend ourwebsiteendpoint backend ourwebsiteendpoint balance roundrobin option forwardfor http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } option httpchk HEAD / HTTP/1.1\r\nHost:localhost server backend-server1 172.16.0.1:8080 check server backend-server2 172.16.0.2:8080 check listen stats bind :32600 stats enable stats uri / stats hide-version stats auth username:password
Luego, reinicie el servidor HaProxy para recargar los cambios:
sudo service haproxy restart
Paso 6. Prueba de la configuración.
En esta etapa, tenemos una configuración de HAProxy completamente funcional. En cada nodo de servidor web tengo una página de demostración index.html que muestra el nombre de host de los servidores, por lo que podemos diferenciar fácilmente las páginas web de los servidores.
Ahora acceda al puerto 80 en la IP 198.18.0.1 (como se configuró anteriormente) en el navegador web y presione actualizar. Verá que HAProxy está enviando solicitudes al servidor back-end una por una (según el algoritmo de turno rotativo).
Eso es todo lo que necesita hacer para instalar HAProxy Load en Ubuntu 18.04. Espero que encuentre útil este consejo rápido. Si tiene preguntas o sugerencias, no dude en dejar un comentario a continuación.