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! -- 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
