Introducción al Balanceo de Carga en

Aplicaciones Web
David Palacio Vargas, Andrés Felipe Abril Romero
Universidad del Quindío
Armenia, Quindío
david_palacio24@hotmail.com, afelipe.abril@gmail.com
Abstract-- Los requerimientos actuales de rendimiento y
disponibilidad de la web hacen indispensable el balanceo de la
carga; uno de los propósitos de los sistemas distribuidos es
permitir aplicaciones y procesos de servicio para proceder
concurrentemente sin competir por los mismos recursos y
aprovechar los recursos computacionales disponibles. En este
documento se dará una breve introducción al balanceo de carga en
aplicaciones web.

I.

INTRODUCCIÓN

En los últimos años se ha visto una marcada tendencia
hacia el desarrollo de páginas web, los requisitos no
funcionales deben ser analizados detenidamente teniendo en
cuenta la capacidad de escalabilidad del sitio en un futuro,
tratando de limitar al máximo los errores de desempeño,
seguridad, concurrencia, disponibilidad que podrían afectar el
tiempo de respuesta del mismo, y retrasar procesos
importantes dentro de la organización.
Actualmente debido al gran número de servicios de
internet y la transferencia de información es indispensable que
estos servicios funcionen óptimamente los 365 días del año [1]
Las organizaciones que quieren competir en el mercado
Web se ven sujetas a un gran número de atributos que
garantizan la calidad de su sitio web, a medida que el sitio
crece en número de aplicaciones y de usuarios accediendo a
estas, se evidencian los fallos de estos atributos hasta tal punto
de quedarse corto en tiempo de respuesta para los diferentes
usuarios que acceden al sitio.
Existen diversas formas de dar solución a este problema
ya sea aplicando un crecimiento vertical en cuanto a
adquisición de nuevos servidores y/o equipos con mejores
especificaciones, o un crecimiento horizontal con respecto a la
utilización de los recursos activos para distribuir la carga de
procesamiento en más de un servidor.
El presente artículo pretende dar a conocer una
introducción al balanceo de carga, definiendo algunos
conceptos importantes y diferentes formas de la
implementación de soluciones mediante el balanceo de carga
II.

Existen numerosas formas de hacer balanceo de carga, por
hardware (DNS), por software o una combinación de los dos.
El balanceo de carga está especialmente indicado para
entornos en los que es muy difícil prever el volumen de carga
de trabajo.
El factor de división de carga se puede definir, dando más
o menos carga a cada uno de los sistemas implicados. Esta
característica se llama carga asimétrica. [2]
A.

Balanceo de carga por hardware

La forma más sencilla de balancear una solicitud entre
varias máquinas en un pool es utilizar un dispositivo
hardware, sin embargo; se debe conectar, encender realizar un
ajuste básico de la configuración y empezar a servir el tráfico.
Existen algunas desventajas al utilizar un dispositivo
hardware. La configuración puede llegar a ser un dolor de
cabeza.
Balanceo de carga por medio de un router
balanceador: Si hay varias rutas al mismo destino
con costos iguales, es razonable utilizar a todos y
compartir el tráfico en partes iguales entre los
caminos. Caminos alternativos están garantizados
para ser libre de bucles, ya que son “simétricas” con
respecto al costo de la ruta principal. Si hay varias
rutas de costo desigual, la misma idea no podía ser de
fácil aplicación, como lo muestra la Fig. 1.

BALANCEO DE CARGA

Balanceo de Carga significa dividir el total de trabajo que
un sistema o computadora tiene que hacer entre dos o más
sistemas o computadoras. Así pues esta división de carga
permite realizar el mismo trabajo en una porción de tiempo
más reducida, o lo que es lo mismo; permite realizar más
carga de trabajo en el mismo tiempo total.

Fig. 1: Distancia entre enrutadores (routers)

Si el router recibe e instala varias rutas
con la misma distancia y costes a un destino,
puede ocurrir balanceo de carga. El número

