Está en la página 1de 4

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE

Facultad de ingeniería
Servicios Telemáticos
II Periodo de 2019

Balanceador de carga usando HAProxy más pruebas de carga con JMeter


J. C. Candela, J. C. García, J. L. Santamaría, F. L. Mosquera

Facultad de ingeniería, Universidad Autónoma de Occidente, Ala Norte, Cali Colombia

Recibido: 12 de noviembre de 2019


RESUMEN
En el desarrollo de la práctica denominada “Balanceador de carga usando HAProxy más pruebas de
carga con JMeter” se implementa un clúster de servidores Web (para la práctica se encuentra en un rango
de dos tres), los cuales brindan un servicio de HTTP, estos se encuentran conectados a un Servidor de
Balanceo de Carga implementado por medio de HAProxy, este balanceador interactúa frente a las
solicitudes de un cliente que para ejercicio de la práctica puede ser diversos navegadores Web o browser
como Google Chrome o Mozilla o más específicamente con la herramienta de prueba Jmeter que puede
realizar diversas peticiones al distribuidor y evaluar sus resultados; el balanceador debe atender
constantemente las solicitudes de estos clientes y redirigir a sus servidores internos de la red gracia a que
el distribuidor de cargas acepta solicitudes por su frontend y las transfiere al interno de su red por su
backend para que ninguna solicitud sea atendida directamente por los servidores Web, optimizando los
ingresos de solicitudes e impidiendo las posibles congestiones con el fin de maximizar rendimiento y no
sobrecargar servidores.

PALABRAS CLAVE: Optimizador, redireccionamiento, balanceo de cargas, distribución, frontend, backend.

● Realizar pruebas de distribución de solicitudes en el


OBJETIVOS
balanceador de carga utilizando Jmeter como
1. Objetivo principal evaluador.
● Implementar un clúster de servidores Web con un
balanceador de carga HAPRoxy capaz de atender
solicitudes externas de clientes, redirigiendo las
solicitudes a los servidores internos de HTTP. CONTEXTUALIZACIÓN

2. Objetivos específicos Los servidores generalmente cuentan con una capacidad de


proceso muy por encima de la de un ordenador convencional,
sin embargo, también tienen unas altas cargas de proceso
● Consultar e indagar documentación de HAproxy y que, en función de su hardware, pueden ser capaces de
su implementación en servidores CentOS. manejar sin problemas o, de lo contrario, es posible que no
llegue a cumplir con los requisitos y se bloqueen con las
● Configurar e implementar un balanceador de carga correspondientes consecuencias de esto.
utilizando HAproxy en CentOS.

