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