Un equilibrador de carga es un servidor (o dispositivo) que equilibra las solicitudes a través de una serie de servidores para distribuir la carga. y procesamiento de cabeceras. balanceador de carga y HTTPS front-end para el servidor web. Algunas implementaciones comunes de balanceo de carga basado en el software incluyen aquellos incluidos dentro de Microsoft Windows o Linux. así como un rendimiento similar a la de soluciones basadas en hardware. donde una entrada es el valor predeterminado [3] B. y AJP13. [4] Pound: es un proxy inverso. Perlbal ofrece apoyos simples a de balanceo HTTP a varios servidores back-end sobre la marcha esta es una característica que define a perlbal que casi todo se puede configurar o reconfigurar sobre la marcha sin necesidad de reiniciar el software. 2: Esquema de un sistema típico basado en HTTP Como podemos observar en la Fig. con la excepción de la Border Gateway Protocol (BGP). hay 3 algoritmos de balanceo de carga disponibles para su uso: Conteo de Solicitud. debiendo asegurarnos de que cualquier modulo que se va a utilizar este previamente cargado Fig. es gratis para usar. [5] Linux Virtual Server (LVS): es un sistema de alta disponibilidad y altamente escalable para manejar un cluster de servidores reales por diseño la arquitectura del “servidor de cluster” es transparente para el usuario final lo que permite a este interactuar con él como si se tratara de un solo servidor. Estos son controlados a través de la lbmethod valor de la definición de equilibrado. Tráfico ponderado de conteo y la espera de contar solicitud. Ver Fig. pero también tiene otras características. Pound se distribuye bajo la licencia GPL . La alta disponibilidad es proporcionada por la detección de nodos o bien por fallas de algún demonio. Perlbal: es un servicio gratuito basado en el balanceo de carga de aplicaciones. Balanceo de carga por software Balanceo de carga por software se proporciona en una de dos maneras: como una parte de un sistema operativo o como una aplicación complemento. En la actualidad.no ofrece ninguna garantía. comprensión.de rutas de acceso utilizadas está limitado por el número de entradas que el protocolo de enrutamiento pone en la tabla de enrutamiento. reescritura de la url. El balanceo de carga que se implementa como una solución basada en software a menudo pueden ofrecer la facilidad de despliegue y mantenimiento. Pound fue desarrollado para permitir la distribución de la carga entre varios servidores de Web y para permitir una envoltura conveniente SSL para los servidores web que no ofrecen de forma nativa. y la reconfiguración del sistema de forma adecuada. Un proxy inverso puede hacer esto. 2: LVS La escalabilidad del sistema se alcanza gracias a la transparencia al momento de agregar o quitar nodos al cluster. . FTP. Cuatro entradas es el valor por defecto en IOS para la mayoría de protocolos de enrutamiento IP. 3. 2 Fig. [6] C. copiar y regalar. El módulo Apache mod_proxy_balance requiere le servicio de mod_proxy que proporciona soporte para balanceo de carga en los protocolos HTTP. Balanceo de Carga sobre el servidor Web Apache El servidor web apache incluye diversos módulos para soportar balanceo de carga. [8] 1. 3 las capacidades básicas de apache incluyen características tales como una cache. 2.

