Vous êtes sur la page 1sur 4

Introduccin al Balanceo de Carga en

Aplicaciones Web
David Palacio Vargas, Andrs Felipe Abril Romero
Universidad del Quindo
Armenia, Quindo
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 propsitos 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 introduccin al balanceo de carga en
aplicaciones web.

I.

INTRODUCCIN

En los ltimos aos se ha visto una marcada tendencia


hacia el desarrollo de pginas 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 mximo los errores de desempeo,
seguridad, concurrencia, disponibilidad que podran afectar el
tiempo de respuesta del mismo, y retrasar procesos
importantes dentro de la organizacin.
Actualmente debido al gran nmero de servicios de
internet y la transferencia de informacin es indispensable que
estos servicios funcionen ptimamente los 365 das del ao [1]
Las organizaciones que quieren competir en el mercado
Web se ven sujetas a un gran nmero de atributos que
garantizan la calidad de su sitio web, a medida que el sitio
crece en nmero 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 solucin a este problema
ya sea aplicando un crecimiento vertical en cuanto a
adquisicin de nuevos servidores y/o equipos con mejores
especificaciones, o un crecimiento horizontal con respecto a la
utilizacin de los recursos activos para distribuir la carga de
procesamiento en ms de un servidor.
El presente artculo pretende dar a conocer una
introduccin al balanceo de carga, definiendo algunos
conceptos importantes y diferentes formas de la
implementacin de soluciones mediante el balanceo de carga
II.

Existen numerosas formas de hacer balanceo de carga, por


hardware (DNS), por software o una combinacin de los dos.
El balanceo de carga est especialmente indicado para
entornos en los que es muy difcil prever el volumen de carga
de trabajo.
El factor de divisin de carga se puede definir, dando ms
o menos carga a cada uno de los sistemas implicados. Esta
caracterstica se llama carga asimtrica. [2]
A.

Balanceo de carga por hardware

La forma ms sencilla de balancear una solicitud entre


varias mquinas en un pool es utilizar un dispositivo
hardware, sin embargo; se debe conectar, encender realizar un
ajuste bsico de la configuracin y empezar a servir el trfico.
Existen algunas desventajas al utilizar un dispositivo
hardware. La configuracin 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 trfico en partes iguales entre los
caminos. Caminos alternativos estn garantizados
para ser libre de bucles, ya que son simtricas con
respecto al costo de la ruta principal. Si hay varias
rutas de costo desigual, la misma idea no poda ser de
fcil aplicacin, 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 ms
sistemas o computadoras. As pues esta divisin de carga
permite realizar el mismo trabajo en una porcin de tiempo
ms reducida, o lo que es lo mismo; permite realizar ms
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 nmero

de rutas de acceso utilizadas est limitado


por el nmero de entradas que el protocolo
de enrutamiento pone en la tabla de
enrutamiento. Cuatro entradas es el valor por
defecto en IOS para la mayora de
protocolos de enrutamiento IP, con la
excepcin de la Border Gateway Protocol
(BGP), donde una entrada es el valor
predeterminado [3]
B. 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
aplicacin complemento. El balanceo de carga que se
implementa como una solucin basada en software a menudo
pueden ofrecer la facilidad de despliegue y mantenimiento, as
como un rendimiento similar a la de soluciones basadas en
hardware. Algunas implementaciones comunes de balanceo de
carga basado en el software incluyen aquellos incluidos dentro
de Microsoft Windows o Linux. [8]
1.

2.

3.

Perlbal: es un servicio gratuito basado en el


balanceo de carga de aplicaciones. Perlbal ofrece
apoyos simples a de balanceo HTTP a varios
servidores back-end sobre la marcha esta es una
caracterstica que define a perlbal que casi todo
se puede configurar o reconfigurar sobre la
marcha sin necesidad de reiniciar el software. Un
equilibrador de carga es un servidor (o
dispositivo) que equilibra las solicitudes a travs
de una serie de servidores para distribuir la
carga. Un proxy inverso puede hacer esto, pero
tambin tiene otras caractersticas. [4]
Pound: es un proxy inverso, balanceador de
carga y HTTPS front-end para el servidor
web. Pound fue desarrollado para permitir la
distribucin 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. Pound se distribuye bajo la licencia
GPL - no ofrece ninguna garanta, es gratis para
usar, copiar y regalar. [5]

Linux Virtual Server (LVS): es un sistema de alta


disponibilidad y altamente escalable para
manejar un cluster de servidores reales por
diseo 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. Ver Fig. 2

Fig. 2: LVS

La escalabilidad del sistema se alcanza


gracias a la transparencia al momento de agregar
o quitar nodos al cluster. La alta disponibilidad
es proporcionada por la deteccin de nodos o
bien por fallas de algn demonio, y la
reconfiguracin del sistema de forma adecuada.
[6]
C. Balanceo de Carga sobre el servidor Web Apache
El servidor web apache incluye diversos mdulos para
soportar balanceo de carga, debiendo asegurarnos de que
cualquier modulo que se va a utilizar este previamente cargado