● Implementar máquinas con servicios web (HTTP) Para evitar que esto ocurra, los administradores de sistemas
optan por utilizar balanceadores de carga, dispositivos que
que atiendan las solicitudes dirigidas por el
monitorizan los equipos de una red de servidores y reparten
balanceador de carga.
la carga total de proceso entre varios de manera que ninguno
● Consultar e indagar documentación de pruebas a de ellos llegue a su límite mientras los demás están sin carga.
distribuidores de carga con Jmeter como evaluador.
Para la distribución de tráfico haciendo uso del equilibrio de
carga una solución muy común es utilizar HAProxy que
significa High Availability Proxy (Proxy de alta

1
Lab 3. Ley de Ohm

disponibilidad). Este es un software de código abierto más Como requisito previo para obtener los mejores resultados,
populares que ofrece alta disponibilidad y funcionalidad del debe tener:
proxy.
1. Un mínimo de dos servidores web
Sus objetivos principales son: 2. Un servidor para el equilibrador de carga.
3. Los servidores web deben ejecutar al menos el
1. Optimizar el uso de recursos. servicio web básico para este caso será httpd para
2. Maximizar el rendimiento. probar el equilibrio de carga entre ellos.
3. Minimizar el tiempo de respuesta.
4. Evitar la sobrecarga de cualquier recurso
DESARROLLO E IMPLEMENTACIÓN
individual.
Como una aplicación de código abierto de rápido desarrollo,
HAProxy se encuentra disponible en muchas distribuciones HAProxy disponible para instalar en los repositorios
de Linux como por ejemplo Centos. A continuación, se predeterminados de CentOS podría no ser la última versión.
describe la implementación con los siguientes Para saber qué número de versión se ofrece a través de los
requerimientos principales: canales oficiales, ingrese el siguiente comando.
1. Clúster de servidores web con balanceo de carga yum info haproxy
2. Configuración de ambiente para pruebas de carga
Ahora verifique que tenga los requisitos previos para
descargar y compilar el programa.
PARTE 1: Clúster de servidores web con balanceo de
yum install gcc pcre-devel tar make -y
carga.
Descargue el código fuente con el siguiente comando.
Se requiere implementar un clúster de servidores web con
balanceo de carga. El balanceador de carga funcionará como
wget
Frontend del servidor web. Cada vez que se envíe una
http://www.haproxy.org/download/2.0/src/haproxy
petición al balanceador de carga, éste se encargará de
-2.0.7.tar.gz -O ~/haproxy.tar.gz
redirigir la petición a uno de los servidores del clúster.
Dichos servidores alojan los recursos necesarios para
Una vez que se complete la descarga, extraiga los archivos
resolver las peticiones.
con el siguiente comando.
En ningún caso las peticiones realizarán directamente a los
tar xzvf ~/haproxy.tar.gz -C ~/
servidores web, sino que el balanceador de carga decidirá qué
servidor será el encargado de procesar la petición. Los
servidores en el backend deben correr un servicio web como. Cambie al directorio de origen extraído.
En la siguiente figura se muestra la configuración a realizar.
cd ~/haproxy-2.0.7

Luego compile el programa para su sistema.

make TARGET=linux-glibc

Y finalmente, instale HAProxy.

make install

Una vez hecho esto, HAProxy ya está instalado, pero


requiere algunos pasos adicionales para que funcione.

2
Configuración del software y los servicios. systemctl start firewalld

A continuación, agregue los siguientes directorios y el systemctl enable firewalld


archivo de estadísticas para los registros HAProxy.
firewall-cmd --permanent --zone=public --add-service=http
mkdir -p /etc/haproxy
firewall-cmd --permanent --zone=public --add-
mkdir -p /var/lib/haproxy port=8181/tcp

touch /var/lib/haproxy/stats firewall-cmd --reload

Cree un enlace simbólico para el binario que le permita Configurar el equilibrador de carga en la capa 4
ejecutar comandos HAProxy como usuario normal.
Básicamente, todo lo que necesita hacer es decirle a
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy HAProxy qué tipo de conexiones debe estar escuchando y
dónde se deben transmitir las conexiones.
Si desea agregar el proxy como un servicio al sistema, copie
el archivo haproxy.init de los ejemplos en su directorio Esto se hace creando un archivo de configuración
/etc/init.d . /etc/haproxy/haproxy.cfg con la configuración de definición.
Comience con una configuración básica. Cree un nuevo
Cambie los permisos del archivo para hacer que el script sea archivo de configuración.
ejecutable y luego vuelva a cargar el demonio systemd.
vim /etc/haproxy/haproxy.cfg
cp~ /haproxy-2.0.7/examples/haproxy.init
/etc/init.d/haproxy Agregue las siguientes líneas al archivo.

chmod 755 /etc/init.d/haproxy global


