TOP

LVS : Balanceo de carga en el Kernel de Linux

Pues bien, en las siguientes entradas mi objetivo será presentar las bases para poder montar un sistema de Firewalls basados en IPtables, con balance de carga, alta disponibilidad y QoS. Haré una pequeña introducción de las herramientas que voy a usar, para luego presentar el escenario final y resolverlo.

Empezamos pues. El primer elemento que analizaremos será el SW que usaremos para balancear carga.

LVS (Linux Virtual Server) es una herramienta que nos permite gestionar balance de carga en sistemas Linux. Es una solución de código abierto que busca desarrollar un servidor Linux de alto rendimiento que proporcione buena escalabilidad, confiabilidad y robustez usando tecnología clustering. Ofrece balance de carga en la L4 (TCP/UDP) mediante chequeos dinámicos y adaptativos que manejan el pool de carga dependiendo de la carga de sus componentes. LVS viene integrada en herramientas "HA&LB" ampliamente conocidas como UltraMonkey, KeepAlived, Piranha.



Es posible obtener LVS de los repositorios de nuestra distribución Linux (ipvsadm package), aunque en los últimos kernels suele venir ya integrada.

Vamos con un pequeño ejemplo de uso de LVS:



Los siguientes comandos configuran un servidor linux para distribuir peticiones entrantes dirigidas a 207.175.44.110:80 entre una granja de 5 servidores (192.168.10.x).

ipvsadm -A -t 207.175.44.110:80 -s rr

Con -A le indicamos a LVS que queremos añadir un servicio nuevo, con -t que ese servicio va a ser del tipo TCP, -s va a ser el modo de balanceo de carga, en este caso rr, round robin, de manera que las peticiones se distribuyan de forma igual por los servidores. Con esta instrucción hemos creado un servicio, de tal manera que todas las peticiones que lleguen a 207.175.44.110 puerto TCP 80 se balanceen de forma equitativa entre los servidores, ¿que servidores?, ese es el siguiente paso:

ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m



Con el parametro -a , señalamos que queremos agregar un nuevo servidor a nuestro servicio de balance carga que viene determinado por ip:puerto (207.175.44.110:80),con el parámetro -r indicamos la IP de los servidores de nuestra granja ( entre los que se balanceará el servicio) y con el parámetro -m, decimos que use como método "masquerading", osease NAT ( las peticiones que lleguen a 207.175.44.110:80 sean traducidas a alguna ip de nuestros servidores.

Voila!,tenemos configurado nuestro servicio de balance de carga. Es un ejemplo sencillo, LVS tiene multitud de opciones para hacer distintas cosas que pueden ser muy útiles y que se pueden consultar en la página del manual de ipvsadm.

En las siguientes entradas veremos el resto de herramientas para finalmente juntarlas todas bajo un mismo ejemplo.

Un saludo,
Víctor.


0 comentarios:

Publicar un comentario