답변:
웹 사이트가 하나의 웹 서버에서만 제공 될 때 각 클라이언트-서버 쌍에 대해 세션 개체가 만들어지고 웹 서버의 메모리에 남아 있습니다. 클라이언트의 모든 요청은이 웹 서버로 이동하여이 세션 객체를 업데이트합니다. 상호 작용 기간 동안 일부 데이터를 세션 오브젝트에 저장해야하는 경우이 데이터는이 세션 오브젝트에 저장되며 세션이 존재하는 한 계속 유지됩니다.
그러나로드 밸런서 뒤에있는 여러 웹 서버에서 웹 사이트를 제공하는 경우로드 밸런서는 각 요청에 대한 실제 (물리적) 웹 서버를 결정합니다. 예를 들어,로드 밸런서 뒤에 3 개의 웹 서버 A, B 및 C가있는 경우 www.mywebsite.com/index.jsp는 서버 A에서 제공 될 수 있습니다. www.mywebsite.com/login.jsp는 서버 B와 www.mywebsite.com/accoutdetails.php는 서버 C에서 제공됩니다.
이제 (물리적으로) 3 개의 서로 다른 서버에서 요청이 제공되는 경우 각 서버는 사용자를 위해 세션 객체를 생성했으며이 세션 객체는 3 개의 독립적 인 상자에 있기 때문에 세션 객체에 무엇이 있는지 알 수있는 직접적인 방법은 없습니다. 다른 사람의. 이러한 서버 세션간에 동기화하려면 DB와 같이 모든 세션에 공통 인 계층에 세션 데이터를 쓰거나 읽어야 할 수 있습니다. 이제이 사용 사례에 대해 DB에 데이터를 쓰고 DB에서 데이터를 읽는 것은 좋은 생각이 아닙니다. 이제 여기 sticky-session 의 역할이 있습니다.
로드 밸런서가 고정 세션을 사용하도록 지시받은 경우 다른 서버가 있더라도 모든 실제 상호 작용은 동일한 물리적 서버와 이루어집니다. 따라서이 웹 사이트와의 전체 상호 작용에 걸쳐 세션 개체가 동일합니다.
요약하면, Sticky Sessions의 경우 모든 요청이 동일한 실제 웹 서버로 보내지는 반면, Sticky 이외의로드 밸런서는 요청을 처리 할 웹 서버를 선택할 수 있습니다.
예를 들어 Amazon의 Elastic Load Balancer 및 고정 세션에 대한 내용은 여기 ( http://aws.typepad.com/aws/2010/04/new-elastic-load-balancing-feature-sticky-sessions.html)를 참조 하십시오.
자세한 내용은 https://stackoverflow.com/a/11045462/592477 에서 답변을 작성했습니다.
또는 거기에서 읽을 수 있습니다 ==>
로드 밸런싱을 사용하면 여러 Tomcat 인스턴스가 있고로드를 분할해야 함을 의미합니다.