16

Amazon Web Services에서 세션 끈적임을 사용하는 것에 대해 약간 혼란 스럽습니다. Amazon Elastic Beanstalk을 사용하여 Java 웹 응용 프로그램을 배포 할 때 세션 고정을 활성화 한 다음 쿠키 만료 기간을 지정할 수 있습니다.아마존 웹 서비스의 세션 끈함

내 응용 프로그램은 다른 작은 것들뿐만 아니라 세션 (JSESSIONID)에 쿠키를 사용합니다. 대부분의 웹 사이트는 로그인 한 후에 만 ​​접근 할 수 있습니다 (저는 그것을 관리하기 위해 Spring 보안을 사용합니다). 웹 사이트는 최대 25 개의 작은 EC2 인스턴스에서 실행됩니다.

세션 스태킹을 활성화해야합니까? 만약 내가 그것을 가능하게하지 않는다면로드 밸런서가 나를 (인증 된 서버가 아닌) 다른 서버로 데려 갔기 때문에 나는 suddendly 로그 아웃 될 수 있다는 것을 의미합니까? 세션 stickiness를 활성화하면 인증 된 서버가 종료 될 때 로그 아웃됩니까? 기본적으로, 왜 그리고 언제 세션 스티커를 사용해야합니까?

대단히 감사합니다.

+0

세션 끈적 거림이 AWS에 노드 JS 응용 프로그램에서 가능하다? –

답변

21

로드 밸런서가 나를로드 밸런서 (load balancer)가 나를 인증 한 서버가 아닌 다른 서버로 데려 갔기 때문에 suddendly 로그 아웃 될 수 있다는 의미입니까?

나는 세션 고정을 사용하는 경우 나 종료됩니다 서버를 인증하는 경우, 내가 로그 아웃합니까?

전형적인 자바 웹 애플리케이션과 탄성 콩 줄기를 사용하여, 당신은 확실히 세션 고정을 활성화 할 것이라 생각합니다. 그렇지 않으면 사용자 브라우저의 각 HTTP 요청을 다른 서버로 라우팅 할 수 있습니다.

서버가 종료되어 서버가 종료 될 때 사용자 세션이 종료되는 문제를 해결하려면 Tomcat session replication을 조사해야합니다. 이것은 불행하게도 Elastic Beanstalk이 제공하는 것이 아니므로 세션 복제를 설정하려면 응용 프로그램에서 사용할 Elastic Beanstalk AMI를 만들어야합니다. 또한 AWS 또는 내가 아는 다른 클라우드 환경에서는 멀티 캐스트를 사용할 수 없으므로 Tomcat 세션 복제 that does not rely on multicast의 구현을 사용해야합니다. 멀티 캐스트에 의존하지 않는 구현 예는 여러 Tomcat 인스턴스에서 세션을 사용할 수 있도록 데이터베이스 (예 : Amazon RDS) 또는 memcached 서버 (예 : Amazon Elastic Cache)를 사용하는 것입니다.

또한 Elastic Beanstalk UI에서는로드 밸런서가 생성 한 HTTP 쿠키 만 활성화 할 수 있습니다. 그러나 Elastic Beanstalk가로드 밸런서를 만든 후에 EC2 콘솔로 이동하여로드 밸런서의 설정을 수정하여 응용 프로그램에서 생성 한 HTTP 쿠키로 전환 한 다음 "JSESSIONID"쿠키를 사용하도록 지시 할 수 있습니다.

+0

철저한 답변을 해주셔서 감사합니다. @mbaird. MySQL DB를 사용하여 Tomcat에서 세션 복제를 구성했습니다. 나는이 가이드를 따라 갔다 : http://www.intelligrape.com/blog/2010/07/21/tomcat-6-session-persistence-through-jdbcstore/. 그것은 하나의 EC2 인스턴스가있을 때 잘 동작합니다. 두 개 (또는 그 이상)가있을 때 로그인 할 때 리다이렉트 루프에 들어갑니다. 302는 홈 페이지로 계속해서 재전송됩니다. 리디렉션 될 때마다 서버는 다른 JSESSIONID를 가진 쿠키를 설정합니다.왜 그런 일이 벌어지고 있는지 알았습니까? 고맙습니다! – satoshi

+3

Amazon ElastiCache와 작동하도록'memcached-session-manager'를 설정하면 문제가 해결되었습니다 .. 감사합니다! – satoshi