se tiene en cuenta la cantidad de tráfico que este trabajador ha visto. Una conexión de capa 4 es establecida y balanceada en uno de los servidores reales disponibles. El elemento más frecuente usado para balancear en la capa 7 es la URL de la petición HTTP en sí. 2. que queremos que este trabajador maneje. ESCALABILIDAD La escalabilidad debe formar parte del proceso de diseño porque no es una característica separada que se pueda agregar después. El escalado incluye agregar más memoria. Los balanceadores de carga de la capa 7 inspeccionan el mensaje hasta la capa 7. [9] F. para asegurar que el tamaño de la cola se mantiene impar y una solicitud siempre se le da al trabajador más probable para dar servicio más rápido a ella. Aquí tomamos cada conexión entrante y la dirigimos al primer servidor listado en el backend y así sucesivamente hasta que una petición sea enviada a cada backend de los servidores. Una nueva solicitud se asigna automáticamente a los trabajadores con el menor número de solicitudes activas. Con el tiempo. o de cuotas de los trabajadores en el trabajo . Este es un valor normalizado que representa su "parte" de la cantidad de trabajo por hacer. En el caso de menos trabajadores ocupados. en bytes. Puede avanzar grandes pasos que aumenten la escalabilidad de un dominio sólo para sabotearlos cometiendo errores en el otro. este programador mantiene un registro de número de solicitudes que cada trabajador se le asigna en la actualidad. tan bien como la información regular de la capa 4. 3. CAPA 4 Tradicionalmente. 4 [10] . simplemente. El balanceador de carga solamente necesita capturar la petición en esta capa desde el flujo TCP que contiene toda la información que necesitamos para enrutar la petición – la dirección fuente y destino y el puerto. lbstatus es la urgencia que el trabajador tiene de trabajar para cumplir con su cuota de trabajo. Esto también es un valor normalizado que representa su "parte" de la cantidad de trabajo por hacer. [9] E. CAPA 7 El balanceo de carga en la capa 7 es un recién llegado a la fiesta. este método permite un aumento en la capacidad sin requerir cambios en el código fuente. Esto nos permite mirar la petición y sus encabezados y usar esos como parte de nuestra estrategia de balanceo. 1. migrar la aplicación a un único equipo más potente. las decisiones que se tomen durante las primeras fases de diseño y codificación determinarán en gran medida la escalabilidad de la aplicación. Ver Fig. Todo lo que se necesita en el nivel del balanceador de carga es una lista de los servidores reales y una variable que marque el último servidor usado. En este momento. Escalar en vertical: El escalado en vertical es el término que más se utiliza para lograr escalabilidad utilizando software mejor. Normalmente. Al igual que con otras funciones de aplicación. la idea detrás de este programador es muy similar al método de solicitud de recuento. por lo general un host remoto que sirve uno de los protocolos soportados. Por balanceo basado en la URL. la distribución del trabajo se llega a parecerse a esa característica de byrequests. Esto es útil en el caso de los trabajadores que pasan a cola las solicitudes entrantes de manera independiente de Apache. las cosas permanecen igual puesto que sigue habiendo un único equipo que administrar. lbfactor es lo que hay que esperar para que el trabajador trabaje. pero en lugar de simplemente contar el número de solicitudes. [8] Trafico ponderado de conteo: Habilitado a través lbmethod = bytraffic.Por lo tanto con el fin de obtener capacidad de balanceo de carga el mod_proxy_balance y mod_proxy tienen que estar cargados en el servidor web apache [8] A continuación los 3 algoritmos de balanceo de carga que el programador dispone para su uso: 1. La forma más simple del balanceo de carga en la capa 4 es usar un algoritmo round robin. el balanceo de carga ha sido asunto de la capa 4 (TCP). incluyendo dirección fuente y destino. con los siguientes cambios: lbfactor es la cantidad de tráfico. [8] D. las estadísticas que utiliza el método de conteo solicitud se utilizan para romper el empate. La escalabilidad de una aplicación requiere una pertenencia equilibrada entre dos dominios distintos. Desde el punto de vista administrativo. podemos dirigir la conexión al puerto correcto en el backend. Podemos entonces balancear peticiones basados en la información de la cadena consulta. examinan la petición HTTP misma. Conteo de solicitud: Habilitado a través de lbmethod = byrequests. más procesadores o procesadores más rápidos o. la siguiente nueva petición es enviada al primer servidor del backend y el proceso empieza de nuevo. en cookies o algún encabezado que escogemos.[8] Solicitud pendiente de conteo: Habilitado a través lbmethod = bybusyness. software y hardware. la idea detrás de este planificador es distribuir las solicitudes entre los diferentes workers para asegurarse que cada uno recibe su parte de configurar el número de solicitudes. más rápido y más caro. podemos asegurar que todas las peticiones por un recurso específico van a un servidor único. El trabajador es miembro del equilibrador de carga. Dada esta información.

