Está en la página 1de 3

Balanceo de carga en Linux

Byte 02/11/2006 93 11

Cuando tenemos un router conectado a internet, hay ocasiones en las que no es


suficiente con realizar el encaminamiento a través de un solo proveedor de acceso
a internet, sino que es necesario realizar un balanceo de carga entre varias líneas
de conexión a internet, como por ejemplo dos líneas ADSL.

Al balancear la carga entre varias líneas podemos decidir qué parámetro tener en
cuenta para realizar ese balanceo: podemos realizarlo en base a las direcciones
IP origen, la dirección IP destino, el puerto origen o destino u otros factores. La
configuración que se muestra a continuación balancea la carga de forma aleatoria
entre los dos accesos a internet en base al peso que se otorgue a cada enlace.
Con esto se consigue repartir la carga entre los dos enlaces en base a su
disponibilidad de ancho de banda, por ejemplo.
Realizar un balanceador de carga es una tarea que se puede realizar de forma
muy sencilla utilizando un router con GNU/Linux siguiendo los siguientes pasos:

Datos previos
Si suponemos los siguientes datos:

eth0: Interfaz conectado a un ADSL


eth1: Interfaz conectado a otro ADSL
IP0: Dirección IP de la máquina en eth0
IP1: Dirección IP de la máquina en eth1
GW0: Dirección IP del gateway en el interfaz eth0
GW1: Dirección IP del gateway en el interfaz eth1
NET0: Subred de la salida ADSL 0
NET1: Subred de la salida ADSL 1

Definir tablas de rutas


Definir dos tablas de routing auxiliares en el fichero /etc/iproute2/rt_tables,
simplemente añade estas dos líneas:

2 T0
3 T1

Añadir rutas de encaminamiento


Añadir información a las dos tablas auxiliares con información de routing de cada
una de las dos salidas:

ip route add default via GW0 dev table T0


ip route add NET0 dev eth0 src IP0 table T0
ip route add default via GW1 dev table T1
ip route add NET1 dev eth1 src IP1 table T1

Añadir las reglas de encaminamiento


Añadir las reglas necesarias para utilizar cada una de las dos tablas auxiliares:

ip rule add from IP0/32 table T0


ip rule add from IP1/32 table T1

Añadir la ruta por defecto


Añadir la ruta por defecto en la tabla principal, que se encarga de repartir la carga.
Puedes cambiar el peso de cada enlace después del parámetro weight:
ip route add default scope global nexthop via GW0 dev eth0 weight 1
nexthop via GW1 dev eth1 weight 1

Y esto es básicamente lo que hay que hacer. Aunque recomiendo echar un vistazo
a las siguientes direcciones donde lo explican más en detalle:

Howto del LARTC y en especial al apartado que hablan sobre balanceo de carga.
Y como siempre lo mejor es hacer uso de tcpdump y comprobar lo que está
pasando por cada interfaz.

También podría gustarte