Diego Woitasen wrote:
> 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!
>
>   
Hola Diegows, gracias nuevamente.

Una consulta, además de balance de carga entre varias conexiones 
quisiera implementar QOS para por ejemplo a una IP determinada darle mas 
prioridad.

Me recomendas algo en especial teniendo en cuenta también lo del Balance 
de Carga?

Digo, puedo encarar primero el tema del balance de carga y luego el QOS 
o son soluciones conjuntas?

Muchas Gracias.

Saludos.-
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