nginx와 tomcat 세션 클러스터링 하는 방법은 간단합니다.
먼저 nginx.conf 파일을 수정합니다.
upstream에서 "ip_hash"는 로드밸런싱 방법 중의 하나로
클라이언트의 IP 주소를 해시하여
클라이언트는 항상 동일한 upstream 서버로 요청할 수 있도록 되어있습니다.
이를 통해 세션 일관성을 유지하고 클라이언트 연결을 특정 서버에 고정할 수 있습니다.
weight는 tomcat의 부하를 설정하는 값으로
위의 nginx.conf 파일을 예로 들면 3번의 요청이 있으면
2번은 192.168.0.203:8080이 처리하고
1번은 192.168.0.203:8081이 처리합니다.
다음으로 tomcat의 server.xml 파일을 수정하는데
<Engine> 태그에 jvmRoute 속성을 추가합니다.
jvmRoute 속성은 현재 tomcat 인스턴스를 나타내는 것입니다.
각각의 tomcat서버에 "tomcat1", "tomcat2"으로 jvmRoute 속성 값을 설정합니다.
그리고 <Cluster> 태그 주석을 해제하는데 SimpleTcpCluster클래스가 세션 클러스터링을 제공하는 클래스입니다.
tomcat의 web.xml파일에 "<distributable/>"을 추가합니다.
그리고 세션 클러스터링 관련 방화벽 개방합니다.
세션 클러스터링을 확인하기 위해 웹 서버에 접속합니다.
현재 세션이 tomcat1에서 새로 생성된 것을 확인할 수 있습니다.
tomcat1을 내려서 세션 클러스터링이 제대로 되는지 확인합니다.
tomcat1에서 생성된 세션이 tomcat2로 클러스터링 된 것을 확인할 수 있습니다.
지금까지 한 예제는 간단하게 세션 클러스터링을 구현한 것으로
성능이나 조금 더 복잡한 설정을 추가하려면 tomcat 공식 도큐먼트를 참고하시기 바랍니다.
https://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html
위에서 작성한 파일들이 필요하신 분들은 다운받으시면 됩니다.
'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 |