Cómo configurar el balanceador de carga de alta disponibilidad con 'HAProxy' para controlar el tráfico del servidor web


HAProxy significa proxy de alta disponibilidad. Es una aplicación gratuita y de código abierto escrita en lenguaje de programación C. La aplicación HAProxy se utiliza como balanceador de carga TCP/HTTP y para soluciones de proxy. El uso más común de la aplicación HAProxy es distribuir la carga de trabajo entre múltiples servidores, por ejemplo, servidor web, servidor de base de datos, etc., mejorando así el rendimiento general y la confiabilidad del entorno del servidor.

La aplicación altamente eficiente y rápida es utilizada por muchas organizaciones de renombre mundial que incluyen, entre otras, Twitter, Reddit, GitHub y Amazon. Está disponible para plataformas Linux, BSD, Solaris y AIX.

En este tutorial, discutiremos el proceso de configuración de un balanceador de carga de alta disponibilidad usando HAProxy para controlar el tráfico de aplicaciones basadas en HTTP (servidores web) separando las solicitudes en múltiples servidores.

Para este artículo, usamos la versión estable más reciente de la versión HAProxy, es decir, 1.5.10 lanzada el 31 de diciembre de 2014. Y también usamos CentOS 6.5 para esta configuración, pero las instrucciones que se dan a continuación también funcionan en CentOS/RHEL/Distribuciones Fedora y Ubuntu/Debian.

Aquí nuestro servidor balanceador de carga HAProxy tiene el nombre de host como websrv.tecmintlocal.com con la dirección IP 192.168.0.125.

Operating System	:	CentOS 6.5
IP Address		: 	192.168.0.125
Hostname		: 	websrv.tecmintlocal.com

Las otras cuatro máquinas están en funcionamiento con servidores web como Apache.

Web Server #1 :	CentOS 6.5 [IP: 192.168.0.121] - [hostname: web1srv.tecmintlocal.com]
Web Server #2 :	CentOS 6.5 [IP: 192.168.0.122] - [hostname: web2srv.tecmintlocal.com]
Web Server #3 :	CentOS 6.5 [IP: 192.168.0.123] - [hostname: web3srv.tecmintlocal.com]
Web Server #4 :	CentOS 6.5 [IP: 192.168.0.124] - [hostname: web4srv.tecmintlocal.com]

Paso 1: instalar Apache en equipos cliente

1. Primero tenemos que instalar Apache en los cuatro servidores y compartir cualquiera de los sitios, para instalar Apache en los cuatro servidores aquí usaremos el siguiente comando.

# yum install httpd		[On RedHat based Systems]
# apt-get install apache2	[On Debian based Systems]

2. Después de instalar el servidor web Apache en las cuatro máquinas cliente, puede verificar si cualquiera del servidor se está ejecutando, accediendo a él a través de la dirección IP en el navegador.

http://192.168.0.121

Paso 2: Instalación de HAProxy Server

3. En la mayoría de las distribuciones modernas de Linux de hoy, HAPRoxy se puede instalar fácilmente desde el repositorio base predeterminado usando el administrador de paquetes predeterminado yum o apt-get.

Por ejemplo, para instalar HAProxy en las versiones RHEL/CentOS/Fedora y Debian/Ubuntu, ejecute el siguiente comando. Aquí también he incluido el paquete openssl, porque vamos a configurar HAProxy con soporte SSL y NON-SSL.

# yum install haproxy openssl-devel	[On RedHat based Systems]
# apt-get install haproxy		[On Debian based Systems]

Nota: En Debian Whezzy 7.0, necesitamos habilitar el repositorio de backports agregando un nuevo archivo backports.list en el directorio “/etc/apt/sources.list.d/” con el siguiente contenido.

# echo "deb http://cdn.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list.d/backports.list

A continuación, actualice la base de datos del repositorio e instale HAProxy.

# apt-get update
# apt-get install haproxy -t wheezy-backports

Paso 3: configurar registros de HAProxy

4. A continuación, debemos habilitar la función de registro en HAProxy para una futura depuración. Abra el archivo de configuración principal de HAProxy "/etc/haproxy/haproxy.cfg" con el editor que elija.

# vim /etc/haproxy/haproxy.cfg

A continuación, siga las instrucciones específicas de la distribución para configurar la función de registro en HAProxy.

En #Configuración global , habilite la siguiente línea.

log         127.0.0.1 local2

En #Configuración global , reemplace las siguientes líneas,

log /dev/log        local0
log /dev/log        local1 notice 

Con,

log         127.0.0.1 local2

5. A continuación, necesitamos habilitar la recepción de syslog UDP en el archivo de configuración "/etc/rsyslog.conf" para separar los archivos de registro para HAProxy en el directorio /var/log . Abra su archivo "rsyslog.conf" con el editor que elija.

# vim /etc/rsyslog.conf

Descommnet ModLoad y UDPServerRun, aquí nuestro servidor escuchará el puerto 514 para recopilar los registros en syslog.

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

6. A continuación, necesitamos crear un archivo separado "haproxy.conf" en el directorio "/etc/rsyslog.d/" para configurar archivos de registro separados.

# vim /etc/rsyslog.d/haproxy.conf

Agregue la siguiente línea al archivo recién creado.

local2.*	/var/log/haproxy.log

Finalmente, reinicie el servicio rsyslog para actualizar los nuevos cambios.

# service rsyslog restart