Para balanceo de carga, a mi me dio buen resultado POUND (http://freshmeat.net/projects/pound/), pero despues de un par de cambios al final me quede con NGINX (http://nginx.net). Ambos corriendo en un Linux por cierto....
Aldrin Martoq wrote: > On Fri, 2008-08-29 at 17:47 -0400, Juan Manuel Doren wrote: > >>> No te entiendo. La sesion es $_SESSION en php o HttpSession de java, >>> como ejemplos. >>> Como requisito las aplicaciones no se pueden modificar; esperan datos en >>> la sesion para poder funcionar (por ejemplo, si haces un login). >>> Entonces si un cliente web entra siempre tiene que llegar al mismo >>> servidor. >>> Por eso no entiendo a que te refieres con compartir la sesion ya que no >>> esta siendo compartida; tampoco entiendo a que te refieres con abrir la >>> sesion. >>> >> si tienes aplicaciones ya hechas mejor ni lo intentes, pero si por >> ejemplo tienes una sesion en php, eso es por un lado una cookie y por >> otro un archivo temporal en el servidor. >> Ese archivo lo puedes cambiar por una entrada en la base de datos, asi >> sea cual sea el servidor que atienda los requerimientos podra obtener >> y modificar la informacion asociada a la cookie. >> Este enfoque es mejor, porque por ejemplo, el servidor original podria >> caerse y otro podria reemplazarlo sin perder la sesion. Si vas a >> desarrollar desde 0 trata de usar base de datos en vez de sesiones >> automaticas del php. >> sobre los balanceadores no se buscas software libre o estas en un >> proyecto mayor. Si el lo segundo revisa el hardware de barracuda y f5, >> esos hacen lo que quieres pero baratos no son. >> > > Gracias por todas sus respuestas. Hasta el momento haproxy hace > exactamente lo que quiero. Algunas respuestas: > > 1.- No tengo mayores datos de la implementacion, asi que debo tratar a > los webservers y las aplicaciones como tontas... En principio, son > apache tomcats 4.x; > 2.- Por ende, no quiero modificar la logica de las aplicaciones ni el > ambiente de los servidores web. Estoy tanteando alguna solucion simple > sin cambiar el ambiente ni las aplicaciones. > 3.- haproxy puede detectar cuando un webserver se muere, asi que lo > elimina de la lista. En ese caso, una sesion activa sera redirigida a > otro webserver que no tenia idea de la sesion; y bueno ahi la aplicacion > tendra que manejarse como si desconociera la sesion (no veo problemas). > > > Como comentarios a las tecnologias que propusieron: > 1.- Usar memcached no es una solucion fuerte para manejar datos > guardados en una sesion. La razon es que un cache distribuido no te > garantiza atomicidad... hmm quizas si tienes una sola instancia [2]. > > Un cache distribuido es bueno para hacer cache de datos "no criticos" > resueltos por una base de datos (asi alivianas la carga de la base de > datos), pero no para actualizar data!! (tratar el cache como un store de > una base de datos). > > Es por esto que almacenan un timestamp con los datos en el cache > distribuido y en tu logica considerar el tiempo del dato y si > corresponde refrescarlo contra la base de datos; si necesitas guardar > datos criticos en el cache tienes que modificar la logica de tu > aplicacion de manera que asegure borrar/actualizar los datos del cache > con cada update en la base de datos. > > 2.- Por lo mismo que la solucion de compartir la sesion de WebSphere es > tan repenca: tiene que asegurar atomicidad [1]. Eso lo hace lento y feo, > sobretodo si se meten muchos datos en la sesion. > > 3.- No se como les ha ido configurando PHP o Tomcat, pero a simple vista > tiene lo mismos problemas que 2. Otra solucion es configurar el ambiente > para que guarde la sesion en la base de datos, pero tampoco me parece > buena idea (mas que nada por evitar otro cuello de botella y dejar la > arquitectura lo mas simple). > > 4. En resumen, lo mejor siempre es pensar la aplicacion para ser usada > en un cluster. En la practica, casi nadie pone eso en los > requerimientos ;) > > > > Modificar la aplicacion/ambiente habria que evaluar, pero eso lo hare > cuando tenga mas datos de la implementacion en particular. > > > Saludos y gracias a todos! > > [1] > http://www.ibm.com/developerworks/websphere/library/bestpractices/httpsession_performance_serialization.html > > [2] > http://www.socialtext.net/memcached/index.cgi?faq#race_conditions_and_stale_data > > >