16

Estoy un poco confundido acerca del uso de la coherencia de sesión en Amazon Web Services. Cuando despliegue mi aplicación web java utilizando Amazon Elastic Beanstalk, puedo optar por habilitar la coherencia de la sesión y luego especificar un período de caducidad de la cookie.Pegajosidad de sesión en Amazon Web Services

Mi aplicación utiliza cookies para la sesión (JSESSIONID), así como para otras cosas pequeñas. La mayoría del sitio web es accesible solo después de iniciar sesión (uso Spring security para administrarlo). El sitio web se ejecutará en hasta 25 pequeñas instancias de EC2.

¿Debo activar la adherencia de la sesión? Si no lo habilito, ¿significa que podría desconectarse repentinamente porque el equilibrador de carga me llevó a otro servidor (no al servidor que me autenticó)? Si habilito la coherencia de la sesión, ¿me desconecto cuando se cierra el servidor que me autenticó? Básicamente, ¿por qué y cuándo debería usar pegajosidad de sesión?

Muchas gracias.

+0

rigidez de la sesión es posible en la aplicación de nodo js en AWS ?? –

Respuesta

21

Si no lo habilito, ¿significa que podría desconectarse repentinamente porque el equilibrador de carga me llevó a otro servidor (no al servidor que me autenticó)?

Si habilito la rigidez de la sesión, qué mi sesión cuando el servidor que me pone autenticado apago?

Al utilizar Elastic Beanstalk con una aplicación web típica de Java, creo que sin duda desea habilitar sesión de pegajosidad. De lo contrario, cada solicitud HTTP del navegador de un usuario podría enrutarse a un servidor diferente.

Para evitar el problema de la sesión del usuario que se destruye cuando el servidor al que están "bloqueados" se cierra, debe buscar en Tomcat session replication. Esto no es algo que desafortunadamente viene con Elastic Beanstalk, por lo que para configurar la replicación de la sesión tendría que crear una AMI de Elastic Beanstalk personalizada para que la use su aplicación. Además, debería utilizar una implementación de la replicación de sesión de Tomcat that does not rely on multicast, ya que la multidifusión no está disponible en AWS ni en ningún otro entorno de nube que conozca. Un ejemplo de una implementación que no depende de la multidifusión sería aquella que usa una base de datos (como Amazon RDS) o un servidor de memoria (como Amazon Elastic Cache) para que las sesiones estén disponibles en varias instancias de Tomcat.

También tenga en cuenta que la interfaz de usuario Elastic Beanstalk solo le permite habilitar las cookies HTTP generadas por el equilibrador de carga. Sin embargo, después de que Elastic Beanstalk haya creado el equilibrador de carga, puede acceder a la consola EC2 y modificar la configuración del equilibrador de carga para cambiarlo a cookies HTTP generadas por la aplicación, y luego decirle que use la cookie "JSESSIONID".

+0

Muchas gracias por su exhaustiva respuesta, @mbaird. He configurado la replicación de la sesión en Tomcat usando un DB MySQL. Seguí esta guía: http://www.intelligrape.com/blog/2010/07/21/tomcat-6-session-persistence-through-jdbcstore/. Funciona bien cuando hay una sola instancia de EC2. Cuando hay dos (o más) va en un bucle de redirección al iniciar sesión. Es 302 redirige a la página de inicio una y otra vez. Cada vez que se redirecciona, el servidor establece una cookie con un JSESSIONID diferente.¿Tienes alguna idea de por qué está sucediendo? ¡Gracias! – satoshi

+3

Configurando 'memcached-session-manager' para que funcione con Amazon ElastiCache resolvió el problema .. ¡Gracias! – satoshi

Cuestiones relacionadas