
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.