¿Equilibrio de carga basado en cookies de sesión?

¿Equilibrio de carga basado en cookies de sesión?

Tengo una aplicación web que se ejecutará en varios servidores. Me gustaría asegurarme de que las solicitudes que utilizan la misma sesión (encabezado de cookie HTTP con valor JSESSIONID=x) siempre se comuniquen con el mismo servidor. Es decir, hasta que la sesión se "mueva" a un servidor diferente en determinadas circunstancias (no sólo cuando el servidor falla, sino también debido a algunas estrategias de rendimiento y almacenamiento en caché del lado del servidor).

Mi aplicación web funciona bien con ese escenario, pero ¿qué tipo deequilibrador de cargadebo usar? Obviamente, podría cargar el equilibrio a nivel de aplicación, pero estoy buscando algo más eficiente. ¿Quizás hardware especializado (quizás no)? No puedo gastar mucho dinero...

Actualizar

Gracias por sus respuestas hasta ahora: ahora descubrí queLibrayHAProxySe puede configurar para buscar determinadas cookies. Todavía no pude averiguar si también permiten actualizar el mapeo dinámicamente (cuando la sesión "se mueve" a un servidor de aplicaciones diferente).

¿Y existen soluciones de hardware (económicas) que también puedan hacer eso? (¿Costaría eso menos que un servidor de equilibrio de carga adicional?)

Respuesta1

Usando "sesiones pegajosas (persistentes)" generalmente no se recomienda. Si hace esto, perderá muchos de los beneficios del equilibrio de carga. La carga no se equilibrará y perderá alta disponibilidad, ya que ciertos clientes no podrán acceder a su aplicación en caso de falla.

Quieres que tu sesión sea dinámica. Con Java, normalmente se almacena en la memoria y se agrupa en todos los servidores mediante multidifusión. Más comúnmente, la sesión se almacenará en una base de datos.

Si su aplicación web requiere sesiones fijas, es posible que su arquitectura necesite mejoras.

En cuanto a soluciones de balanceador de carga, existen muchas y el tema se ha tratado ampliamente aquí. Me gustaLVS. A otros les gustanginx. Redes de fundición, que fue adquirida por Brocade, fabrica algunos productos comerciales sólidos. Son la principal solución comercial para balanceadores de carga de hardware. Barracudatambién tiene un "dispositivo" basado en Linux/OSS que se puede utilizar para el equilibrio de carga.

Respuesta2

Entonces, un par de soluciones para ti.

Escriba un método de almacenamiento de sesiones que utilice una base de datos para almacenar información de la sesión y, si está en varios servidores, podría agrupar la base de datos. Realmente depende de cómo decidas organizar las cosas y otra idea es usar un servidor con Memcache detrás de los servidores web y almacenar las sesiones allí.

De esa forma tienes sesiones en un solo lugar y ya no importa a qué servidor web se dirige el cliente.

Respuesta3

Antes de gastar dinero... eche un vistazo al balanceador de carga de software de código abierto comoLibraoHAProxy.

Estoy de acuerdo con las sugerencias de Warner y Stu.

Respuesta4

LIBRA - PROXY INVERSO Y EQUILIBRADOR DE CARGA

El programa Pound es un proxy inverso, un equilibrador de carga y una interfaz HTTPS para servidores web. Pound fue desarrollado para permitir distribuir la carga entre varios servidores web y permitir un contenedor SSL conveniente para aquellos servidores web que no lo ofrecen de forma nativa. Pound se distribuye bajo la GPL: no tiene garantía, su uso, copia y obsequio son gratuitos.

Esto podría ser lo que estás buscando

http://www.apsis.ch/pound/

información relacionada