log /dev/log local0
systemctl daemon-reload log /dev/log local1 notice
chroot /var/lib/haproxy
Para uso general, también se recomienda agregar un nuevo stats timeout 30s
usuario para que se ejecute HAProxy. user haproxy
group haproxy
chkconfig haproxy on daemon
Para uso general, también se recomienda agregar un nuevo
defaults
usuario para que se ejecute HAProxy.
log global
mode http
useradd -r haproxy
option httplog
option dontlognull
Luego, puede verificar el número de versión instalado con el timeout connect 5000
siguiente comando. timeout client 50000
timeout server 50000
haproxy -v
frontend http_front
Por último, el firewall en CentOS es bastante restrictivo para bind *:80
este proyecto por defecto. Use los siguientes comandos para stats uri /haproxy? stats
permitir los servicios requeridos y volver a cargar el firewall default_backend http_back
no sin antes iniciar el servicio.

3
Lab 3. Ley de Ohm

backend http_back Con el HAProxy configurado y en ejecución, abra la IP


balance roundrobin pública del servidor del equilibrador de carga en un
server servidorWeb1 192.168.10.10:80 check navegador web y compruebe que se ha conectado
server servidorWeb2 192.168.10.20:80 check correctamente a su backend. El parámetro stats uri en la
configuración habilita la página de estadísticas en la
Esto define un equilibrador de carga de capa 4 con un nombre dirección definida.
de front-end http_front que escucha el número de puerto 80,
que luego dirige el tráfico al backend predeterminado
http://192.168.10.3/haproxy?stats
llamado http_back.

Con la instrucción URI / haproxy? Stats se habilitará la


página de estadísticas en esa dirección especificada.

Diferentes algoritmos de equilibrio de carga

Los algoritmos de equilibrio se utilizan para decidir a qué ANÁLISIS Y RESULTADOS


servidor en el backend se transfiere cada conexión. Algunas
de las opciones útiles incluyen las siguientes:
Desde hace bastante tiempo que las páginas web no son de una única
instancia, o sea se no se encuentran alojadas en un único servidor
Roundrobin: En caso de no definir el método, este se
que resuelve constantemente solicitudes, debido al crecimiento de
encontrara como predefinido. Cada servidor se utiliza por internet, a la accesibilidad de las personas a esta, las máquinas que
turnos de acuerdo con sus pesos. Este es el algoritmo más brindan servicios como HTTP, DNS, correo y otros comenzaron a
suave y justo cuando el tiempo de procesamiento de los evolucionar a clusters que resuelven grandes cantidades de
servidores permanece distribuido equitativamente. Este solicitudes al día, ya sea de servicios de comprar, comunicación,
entretenimiento o laborales; donde cada persona que se conecte
algoritmo es dinámico, lo que permite ajustar los pesos del
siempre está solicitando un servicio a una instancia y en tal caso de
servidor sobre la marcha. que ya lo tenga, requiere “mantener session”
Los balanceadores de carga se pueden tomar como dispositivos
Leastconn: se elige el servidor con el menor número de
hardware o software que se encargan de direccionar peticiones a
conexiones. La operación por turnos se realiza entre cluster de servidores que poseen una misma aplicación, como en el
servidores con la misma carga. Se recomienda utilizar este momento que un usuario de algún aplicativo como Facebook o
algoritmo con sesiones largas, como LDAP, SQL, TSE, etc., Youtube (grandes plataformas muy utilizadas constantemente por
pero no es muy adecuado para sesiones cortas como HTTP. usuarios de todas partes del globo terráqueo)

First: El primer servidor con ranuras de conexión disponibles


recibe la conexión. Los servidores se eligen desde el DISCUSIÓN
identificador numérico más bajo hasta el más alto, que por
defecto es la posición del servidor en la granja. Una vez que
un servidor alcanza su valor maxconn, se usa el siguiente
CONCLUSIONES
servidor.

Source: la dirección IP de origen se divide en hash y se divide BIBLIOGRAFÍA


por el peso total de los servidores en ejecución para designar
qué servidor recibirá la solicitud. De esta manera, la misma
dirección IP del cliente siempre llegará al mismo servidor
mientras los servidores permanecen igual.

Probar la configuración

También podría gustarte