LinuxParty

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Llegados a este punto donde ya tenemos el Hardware listo, Linux Debian instalado y el puente de red o Bridge funcionando vamos a instalar el software que montará el balanceo de carga. Hay varios tipos de software o soportes que están dispuestos a ofrecernos diferentes balanceos de carga. Yo no necesito un balanceo de carga extra sofisticado por lo que busco algo sencillo que cumpla con la función que yo necesito, que no es otra que la de compartir el trafico entre varios servidores y conseguir así una carga menor en cada uno de ellos …

En el esquema anterior podemos ver el funcionamiento de las peticiones que llegarán poco a poco hacia nuestros servidores. La técnica que aplicaremos a este balanceo de carga no es otra que la llamada Round Robin, esta técnica es muy valida para liberar carga de cualquier tipo de servidor tenga el sistema operativo que tenga ya que podemos repartir las peticiones entre varias maquinas unicamente hacia un puerto, rotando así conseguimos que a cada servidor le de tiempo a relajarse hasta que vuelva a tocarle además reduciremos las peticiones individualmente. Una vez le tocará responder a un servidor y así sucesivamente entre el grupo de servidores que tengamos.

PEN Load Balancer es el software que usaremos para montar este balanceo de carga practico y compatible con casi todos lo que necesitemos balancear hablando de servidores web por ejemplo. No es importante el sistema operativo que tenga instalado cada servidor ya que tan solo iremos repartiendo peticiones entre ellos hacia un puerto en cuestión.

Apuntes …

Cuando un usuario carga una web de uno de nuestros servidores no pasará la siguiente petición al siguiente servidor que esté en espera hasta que la misma se cierre. Por ejemplo si tenemos instalado el servidor web apache podemos configurar cuanto tiempo que queremos que esté quede en espera hasta que la misma sea cerrada. Si en todos los servidores que cuelguen de nuestro balanceador de carga configuramos que el TimeOut sea de 30 segundos se efectuara el cambio de servidor cada 30 segundos desde la ultima petición.

” Esto es algo que podemos dejarlo por defecto o configurarlo a nuestro gusto aunque he pensado que no estaría mal dar esta clase de apunte. “

Instalación …

Bien después de tener el puente de red o bridge funcionando vamos a continuar por instalar PEN en nuestra maquina con …

apt-get install pen
o
yum -y install pen

PEN es tan simple que bajo una linea de comandos podremos ejecutarlo completamente configurado. Si introducimos ( pen ) en nuestra terminal veremos las opciones simplificadas de las que dispone …

[root@localhost ~]# pen
usage:
pen [-C addr:port] [-X] [-b sec] [-S N] [-c N] [-e host[:port]] \
[-t sec] [-x N] [-w dir] [-HPWadfhrs] \
[-o option] \
[-E certfile] [-K keyfile] \
[-G cacertfile] [-A cacertdir] \
[-Z] [-R] [-L protocol] \
[host:]port h1[:p1[:maxc1[:hard1[:weight1[:prio1]]]]] [h2[:p2[:maxc2[:hard2[:weight2[:prio2]]]]]] ...

-B host:port abuse server for naughty clients
-C port control port
-T sec tracking time in seconds (0 = forever) [0]
-H add X-Forwarded-For header in http requests
-P use poll() rather than select()
-W use weight for server selection
-X enable 'exit' command for control port
-a debugging dumps in ascii format
-b sec blacklist time in seconds [30]
-S N max number of servers [16]
-c N max number of clients [2048]
-d debugging on (repeat -d for more)
-e host:port emergency server of last resort
-f stay in foregound
-h use hash for initial server selection
-j dir run in chroot
-F file name of configuration file
-l file logging on
-n do not make sockets nonblocking
-r bypass client tracking in server selection
-s stubborn selection, i.e. don't fail over
-t sec connect timeout in seconds [5]
-u user run as alternative user
-p file write pid to file
-x N max number of simultaneous connections [256]
-w file save statistics in HTML format in a file
-o option use option in penctl format
-E certfile use the given certificate in PEM format
-K keyfile use the given key in PEM format (may be contained in cert)
-G cacertfile file containing the CA's certificate
-A cacertdir directory containing CA certificates in hashed format
-Z use SSL compatibility mode
-R require valid peer certificate
-L protocol ssl23 (default), ssl2, ssl3 or tls1

