El 30 de julio de 2009 10:48, tq<[email protected]> escribió: > 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 -> #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 -> #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 -> #lanux. > _______________________________________________ > General mailing list > [email protected] > http://listas.lanux.org.ar/cgi-bin/mailman/listinfo/general >
Son cosas independientes, lás podés encarar por separado sin problemas. 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 -> #lanux. _______________________________________________ General mailing list [email protected] http://listas.lanux.org.ar/cgi-bin/mailman/listinfo/general
