[CentOS-es] boding

Maxnux maxnux en yahoo.com.ar
Dom Jun 3 17:23:25 UTC 2007


a entonces lo que queres hacer es blanceo de carga , y lo podes hacer 
con iproute e ipables
te paso un breve tuto que una ves me pasaron

1. Introducción

Antes que nada quiero decir que me decidí a escribir esto (soy bastante 
vago para documentar) ya que este tema me rompió la cabeza por bastante 
tiempo. Me leí todo (bueno, casi todo) lo que encontré en la red, y 
nada, nada pareció funcionar, de todas maneras, les recomiendo que lean 
todo lo que puedan al respecto.

Lo siguiente es aclarar que no me hago responsable de nada 
absolutamente. Pero si alguien encuentra un mejor modo de hacer esto 
espero leer su COMO pronto.

2. Razones para usar el balanceo de carga

Tengo una LAN que demanda cada vez más. Asi que compramos más ADSL 
(cuando las telcos se decidan a bajar las lineas digitales, esto sera 
historia). Al principio marcaba los paquetes y los direccionaba a una u 
otra salida, como algunos salian con proxy (squid) y otros no, esto era 
suficiente. Y era dificil predecir cuales o cuantos servicios usar por ADSL.

Decidí que era momento de balancear cargas, lei la documentación al 
respecto, fracasé varias veces, pero hoy todo funciona perfecto. (al 
menos eso supongo)

3. Descripción del equipo

Server, linux 2.6.x (funciona tambien en 2.4.x)
Distro, Fedora Core 3 (si recompilan el kernel esta distro es sumamente 
estable)
NIC, varias (5) todas correctamente configuradas
ADSL, varios (4), marca Tainet.

4. Configurando la red

A los ADSL los deje haciendo NAT y discando solos, ya que con PPPoE tuve 
algunos incovenientes. La más facil era esta.

Me quedó la red de la siguiente forma:

eth0 LAN 192.168.100.254/24
eth1 10.0.1.1/24 GW WAN0 10.0.1.254/24
eth2 10.0.2.1/24 GW WAN1 10.0.2.254/24
eth3 10.0.3.1/24 GW WAN2 10.0.3.254/24
eth4 10.0.4.1/24 GW WAN3 10.0.4.254/24

Espero que se entienda esto, si alguien lo quiere traducir a cristiano, 
mejor.

Para que esto funcione tenemos que usar iproute2, de nuevo aclaro que 
hay miles de páginas al respecto, asi que no sean tímidos, pueden 
leerlas de internet.

5. Armando el script
(se puede cortar y pegar, pero no va a funcionar a menos que tengas la 
misma configuracion mia :P)



#!/bin/sh

# Limpio la cache
# FC3 tiene configurado limpiar las tablas cada 5 minutos, se puede 
cambiar este tiempo.
ip route flush cache

# Reinicio lo
ip addr flush lo
ip link set lo down
ip addr add 127.0.0.1/8 dev lo
ip link set lo up

# Reinicio eth0, LAN, lo mismo esto para cada placa de red
ip addr flush eth0
ip link set eth0 down
ip addr add 192.168.100.254/24 dev eth0
ip link set eth0 up

# ... aqui van las otras placas exactamente =

# Reinicio eth4
ip addr flush eth4
ip link set eth4 down
ip addr add 10.0.4.1/24 dev eth4
ip link set eth4 up

# Limpio las tablas de ruteo
ip route flush default
ip route flush table 1
# ... aqui se vacian las otras tablas exactamente =
ip route flush table 4

# Creo las tablas de ruteo

ip route add 192.168.100.0/24 dev eth0 src 192.168.100.254
ip route add 10.0.1.0/24 dev eth1 src 10.0.1.1
# ... aqui van las otras tablas exactamente =
ip route add 10.0.0.0/24 dev eth4 src 10.0.4.1

# Este script me lo hice porque tenia fiaca de copiar cada tabla main en 
la respectiva tabla del 1 al 4, se puede mejorar, asi que toda suya

ip route show table main | grep -Ev ^default | while read ROUTE ; do ip 
route add table 1 $ROUTE ; done
# ... aqui van las otras copias de tablas exactamente =
ip route show table main | grep -Ev ^default | while read ROUTE ; do ip 
route add table 4 $ROUTE ; done

ip route add table 1 default via 10.0.1.254
# ... aqui van los otros GW exactamente =
ip route add table 4 default via 10.0.4.254

# configuro las reglas de ruteo
ip rule add from 10.0.1.1 table 1
# ... lo mismo que antes :P
ip rule add from 10.0.4.1 table 4