Fig. 2: Esquema de un sistema tpico basado en HTTP

Como podemos observar en la Fig. 3 las capacidades


bsicas de apache incluyen caractersticas tales como una
cache, comprensin, reescritura de la url, y procesamiento de
cabeceras.
En la actualidad, hay 3 algoritmos de balanceo de carga
disponibles para su uso: Conteo de Solicitud, Trfico
ponderado de conteo y la espera de contar solicitud. Estos son
controlados a travs de la lbmethod valor de la definicin de
equilibrado. El mdulo Apache mod_proxy_balance requiere
le servicio de mod_proxy que proporciona soporte para
balanceo de carga en los protocolos HTTP, FTP, y AJP13.

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 continuacin los 3 algoritmos de balanceo de carga que
el programador dispone para su uso:
1.

2.

3.

Conteo de solicitud: Habilitado a travs de lbmethod


= byrequests, la idea detrs de este planificador es
distribuir las solicitudes entre los diferentes workers
para asegurarse que cada uno recibe su parte de
configurar el nmero de solicitudes.
lbfactor es lo que hay que esperar para que el
trabajador trabaje, 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.
lbstatus es la urgencia que el trabajador tiene de
trabajar para cumplir con su cuota de trabajo. El
trabajador es miembro del equilibrador de carga, por
lo general un host remoto que sirve uno de los
protocolos soportados. [8]
Trafico ponderado de conteo: Habilitado a travs
lbmethod = bytraffic, la idea detrs de este
programador es muy similar al mtodo de solicitud de
recuento, con los siguientes cambios:
lbfactor es la cantidad de trfico, en bytes, que
queremos que este trabajador maneje. Esto tambin
es un valor normalizado que representa su "parte" de
la cantidad de trabajo por hacer, pero en lugar de
simplemente contar el nmero de solicitudes, se tiene
en cuenta la cantidad de trfico que este trabajador ha
visto.[8]
Solicitud pendiente de conteo: Habilitado a travs
lbmethod = bybusyness, este programador mantiene
un registro de nmero de solicitudes que cada
trabajador se le asigna en la actualidad. Una nueva
solicitud se asigna automticamente a los
trabajadores con el menor nmero de solicitudes
activas. Esto es til en el caso de los trabajadores que
pasan a cola las solicitudes entrantes de manera
independiente de Apache, para asegurar que el
tamao de la cola se mantiene impar y una solicitud
siempre se le da al trabajador ms probable para dar
servicio ms rpido a ella.
En el caso de menos trabajadores ocupados, las
estadsticas que utiliza el mtodo de conteo solicitud
se utilizan para romper el empate. Con el tiempo, la
distribucin del trabajo se llega a parecerse a esa
caracterstica de byrequests. [8]

D. CAPA 4
Tradicionalmente, el balanceo de carga ha sido asunto de
la capa 4 (TCP). Una conexin de capa 4 es establecida y
balanceada en uno de los servidores reales disponibles. El
balanceador de carga solamente necesita capturar la peticin

en esta capa desde el flujo TCP que contiene toda la


informacin que necesitamos para enrutar la peticin la
direccin fuente y destino y el puerto. Dada esta informacin,
podemos dirigir la conexin al puerto correcto en el backend.
La forma ms simple del balanceo de carga en la capa 4
es usar un algoritmo round robin. Aqu tomamos cada
conexin entrante y la dirigimos al primer servidor listado en
el backend y as sucesivamente hasta que una peticin sea
enviada a cada backend de los servidores. En este momento, la
siguiente nueva peticin es enviada al primer servidor del
backend y el proceso empieza de nuevo. 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. [9]
E. CAPA 7
El balanceo de carga en la capa 7 es un recin llegado a la
fiesta. Los balanceadores de carga de la capa 7 inspeccionan el
mensaje hasta la capa 7, examinan la peticin HTTP misma.
Esto nos permite mirar la peticin y sus encabezados y usar
esos como parte de nuestra estrategia de balanceo. Podemos
entonces balancear peticiones basados en la informacin de la
cadena consulta, en cookies o algn encabezado que
escogemos, tan bien como la informacin regular de la capa 4,
incluyendo direccin fuente y destino.
El elemento ms frecuente usado para balancear en la capa
7 es la URL de la peticin HTTP en s. Por balanceo basado
en la URL, podemos asegurar que todas las peticiones por un
recurso especfico van a un servidor nico. [9]
F. ESCALABILIDAD
La escalabilidad debe formar parte del proceso de diseo
porque no es una caracterstica separada que se pueda agregar
despus. Al igual que con otras funciones de aplicacin, las
decisiones que se tomen durante las primeras fases de diseo y
codificacin determinarn en gran medida la escalabilidad de
la aplicacin.
La escalabilidad de una aplicacin requiere una
pertenencia equilibrada entre dos dominios distintos, software
y hardware. Puede avanzar grandes pasos que aumenten la
escalabilidad de un dominio slo para sabotearlos cometiendo
errores en el otro.
1.

