Cómo configurar el equilibrador de carga de Haproxy en Ubuntu 18.04 y 16.04

Cómo configurar el equilibrador de carga de Haproxy en Ubuntu 18.04 y 16.04

Haproxi es una solución muy rápida y confiable para una alta disponibilidad, equilibrio de carga, es compatible con TCP y aplicaciones basadas en HTTP. Hoy en día, la maximización de los sitios web es muy crucial para los sitios web de tráfico pesado. Esto no es posible con la configuración del servidor único. Luego necesitamos un entorno de alta disponibilidad que pueda administrarse fácilmente con una falla del servidor único.

Este artículo lo ayudará a configurar el entorno de equilibrio de carga de HaProxy en Ubuntu, Debian y LinuxMint. Esto configurará un Equilibrio de carga de capa 4 (Capa de transporte). Que equilibrará las solicitudes de carga y transferirá a diferentes 2 servidores en función de la dirección IP y los números de puerto.

Detalles de la red -

A continuación se muestra nuestro servidor de red. Hay 3 servidores web que se ejecutan con Apache2 y escuchan en el puerto 80 y un servidor HaProxy.

Detalles del servidor web: Servidor 1: Web1.ejemplo.com 192.168.1.101 servidor 2: web2.ejemplo.com 192.168.1.102 servidor 3: web3.ejemplo.com 192.168.1.103 Servidor haproxy:  Haproxy: Haproxy 192.168.1.12 

Paso 1 - Instale HaProxy

Ahora comience la configuración. SSH a su servidor HaProxy como usuario privilegiado e instalar HaProxy utilizando los siguientes comandos.

Sudo Add-APT-Repository PPA: Vbernat/HaProxy-1.8 sudo apt-get actualización sudo apt-get install haproxy 

Paso 2 - Configurar el equilibrio de carga de HaProxy

Ahora edite el archivo de configuración predeterminado de HaProxy /etc/haproxy/haproxy.CFG e iniciar la configuración.

sudo vi/etc/haproxy/haproxy.CFG 

Configuración por defecto:

Encontrará una configuración predeterminada como a continuación. Si no tiene suficiente idea sobre esto, puede mantener como es.

Global log/dev/log local0 log/dev/log local1 aviso chroot/var/lib/haproxy stats socket/run/haproxy/admin.Modo de calcetín 660 Nivel Estadísticas de administración Tiempo de espera 30s Usuario Group Haproxy HaProxy Daemon # Ubicaciones de material SSL predeterminadas CA-BASE/ETC/SSL/CERTS CRT-BASE/ETC/SSL/Privado # Cifradores predeterminados para usar en SSL-habilitado. # Para obtener más información, consulte Ciphers (1SSL). Esta lista es de: # https: // hynek.ME/Artículos/Endurecir-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 fausils log modo global modo http opción httPlog DONTLOGNULLULL TIMEOUT CONNECT 5000 TIMEOUT CLIENTE 50000 TIMEOUT SERVER 50000 Error archivo 400/etc/haproxy/errores/400.HTTP ErrorFile 403/etc/haproxy/errores/403.HTTP ErrorFile 408/etc/haproxy/errores/408.HTTP Errorfile 500/etc/haproxy/errores/500.HTTP ErrorFile 502/etc/haproxy/errores/502.HTTP Errorfile 503/etc/haproxy/errores/503.HTTP Errorfile 504/etc/haproxy/errores/504.http 

Agregar oyente de HaProxy:

Ahora dígale a Haproxy dónde escuchar nuevas conexiones. Según la configuración a continuación, HaProxy se enumerará en el puerto 80 de 192.168.1.12 dirección IP.

frontend local_server bind 192.168.1.12:80 Modo http default_backend my_web_servers 

Agregar servidores web de backend:

Según la configuración anterior, HaProxy ahora está escuchando en el puerto 80. Ahora defina los servidores web de backend donde haproxy envíe la solicitud.