. de Cisco Computing Systems: http://www. tolerante.pdf [9] Henderson.google. M. Cisco Computing Systems. (25 de 11 de 2011). no habría ningún beneficio en la implementación de un balanceo de carga por software para el tráfico de Internet en comparación con un balanceo de carga por hardware IV. Barcelona: UOC. & Colobran Huguet. Aunque el escalado en horizontal se logra utilizando muchos equipos. 4 Escalabilidad vertical 2. Ver Fig.html [4] Perlbal. o por software. Marco Galindo. Loja. Tinoco T. Información y Distribución GRID. le apasiona el Desarrollo de Software y es investigador en el área de redes perteneciendo al grupo de investigación en Redes. Recuperado el 4 de Octubre de 2011. El balanceo de carga se puede lograr de varias formas. 5 Escalabilidad Horizontal III.com/en/US/docs/ios/12_2/ip/config uration/guide/1cfigrp. de https://www.ch/pound/ [6] Quiroz.apsis. es estudiante de IX semestre de ingeniería de sistemas y computación de la Universidad del Quindío. rendimiento y estabilidad. Recuperado el 2 de 12 de 2011. Al dedicar varios equipos a una tarea común. desde el punto de vista del administrador.com/eses/library/ms123401. (s. Recuperado el 25 de 11 de 2011. Administracion de sistemas operativos en red. (25 de 11 de 2011). (2008).linux-magazine.es/issue/43/031034_BalanceoApacheLM43. [2] Arqués Soldevila.com/p/perlbal/ [5] Apsis. Recuperado el 25 de 11 de 2011. gravenstein highway north sebastopol: O`REALLY [10] Microsoft. Apache Web Server es el servidor Web más frecuentemente usado a nivel mundial y gracias a esto cuenta con un alto grado de madurez. B. Linux Virtual Server (LVS). mejora la tolerancia de errores de la aplicación.). [3] Cisco. Cabrera PJ. Introduction to Software Load Balancing with Amazon EC2. Apsis it security. (2006). de Apsis it security: http://www. Building Scalable Web sites. M. 2008 http://aws. (s. es Ingeniero de Sistemas y Computación. Recuperado el 04 de 08 de 2011.).. la colección funciona esencialmente como un único equipo. de MSDN library: http://msdn.com/articles/1639 [8] Abele.aspx .f. Si el costo no fuera un problema. Escalar en horizontal aprovecha el ahorro que supone utilizar el hardware de PC activo para distribuir la carga de procesamiento en más de un servidor. W.microsoft. E. le apasionan las redes la programación y los sistemas distribuidos actualmente pertenece a el semillero y al grupo de investigación GRID de la universidad del Quindío V.). Cluster de balanceo de carga y alta disponibilidad para servicios web y mail. Andrés Felipe Abril R se caracteriza por ser una persona con iniciativa. a través de equipos hardware especializados. (s. D. Fig. REFERENCIAS [1] Contento T M. Ecuador.f.   CONCLUSIONES Los requerimientos actuales de rendimiento y disponibilidad de la web hacen indispensable el balanceo de la carga. escalar en horizontal presenta un desafío mayor de administración debido al mayor número de equipos. 5 [10] Fig. Por supuesto. Chile [7] Oriyano S. Escalar en horizontal: Una alternativa a escalar en vertical es escalar en horizontal.P. de Perbal: http://code. C. E. ACERCA DE LOS AUTORES David Palacio Vargas se caracteriza por ser un hombre sociable. creativa y emprendedora. & Espinoza. MSDN library.cisco. J. estudiante de IX semestre de la Universidad del Quindío.amazon.f. respetuoso y responsable. Perbal.