Escalar en vertical: El escalado en vertical es el


trmino que ms se utiliza para lograr escalabilidad
utilizando software mejor, ms rpido y ms caro. El
escalado incluye agregar ms memoria, ms
procesadores o procesadores ms rpidos o,
simplemente, migrar la aplicacin a un nico equipo
ms potente. Normalmente, este mtodo permite un
aumento en la capacidad sin requerir cambios en el
cdigo fuente. Desde el punto de vista administrativo,
las cosas permanecen igual puesto que sigue
habiendo un nico equipo que administrar. Ver Fig. 4
[10]

o por software. Apache Web Server es el servidor


Web ms frecuentemente usado a nivel mundial y
gracias a esto cuenta con un alto grado de madurez,
rendimiento y estabilidad.
Si el costo no fuera un problema, no habra ningn
beneficio en la implementacin de un balanceo de
carga por software para el trfico de Internet en
comparacin con un balanceo de carga por hardware
IV.

Fig. 4 Escalabilidad vertical

2.

Escalar en horizontal: Una alternativa a escalar en


vertical es escalar en horizontal. Escalar en horizontal
aprovecha el ahorro que supone utilizar el hardware
de PC activo para distribuir la carga de
procesamiento en ms de un servidor. Aunque el
escalado en horizontal se logra utilizando muchos
equipos, la coleccin funciona esencialmente como
un nico equipo. Al dedicar varios equipos a una
tarea comn, mejora la tolerancia de errores de la
aplicacin. Por supuesto, desde el punto de vista del
administrador, escalar en horizontal presenta un
desafo mayor de administracin debido al mayor
nmero de equipos. Ver Fig. 5 [10]

Fig. 5 Escalabilidad Horizontal

III.

CONCLUSIONES

Los requerimientos actuales de rendimiento y


disponibilidad de la web hacen indispensable el
balanceo de la carga.
El balanceo de carga se puede lograr de varias
formas, a travs de equipos hardware especializados,

ACERCA DE LOS AUTORES

David Palacio Vargas se caracteriza por ser un hombre


sociable, tolerante, respetuoso y responsable; es Ingeniero de
Sistemas y Computacin, estudiante de IX semestre de la
Universidad del Quindo, le apasiona el Desarrollo de
Software y es investigador en el rea de redes perteneciendo al
grupo de investigacin en Redes, Informacin y Distribucin
GRID.
Andrs Felipe Abril R se caracteriza por ser una
persona con iniciativa, creativa y emprendedora, es estudiante
de IX semestre de ingeniera de sistemas y computacin de la
Universidad del Quindo, le apasionan las redes la
programacin y los sistemas distribuidos actualmente
pertenece a el semillero y al grupo de investigacin GRID de
la universidad del Quindo
V.
REFERENCIAS
[1] Contento T M, Tinoco T, D. & Espinoza, W. Cluster
de balanceo de carga y alta disponibilidad para
servicios web y mail. Loja, Ecuador.
[2] Arqus Soldevila, J. M., Marco Galindo, E., &
Colobran Huguet, M. (2008). Administracion de
sistemas operativos en red. Barcelona: UOC.
[3] Cisco. Cisco Computing Systems. Recuperado el 04
de 08 de 2011, de Cisco Computing Systems:
http://www.cisco.com/en/US/docs/ios/12_2/ip/config
uration/guide/1cfigrp.html
[4] Perlbal. (25 de 11 de 2011). Perbal. Recuperado el 25
de 11 de 2011, de Perbal:
http://code.google.com/p/perlbal/
[5] Apsis. (25 de 11 de 2011). Apsis it security.
Recuperado el 25 de 11 de 2011, de Apsis it security:
http://www.apsis.ch/pound/
[6] Quiroz, B. (s.f.). Linux Virtual Server (LVS). Chile
[7] Oriyano S.P, Cabrera PJ. Introduction to Software
Load Balancing with Amazon EC2. 2008
http://aws.amazon.com/articles/1639
[8] Abele, E. (s.f.). Recuperado el 4 de Octubre de 2011,
de https://www.linux-magazine.es/issue/43/031034_BalanceoApacheLM43.pdf
[9] Henderson, C. (2006). Building Scalable Web sites.
gravenstein highway north sebastopol: O`REALLY
[10] Microsoft. (s.f.). MSDN library. Recuperado el 2 de
12 de 2011, de MSDN library:
http://msdn.microsoft.com/eses/library/ms123401.aspx

Vous aimerez peut-être aussi