Modo de nodos de back-end Balance HTTP Opción RoundRobin Opción Reenvía para HTTP-Request-Header X-Forwarded-Port %[dst_port] http-requisito-header https de protegido x-forwarded-proto.1RNHOST: LocalHost Server Web1.ejemplo.com 192.168.1.101: 80 servidor web2.ejemplo.com 192.168.1.102: 80 Servidor Web3.ejemplo.com 192.168.1.103: 80 

Habilitar estadísticas (opcional)

Ahora, si lo desea, puede habilitar las estadísticas de HaProxy agregando la siguiente configuración en el archivo de configuración de HaProxy.

Estadísticas de escucha *: 1936 Estadísticas Habilitar estadísticas Estadísticas de ocultación de hilera Actualización 30S STATS SHOW-NODO Estadísticas Auth Usern Nombre de usuario: Estadísticas de contraseña uri /estadísticas 

Paso 3 - Archivo final de configuración de HaProxy

El archivo de configuración final puede verse a continuación:

Global log/dev/log local0 log/dev/log local1 aviso chroot/var/lib/haproxy stats socket/run/haproxy/admin.Modo de calcetín 660 Nivel Estadísticas de administración Tiempo de espera 30s Usuario Group Haproxy HaProxy Daemon # Ubicaciones de material SSL predeterminadas CA-BASE/ETC/SSL/CERTS CRT-BASE/ETC/SSL/Privado # Cifradores predeterminados para usar en SSL-habilitado. # Para obtener más información, consulte Ciphers (1SSL). Esta lista es de: # https: // hynek.ME/Artículos/Endurecir-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 fausils log modo global modo http opción httPlog DONTLOGNULLULL TIMEOUT CONNECT 5000 TIMEOUT CLIENTE 50000 TIMEOUT SERVER 50000 Error archivo 400/etc/haproxy/errores/400.HTTP ErrorFile 403/etc/haproxy/errores/403.HTTP ErrorFile 408/etc/haproxy/errores/408.HTTP Errorfile 500/etc/haproxy/errores/500.HTTP ErrorFile 502/etc/haproxy/errores/502.HTTP Errorfile 503/etc/haproxy/errores/503.HTTP Errorfile 504/etc/haproxy/errores/504.http frontend local_server bind 192.168.1.12:80 Modo http default_backend my_web_servers backend my_web_servers balance de balance http opción redondeada opción avanzada para http-request set-header x-forwarded-puerto [dst_port] http-request add-header x-forwarded-procps if ssl_fc opción httpchk / headt / freader xforwarded-procp Http/1.1RNHOST: LocalHost Server Web1.ejemplo.com 192.168.1.101: 80 servidor web2.ejemplo.com 192.168.1.102: 80 Servidor Web3.ejemplo.com 192.168.1.103: 80 Estadísticas de escucha *: 1936 Estadísticas Habilitar estadísticas Estadísticas de ocultación de versiones Actualización 30S STATS SHOW-NODO Estadísticas Auth UserN Nombre de usuario: Estadísticas de contraseña Uri /Estadísticas 

Paso 4 - Reiniciar HaProxy

Ahora ha realizado todos los cambios necesarios en su servidor haproxy. Ahora verifique el archivo de configuración antes de reiniciar el servicio utilizando el siguiente comando.

haproxy -c -f/etc/haproxy/haproxy.CFG 

Si el comando anterior devuelve la salida como archivo de configuración es válido, reinicie el servicio haproxy

servicio de sudo haproxy reiniciar 

Paso 5 - Verifique la configuración de HaProxy

En esta etapa, tenemos una configuración de haproxy funcional completa. En cada nodo del servidor web, tengo un índice de demostración.Página HTML que muestra el nombre de host de servidores, por lo que podemos diferenciar fácilmente entre páginas web de servidores.

Ahora Access Port 80 en IP 192.168.1.12 (como se configuró anteriormente) en el navegador web y presione actualizar. Verá que Haproxy está enviando solicitudes a los servidores de backend uno por uno (según el algoritmo de round-robin).

Con cada actualización puede que Haproxy envíe una solicitud una por una a un servidor de backend.

Referencia: http: // www.haproxi.org/descargar/1.5/doc/configuración.TXT