# balanceo de carga
ip route add default equalize nexthop via 10.0.1.254 dev eth1 weight 1 \
nexthop via 10.0.0.3 dev eth2 weight 1 \
# bueno aqui paras si tenes solo dos ADSL le sacas el \ of course, sino 
agrega tantos
# nexthop como sean necesarios, una nota importante es el weight, yo les 
puse uno a todos
# porque todos mis ADSL son de 512, si tenes conexiones más veloces 
modificas este numero
# aqui dice que saldra una conexion por cada adsl, si pusiera 2 en 
alguno de ellos
# pasaran dos antes de seguir al siguiente ADSL
nexthop via 10.0.4.254 dev eth4 weight 1

#END

Bueno, ahi se termino todo, podes tener la red funcionando y correr 
esto, ya que bajo toda configuración anterior. Si queres ver si esto 
funciona pones lo siguiente:

ip route show, si te muestra algo como esto:

default equalize
nexthop via 10.0.1.254 dev eth1 weight 1
...
nexthop via 10.0.4.254 dev eth4 weight 1

Quiere decir que lo lograste, y podés mandar alguna donación para que yo 
pueda terminar mi primaria.

Usa iptraf para ver el trafico y ip route show cache para ver que sale 
por cada conexión.

6. Los últimos toques

Dije que algunos salen con proxy y otros sin, asi que agregue este par 
de líneas a mi firewall:

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 10.0.1.1
...
iptables -t nat -A POSTROUTING -o eth4 -j SNAT --to-source 10.0.4.1

Debería conectarse todo bien, deberían pasar los ping desde cualquier 
terminal a internet sin ningún problema, tendría que funcionar servicios 
vitales como el msn hotmail y yahoo.

Si algo esta mal o no funciona, me mandan un mail. Pero siempre teniendo 
en cuenta el punto 1 de este documento

Bueno, termine todo esto limitando el ancho de banda sobre todo a los 
P2P, usando CBQ.

Muchas gracias

Alex


----------------
AE!
Antonio Garcia Marin wrote:
> Maxnux escribió:
>> BLEYCK LINX wrote:
>>> Con eso lo único que conseguiras es un balance de carga de las 
>>> tarjetas de red no aumentar la velocidad del internet, creo que eso 
>>> es, o sino que alguien me corriga y puedes mirar en este enlace:
>>> http://www.ecualug.org/?q=2006/05/12/blog/manu/como_hacer_bonding_en_rhel4_y_clones 
>>>
>>>  
>>>  
>>>  
>> yo pienso igual
>> Y no olvidarse quera hacer boding el switch deber soportar trunk
>>
>> saludos
>>
>>>
>>>  
>>> El día 2/06/07, *killerfs* <killerfs en star.com.pe 
>>> <mailto:killerfs en star.com.pe>> escribió:
>>>
>>>     buscaba por san google. la manera de hacer que mis dos tarjetas 
>>> de red
>>>     se conecten a internet
>>>     y poder duplicar o aumentar el ancho de banda.
>>>     se dispone de dos ipfijas, cada una con 400 kbps
>>>     ejm
>>>     200.x.x.1 ->eth1
>>>     200.x.x.2 -> eth2
>>>
>>>     quiera que cuando haga el nateo o el proxeo (squid) la velocidad 
>>> de de
>>>     1200kbps, se puede hacer?
>>>
>>>     y  ver si se puede repetir la experiencia con un server de BD, que
>>>     quiero que si falla una tarjeta la otra responda , en este caso
>>>     tendria dos ip fijas (cada tarjeta con su ip) y si falla una
>>>     tarjeta la
>>>     otra pueda sobrevivir sin problemas
>>>     gracias!!!
>>>     _______________________________________________
>>>     CentOS-es mailing list
>>>     CentOS-es en centos.org <mailto:CentOS-es en centos.org>
>>>     http://lists.centos.org/mailman/listinfo/centos-es
>>>
>>>
>>> ------------------------------------------------------------------------ 
>>>
>>>
>>> _______________________________________________
>>> CentOS-es mailing list
>>> CentOS-es en centos.org
>>> http://lists.centos.org/mailman/listinfo/centos-es
>>>   
>>
>> _______________________________________________
>> CentOS-es mailing list
>> CentOS-es en centos.org
>> http://lists.centos.org/mailman/listinfo/centos-es
>>
> En mi empresa usamos dos conexiones de internet distintas (DSL, LDMS)
> que entran en un unico firewall (Centos 4).
> La idea era que si una conexion falla (LDMS por la lluvia) la empresa no
> para al usar la otra. (ADSL)
>
> Empezamos con el documento que te comenta Ernesto que al final te
> llevara a un parche llamado Jumbo para aplicarselo al kernel.
> Ahora mismo esta funcionado (Aunque este equipo no lo toco yo)
> Estuve buscando muchisimo y ninguna distro de linux lo hace directamente.
> Existe una de FreeBSD que si. Se llama pfSense.
>
> El lunes me enterare como lo hizo mi compañero.
>
> _______________________________________________
> CentOS-es mailing list
> CentOS-es en centos.org
> http://lists.centos.org/mailman/listinfo/centos-es
>



Más información sobre la lista de distribución CentOS-es