example:
pen smtp mailhost1:smtp mailhost2:25 mailhost3

Si queremos obtener una información mas extendida simplemente podemos teclear ( man pen ), recordando que podemos salir de la ayuda con la tecla ( q ).

Ejecución …

Una vez instalado vamos lanzaremos a PEN con una simple linea de comandos como esta …

pen -r -a -f -d 192.168.1.200:80 192.168.1.210:80 192.168.1.211:80 192.168.1.212:80

Al final de la carga se queda en espera y muestra una tabla como esta …

[root@localhost ~]# pen -r -a -f -d 192.168.1.200 192.168.1.210 192.168.1.211 192.168.1.212
2013-09-28 01:08:20: local address=[0.0.0.0:192]
2013-09-28 01:08:20: n = 1, address = 192.168.1.210, pno = 192, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 192.168.1.211, pno = 192, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 192.168.1.212, pno = 192, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: n = 1, address = 0.0.0.0, pno = 0, maxc1 = 0, hard = 0, weight = 0, prio = 0
2013-09-28 01:08:20: servers:
2013-09-28 01:08:20: 0 192.168.1.210:192:0:0:0:0
2013-09-28 01:08:20: 1 192.168.1.211:192:0:0:0:0
2013-09-28 01:08:20: 2 192.168.1.212:192:0:0:0:0
2013-09-28 01:08:20: 3 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 4 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 5 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 6 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 7 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 8 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 9 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 10 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 11 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 12 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 13 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 14 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: 15 0.0.0.0:0:0:0:0:0
2013-09-28 01:08:20: mainloop_select()

En la tabla se listan los tres servidores donde balancearemos la carga y también vemos que se pueden incluir hasta 15 ( Ya me gustaría ).

Las 4 ips apuntando hacia el puerto 80 son las del balanceador de carga, servidor 1, servidor 2, servidor 3 y así podríamos continuar sucesivamente.

Bien, ahora ya tenemos nuestro balanceador de carga preparado para ir repartiendo peticiones hacia el puerto 80 entre las IPs de nuestros servidores.

Pruebas …

Para probar si su funcionamiento es correcto tan solo tenéis que colocar un contenido web diferente en cada raíz de vuestros servidores web y seguidamente abrir un navegador e introducir la IP de nuestro balanceador de carga. Si vamos recargando el navegador veremos que va cambiando el contenido de un servidor a otro conforme las peticiones de cada servidor web caduquen.

Si observamos el comando que lanzamos anteriormente incluye la opción -d que no es otra que la de hacer Debug, al acceder a uno de los servidores se reflejará en la pantalla donde lanzamos PEN como se conecta y como se desconecta caducando la conexión dando paso al siguiente servidor.

Ahora tenemos que incluir el mismo contenido web en los tres servidores para que no se note que el que nos visite en realidad está visitando la misma web pero mostrada por varios servidores. Imaginaos cuanta carga pueden aguantar aquellas maquinas que tenemos en el desván si las conectamos en red hacia el balanceador de carga, PEN acepta hasta 15 servidores, esto puede ser de locos.

Para terminar y para no tener que lanzar la linea con el comando PEN y su configuración cada vez que arranquemos la maquina vamos a incluirlo en el arranque y esta vez no incluiremos el modo Debug y se ejecutará en segundo plano.

Para ejecutar PEN al inicio del sistema vamos a incluirlo junto a su configuración dentro del archivo rc.local situado en el directorio /etc, en el podemos ejecutar programas rápidamente sin tener que crear un script de arranque

vi /etc/rc.local

Una vez dentro incluimos nuestra linea de configuración sin la opción -d

pen -r -a -f 192.168.1.200:80 192.168.1.210:80 192.168.1.211:80 192.168.1.212:80

Ahora guardamos y salimos del editor pulsando la tecla ( ESC ) y seguidamente ( :wq! ).

Una vez hecho ya podemos apagar la maquina y usarla cuando la necesitemos como balanceador lista para funcionar. 

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política