나는 현재 같은 VPS에서 실행되는 두 개의 톰캣 6.0.32 인스턴스 (Tomcat1 및 Tomcat2)로 구성된 매우 기본적인 클러스터가 있습니다. mod_proxy_ajp와 mod_proxy_balancer를 같은 VPS의 Apache를 통한로드 밸런서로 사용하고 있습니다. 우리는 기본 양식 인증 (j_security_check을 통해)을 사용하여 사용자에 대해 인증 된 세션을 생성합니다.톰캣 6 클러스터링 - 인증 된 세션 복제
부하 분산 장치가 정상적으로 작동하고 인증되지 않은 세션이 두 인스턴스간에 성공적으로 복제됩니다. 그러나 각 인스턴스간에 인증 된 세션을 바꿀 수는 없습니다.
session.jsp (JPS 템플릿 http://www.syslog.gr/articles-mainmenu-99/15-tomcat-cluster-session-replication.html 기반)라는 매우 기본적인 JSP를 사용하여 세션을 테스트하여 새로운 세션인지 확인하고 JSESSIONID를 출력합니다. 나는 JSP의 사본 한 부를 보호 된 영역 내부에, 사본 한 부를 보호 된 영역 외부에 가지고있다.
내가 실행 한 다음 테스트 : 나는 Tomcat1에 응용 프로그램의 보호 영역 밖에 보면 session.jsp에 액세스
시험 1), I는 JSESSIONID를 기록해서로드 밸런서로 확인 그 Tomcat1 요청을 처리했습니다. 그런 다음 Tomcat1을 종료하고 페이지를 새로 고칩니다. 요청은 이제 Tomcat2으로 처리됩니다 (로드 밸런서가 확인한대로). 페이지로드가 끝나면 원래 JSESSIONID가 표시되고 세션이 남아 있습니다.
시험 2)
나는 Tomcat1에 APPLICATION 응용의 보호 지역 안에 보면 session.jsp에 액세스 할 수 있습니다. 로그인 한 후 session.jsp로 보내고 내 JSESSIONID를 적어두고 Tomcat1이 요청을 처리 한 것보다로드 밸런서에서 확인하십시오. 그런 다음 Tomcat1을 종료하고 페이지를 새로 고칩니다. 요청은 이제 Tomcat2으로 처리됩니다 (로드 밸런서가 확인한대로). 페이지가로드되면 내 쿠키를 확인합니다. 이제 새로운 JSESSIONID가 생겼고 다시 로그인하라는 메시지가 나타납니다.
인증 된 세션이 인증되지 않은 세션처럼 복제되지 않는다는 것을 알았습니다. 이것이 좋은 이유입니까 아니면 구성 문제입니까?
worker.loadbalancer는 또한 mod_jk 설정입니다 나의 이해이다. 우리가 mod_proxy를 사용하고 있기 때문에 이것이 적절하다고 생각하지 않습니다. 고정 세션이 mod_proxy에서 활성화되어 작동 중입니다. 문제는 Tomcat 인스턴스간에 인증 된 세션을 복제하는 것입니다. – Ross