El 27 de julio de 2009 15:57, tq<[email protected]> escribió:
> Diego Woitasen wrote:
>> El 26 de julio de 2009 21:48, tq<[email protected]> escribió:
>>
>>> Diego Woitasen wrote:
>>>
>>>> Problema:
>>>> ---------
>>>>
>>>> Una PC con 3 conexiones a Internet, sobre las cuales queremos realizar
>>>> balanceo de carga. Como el trafico es del tipo WEB, hacemos la
>>>> distribucion de carga de la mano de Squid e iproute.
>>>>
>>>> Solucion - Parte 1, iproute:
>>>> ----------------------------
>>>>
>>>> Suponiendo que las 3 conexiones ya estan configuradas, agregamos la ruta
>>>> default hacia uno de los ISP:
>>>>
>>>> ip route add default via GW_ISP1
>>>>
>>>> Ahora agregamos las rutas hacia los otros 2 ISP, basandonos en las IPs
>>>> que estos nos entregan:
>>>>
>>>> ip rule add from IP_ISP2 table 10
>>>> ip route add default table 10 via GW_ISP2
>>>>
>>>> ip rule add from IP_ISP3 table 11
>>>> ip route add default table 11 via GW_ISP3
>>>>
>>>>
>>>> Solucion - Parte 2, Squid:
>>>> --------------------------
>>>>
>>>> squid.conf:
>>>> external_acl_type balanceo /usr/local/bin/rand-out.py 3
>>>> acl isp1 balanceo 1
>>>> acl isp2 balanceo 2
>>>> acl isp3 balanceo 3
>>>> tcp_outgoing_address IP_ISP1 isp1
>>>> tcp_outgoing_address IP_ISP2 isp2
>>>> tcp_outgoing_address IP_ISP3 isp3
>>>>
>>>> /usr/local/bin/rand-out.py:
>>>> ------------------------------------------------------------------------------
>>>> #!/usr/bin/python -u
>>>>
>>>> import random
>>>> import sys
>>>>
>>>> def process():
>>>>       line = sys.stdin.readline()
>>>>       if not line:
>>>>               return False
>>>>
>>>>       line = line[:-1]
>>>>       (naddress, address) = line.split()
>>>>       if not naddress.isdigit() or not address.isdigit():
>>>>               print 'ERR'
>>>>               return True
>>>>
>>>>       naddress = int(naddress)
>>>>       address = int(address)
>>>>       rand = random.randint(1, naddress)
>>>>       if rand == address:
>>>>               print 'OK'
>>>>               return True
>>>>
>>>>       print 'ERR'
>>>>       return True
>>>>
>>>> while process(): pass
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>> La idea es, crear un tipo de ACL que aleatoriamente devuelve verdadero
>>>> entre tres opciones. rand-out.py es un ACL externo que se integra a
>>>> Squid para este fin. Cuando ponemos:
>>>>
>>>> acl isp1 balanceo 1
>>>>
>>>> Esta ACL resultara verdadera cuando aleatoriamente el script coincida
>>>> con el 1 que pasamos como parametro. Si se da el caso, la linea:
>>>>
>>>> tcp_outgoing_address IP_ISP1 isp1
>>>>
>>>> sera la que se aplicara para el request que caiga en este loteria.
>>>>
>>>> Tire un pentapie inicial, ahora tenemos tema para desarrollar y cerrar
>>>> en la proxima reunion.
>>>>
>>>> saludos!
>>>>
>>>>
>>>>
>>> Diegows, buenas tardes.
>>>
>>> Estoy retomando este tema en mi trabajo.
>>>
>>> Hubo algún cambio al respecto sobre lo que posteabas o algún avance en
>>> el script?
>>>
>>> Una consulta, en tus líneas decias que como el trafico es Web usabas
>>> SQUID, haber si te entiendo, lo que haces es que "aleatroriamente" sacas
>>> las peticiones por una u otra salida?
>>>
>>> Que opinas de esto:
>>>
>>> http://gnu-haldrik.blogspot.com/2009/05/balanceo-de-carga-con-dos-adsl-y-lenny.html
>>>
>>> Muchas Gracias.
>>>
>>> Salu2.
>>>
>>> Lanux - Grupo de usuarios de GNU/Linux de Lanus
>>> Visitanos en: http://www.lanux.org.ar
>>>
>>> Reglas de etiqueta para el posteo de mensajes a  la lista:
>>> http://www.lanux.org.ar/?page_id=35
>>>
>>> Articulos y noticias por rss:
>>> http://www.lanux.org.ar/?feed=rss2
>>>
>>> Lanux por irc:
>>> irc.freenode.net -&gt; #lanux.
>>> _______________________________________________
>>> General mailing list
>>> [email protected]
>>> http://listas.lanux.org.ar/cgi-bin/mailman/listinfo/general
>>>
>>>
>>
>>
>> Ese post fue un ejemplo rapido, nunca lo implementé. Fue como un punto
>> de partida para uno de los chicos del lug que lo necesitaba.
>>
>> Lo que hace el Squid con el script es seleccionar un IP para usar como
>> origen. Esa IP después la usas para hacer source routing y
>> seleccionar por donde querés salir.
>>
>> El link que pegás esta bueno, es la solución más genérica.
>>
>> saludos!
>>
>>
> Diegows, gracias por tu respuesta.
>
> Sobre el link que pase lo que no me agrada es que si se cae una de las
> líneas todas las conexiones también lo hacen.
>
> Aquí dejo otro [0] en donde apareces nombrado.
>
> Que opinas?
>
> La idea mia sería lograr balance de carga, que si se cae una conexión
> todas las conexiones salgan por alguna de las restantes y en el futuro QOS.
>
> Muchas Gracias.-
>
> [0]
> http://bourneagainshell.blogspot.com/2008/05/de-como-conectar-13-adsls-en-balanceo.html
> Lanux - Grupo de usuarios de GNU/Linux de Lanus
> Visitanos en: http://www.lanux.org.ar
>
> Reglas de etiqueta para el posteo de mensajes a  la lista:
> http://www.lanux.org.ar/?page_id=35
>
> Articulos y noticias por rss:
> http://www.lanux.org.ar/?feed=rss2
>
> Lanux por irc:
> irc.freenode.net -&gt; #lanux.
> _______________________________________________
> General mailing list
> [email protected]
> http://listas.lanux.org.ar/cgi-bin/mailman/listinfo/general
>


Las conexiones del vínculo que se caen las pardés inevitablemente. Yo
recomiendo el segundo link que encontraste, es una solución más
robusta.

saludos!

-- 
Diego Woitasen
Lanux - Grupo de usuarios de GNU/Linux de Lanus
Visitanos en: http://www.lanux.org.ar

Reglas de etiqueta para el posteo de mensajes a  la lista:
http://www.lanux.org.ar/?page_id=35

Articulos y noticias por rss:
http://www.lanux.org.ar/?feed=rss2 
            
Lanux por irc: 
irc.freenode.net -&gt; #lanux.
_______________________________________________
General mailing list
[email protected]
http://listas.lanux.org.ar/cgi-bin/mailman/listinfo/general

Responder a