16

我對在Amazon Web Services上使用會話粘性有點困惑。當我使用Amazon Elastic Beanstalk部署我的Java Web應用程序時,可以選擇啓用會話粘性,然後指定cookie過期期限。Amazon Web Services上的會話粘性

我的應用程序爲會話(JSESSIONID)以及其他小事情使用cookie。大多數網站只有在登錄後才能訪問(我使用Spring安全管理)。該網站將運行多達25個小型EC2實例。

我應該啓用會話粘性嗎?如果我不啓用它,這是否意味着我可以突然註銷,因爲負載均衡器將我帶到另一個服務器(而不是認證我的服務器)?如果啓用會話粘滯性,當驗證我的服務器關閉時是否會註銷?基本上,爲什麼和什麼時候應該使用會話粘性?

非常感謝。

+0

會話粘性,可以在節點上的JS AWS應用? –

回答

21

如果我不啓用它,是否意味着我可能會突然註銷,因爲負載平衡器帶我到另一臺服務器(而不是認證我的服務器)?

如果啓用會話粘性,我會被註銷時,服務器認證的我被關閉?

當使用彈性魔豆具有典型的Java Web應用程序,我想你一定會想啓用會話粘性。否則,來自用戶瀏覽器的每個HTTP請求都可能被路由到不同的服務器。

爲了解決用戶會話被破壞的問題,當他們「卡住」的服務器被關閉時,您需要查看Tomcat session replication。不幸的是,這不是Elastic Beanstalk帶來的東西,因此爲了設置會話複製,您必須創建自定義的Elastic Beanstalk AMI以供您的應用程序使用。此外,由於多播在AWS或我知道的任何其他雲環境中不可用,因此您必須使用Tomcat會話複製的實現that does not rely on multicast。不依賴多播的實現示例是使用數據庫(如Amazon RDS)或memcached服務器(如Amazon Elastic Cache)使會話跨多個Tomcat實例可用的實例。

另請注意,Elastic Beanstalk UI僅允許啓用負載均衡器生成的HTTP cookie。但是,在Elastic Beanstalk創建負載平衡器後,您可以進入EC2控制檯並修改負載平衡器的設置,將其切換爲應用程序生成的HTTP Cookie,然後告訴它使用「JSESSIONID」cookie。

+0

非常感謝您的詳盡回覆,@mbaird。我使用MySQL DB在Tomcat中配置了會話複製。我遵循本指南:http://www.intelligrape.com/blog/2010/07/21/tomcat-6-session-persistence-through-jdbcstore/。當有一個EC2實例時,它工作正常。當有兩個(或更多)它在登錄時進入重定向循環。它302一次又一次地重定向到主頁。每次重定向時,服務器都會使用不同的JSESSIONID設置cookie。你有什麼想法爲什麼發生?謝謝! – satoshi

+3

配置'memcached-session-manager'以使用Amazon ElastiCache解決了這個問題..謝謝! – satoshi

相關問題