16

Jestem nieco zdezorientowany, jeśli chodzi o użycie lepkości sesji w Amazon Web Services. Kiedy wdrażam aplikację WWW java przy użyciu programu Amazon Elastic Beanstalk, mogę włączyć obsługę sesji, a następnie określić okres ważności plików cookie.Lepsza sesja w serwisach internetowych Amazon

Moja aplikacja korzysta z plików cookie dla sesji (JSESSIONID), a także dla innych małych rzeczy. Większość stron jest dostępna tylko po zalogowaniu (używam Spring Security do zarządzania nim). Witryna będzie działać na maksymalnie 25 małych instancjach EC2.

Czy należy włączyć lepkość sesji? Jeśli go nie włączę, czy to oznacza, że ​​mogę zostać wylogowany w suddendly, ponieważ moduł równoważenia obciążenia zabrał mnie na inny serwer (nie serwer, który mnie uwierzytelnił)? Jeśli włączę obsługę sesji, czy wylogowuję się, gdy serwer, który mnie uwierzytelnił, zostanie zamknięty? Zasadniczo, dlaczego i kiedy należy używać lepkości sesji?

Dziękuję bardzo.

+0

Sesja lepkość jest możliwe przy zastosowaniu węzła js na AWS ?? –

Odpowiedz

21

Jeśli nie będę go włączyć, to znaczy, że mogę być suddendly wylogować ponieważ równoważenia obciążenia zabrał mnie do innego serwera (nie serwera, który uwierzytelnione Me)?

Tak

Gdybym umożliwić lepkość sesji, mogę się wylogować, gdy serwer, który zostanie uwierzytelniony mnie zamknąć?

Tak

Podczas korzystania z Elastic Beanstalk typowy webapp Java, myślę, że na pewno chcesz włączyć sesji lepkość. W przeciwnym razie każde żądanie HTTP z przeglądarki użytkownika może zostać przekierowane na inny serwer.

Aby obejść problem niszczenia sesji użytkownika, gdy serwer "utknie", aby się wyłączył, trzeba zajrzeć do Tomcat session replication. To nie jest coś, co Elastic Beanstalk przychodzi niestety z pudełka, więc aby ustawić replikację sesji, musiałbyś stworzyć niestandardowy EI Beanstalk AMI dla twojej aplikacji do użycia. Trzeba też użyć implementacji replikacji sesji Tomcat that does not rely on multicast, ponieważ multicast nie jest dostępny w AWS ani w żadnym innym środowisku chmurowym, które znam. Przykładem implementacji, która nie opiera się na multiemisji, jest taka, która używa bazy danych (takiej jak Amazon RDS) lub serwera z pamięcią (takiego jak Amazon Elastic Cache), aby sesje były dostępne w wielu instancjach Tomcat.

Należy również pamiętać, że interfejs użytkownika Elastic Beanstalk zezwala tylko na włączenie plików cookie HTTP generowanych przez mechanizm równoważenia obciążenia. Jednak po utworzeniu modułu równoważenia obciążenia przez Elastic Beanstalk można przejść do konsoli EC2 i zmodyfikować ustawienia modułu równoważenia obciążenia, aby przełączyć je na pliki cookie generowane przez aplikacje, a następnie poprosić go o użycie pliku cookie "JSESSIONID".

+0

Dziękuję bardzo za wyczerpującą odpowiedź @mbaird. Skonfigurowałem replikację sesji w Tomcat za pomocą MySQL DB. Postępowałem zgodnie z tym przewodnikiem: http://www.intelligrape.com/blog/2010/07/21/tomcat-6-session-persistence-through-jdbcstore/. Działa dobrze, gdy istnieje jedna instancja EC2. Kiedy są dwa (lub więcej) przechodzi w pętlę przekierowania podczas logowania. To 302 przekierowuje na stronę główną raz za razem. Za każdym razem, gdy zostanie przekierowany, serwer ustawia plik cookie z innym identyfikatorem JSESSIONID.Czy masz pojęcie, dlaczego tak się dzieje? Dziękuję Ci! – satoshi

+3

Konfiguracja 'memcached-session-manager' do pracy z Amazon ElastiCache rozwiązała problem .. Dzięki! – satoshi

Powiązane problemy