본문 바로가기

dev/WEB and WAS

nginx tomcat session clustering

nginx와 tomcat 세션 클러스터링 하는 방법은 간단합니다.

 

먼저 nginx.conf 파일을 수정합니다.

 

nginx.conf 파일

 

upstream에서 "ip_hash"는 로드밸런싱 방법 중의 하나로

 

클라이언트의 IP 주소를 해시하여

 

클라이언트는 항상 동일한 upstream 서버로 요청할 수 있도록 되어있습니다.

 

이를 통해 세션 일관성을 유지하고 클라이언트 연결을 특정 서버에 고정할 수 있습니다.

 

weight는 tomcat의 부하를 설정하는 값으로

 

위의 nginx.conf 파일을 예로 들면 3번의 요청이 있으면

 

2번은 192.168.0.203:8080이 처리하고

 

1번은 192.168.0.203:8081이 처리합니다.

 

server.xml 파일

 

다음으로 tomcat의 server.xml 파일을 수정하는데

 

<Engine> 태그에 jvmRoute 속성을 추가합니다.

 

jvmRoute 속성은 현재 tomcat 인스턴스를 나타내는 것입니다.

 

각각의 tomcat서버에 "tomcat1", "tomcat2"으로 jvmRoute 속성 값을 설정합니다.

 

그리고 <Cluster> 태그 주석을 해제하는데 SimpleTcpCluster클래스가 세션 클러스터링을 제공하는 클래스입니다.

 

web.xml 파일

 

tomcat의 web.xml파일에 "<distributable/>"을 추가합니다.

 

그리고 세션 클러스터링 관련 방화벽 개방합니다.

 

방화벽 확인

 

세션 클러스터링을 확인하기 위해 웹 서버에 접속합니다.

 

웹 서버 접속 화면

 

현재 세션이 tomcat1에서 새로 생성된 것을 확인할 수 있습니다.

 

tomcat1을 내려서 세션 클러스터링이 제대로 되는지 확인합니다.

 

웹 서버 접속 화면

 

tomcat1에서 생성된 세션이 tomcat2로 클러스터링 된 것을 확인할 수 있습니다.

 

지금까지 한 예제는 간단하게 세션 클러스터링을 구현한 것으로

 

성능이나 조금 더 복잡한 설정을 추가하려면 tomcat 공식 도큐먼트를 참고하시기 바랍니다.

 

https://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html

 

위에서 작성한 파일들이 필요하신 분들은 다운받으시면 됩니다.

 

nginx.conf
0.00MB
sessionCheck.jsp
0.00MB

'dev > WEB and WAS' 카테고리의 다른 글

tomcat appBase 수정  (0) 2023.02.15
tomcat catalina.out 날짜별 생성  (1) 2022.09.30
tomcat log encoding  (0) 2022.09.29
tomcat https 적용  (0) 2022.02.07
tomcat rwx 설정  (0) 2021.10.30