본문 바로가기
Computer Base/Web&Was

Tomcat9 Redis Session Cluster 구성

by 팡팡마트 2023. 10. 10.
728x90

** CentOS 8 Stream

 

1. Tomcat이 설치될 가상머신 2개, ssh전용 node 1개 생성

Tomcat9, openJDK 설치 진행

NSG 8080 오픈

 

2. Load Balancer 생성

인터넷통신이 가능하게 백엔드에서 제외시켜놓고 설정이 완료되면 마지막에 백엔드에 추가

 

3. Azure Cache for Redis 생성

프라이빗 엔드포인트로 생성

 

4. Redis session manager 설치

ran-jit/tomcat-cluster-redis-session-manager: Tomcat clustering redis session manager java client. (github.com)

 

GitHub - ran-jit/tomcat-cluster-redis-session-manager: Tomcat clustering redis session manager java client.

Tomcat clustering redis session manager java client. - GitHub - ran-jit/tomcat-cluster-redis-session-manager: Tomcat clustering redis session manager java client.

github.com

최신버전인 4.0으로 다운로드

# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip

 

압축해제

# unzip tomcat-cluster-redis-session-manager.zip

 

conf와 lib 폴더를 톰캣이 설치된 폴더에 이동

# cp /home/azure/tomcat-cluster-redis-session-manager/lib/* /home/azure/apache-tomcat-9.0.81/lib/

# cp /home/azure/tomcat-cluster-redis-session-manager/conf/* /home/azure/apache-tomcat-9.0.81/conf/

 

5. conf 파일 수정

{tomcat_home}/conf/redis-data-cache.properties 설정 수정

Redis 엔드포인트 주소 입력

 

** Azure Cache for Redis의 경우 프라이빗 엔드포인트를 활성화하여 프라이빗엔드포인트의 FQDN 입력

엔드포인트FQDN:6379

pw는 기본키 입력

 

{tomcat_home}/conf/context.xml 수정

Context 안에 아래 내용 추가   

    <Valve className="tomcat.request.session.redis.SessionHandlerValve" />
    <Manager className="tomcat.request.session.redis.SessionManager" />

 

{tomcat_home}/conf/web.xml 수정

 

6. 테스트 페이지 만들기

# vi {tomcat_home}/webapps/ROOT/session_check.jsp

아래 내용 입력

was1과, was2를 알아볼수있게 수정

 

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import = "java.net.InetAddress" %>
<%@ page import = "java.net.UnknownHostException" %>
<HTML>
<HEAD>
    <TITLE>Session Clustering Test WAS1/2  <- WAS1에 1, 2번에 2입력</TITLE>
</HEAD>
<BODY>
<h1>Session Clustering Test  <%= request.getServerName() %></h1>
<%=InetAddress.getLocalHost().getHostName()%>
<%=InetAddress.getLocalHost().getHostAddress()%>
<%
    Integer ival = (Integer)session.getAttribute("_session_counter");
    if(ival==null) {
        ival = new Integer(1);
    }
    else {
        ival = new Integer(ival.intValue() + 1);
    }
    session.setAttribute("_session_counter", ival);
    System.out.println("here~~~~"+ival);
%>
Session Counter = [<b> <%= ival %> </b>]<p>
<a href="./session.jsp">[Reload]</a>
<p>
Current Session ID : <%= request.getRequestedSessionId() %><br />
</BODY>
</HTML>

 

7. 세션확인

톰캣 재시작 후 LB ip로 페이지 접속

1번 was 가상머신 종료하고 새로고침하면 was2로 failover되면서 세션카운트 및 세션ID 유지

 

**이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

728x90

'Computer Base > Web&Was' 카테고리의 다른 글

Apache HTTP -> HTTPS 리다이렉트  (2) 2023.11.21
Tomcat9 - Mysql8.0 JDBC연동  (0) 2023.10.27
Apache HTTP가속기 Varnish cache 설치하기  (0) 2023.08.23
Apache mod_ssl SSL인증서  (0) 2023.08.22
Apache mod_evasive DDOS 차단  (0) 2023.08.21