티스토리 뷰

참고 문서 : https://github.com/jcoleman/tomcat-redis-session-manager

 

 

- Server OS : CentOS Linux release 7.9.2009 (Core) x86_64
- JAVA : Oracle 1.8.0_333
- Tomcat : apache-tomcat-7.0.109
    WAS #1 : 192.168.0.10 -> /home/www/apache-tomcat-7.0.109 에 설치
    WAS #2 : 192.168.0.11 -> /home/www/apache-tomcat-7.0.109 에 설치

 

Tomcat7을 이용하는 레거시 환경 에서 Tomcat Session Cluster 보다는 Redis 를 이용 하는 방법이 편할거 같아서 테스트 하면서 남기는 기록 이다. 서버에 대한 전문 지식이 없는 단순한 개발자 수준에서 작성된 문서이므로 틀리거나 잘못 설명된 부분이 있을지도 모른다.

 

L4 스위치에서 주로 WAS #1을 선택 하기에, WAS #2 에 Redis Server 를 설치 하기로 하였다.

 

 


1. WAS #2 에 redis 를 설치
[root@WAS2 ~]# yum search redis
... 중략 ...
redis.x86_64 : A persistent key-value database
[root@WAS2 ~]# yum install redis
... 중략 ...
Running transaction
  Installing : jemalloc-3.6.0-1.el7.x86_64          1/2 
  Installing : redis-3.2.12-2.el7.x86_64             2/2 
  Verifying  : redis-3.2.12-2.el7.x86_64            1/2 
  Verifying  : jemalloc-3.6.0-1.el7.x86_64         2/2 

Installed:
  redis.x86_64 0:3.2.12-2.el7

Dependency Installed:
  jemalloc.x86_64 0:3.6.0-1.el7

Complete!

 

 


2. redis 가 설치된 WAS #2 의 redis 설정 및 재시작
[root@WAS2 ~]# cp /etc/redis.conf /etc/redis.conf.ori
[root@WAS2 ~]# vi /etc/redis.conf
bind 0.0.0.0
port 6379
protected-mode no
requirepass MySeretP@ssword

redis  환경 설정이 끝났으면, 서비스를 재시작 하여 준다.
[root@WAS2 ~]# service redis restart
Redirecting to /bin/systemctl restart redis.service
[root@WAS2 ~]#  service redis status
Redirecting to /bin/systemctl status redis.service
● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since 수 2022-09-07 13:18:11 KST; 5s ago
 Main PID: 10847 (redis-server)
    Tasks: 3
   CGroup: /system.slice/redis.service
           └─10847 /usr/bin/redis-server 0.0.0.0:6379

 9월 07 13:18:11 pharmpaymall-WAS2 systemd[1]: Starting Redis persistent key-value database...
 9월 07 13:18:11 pharmpaymall-WAS2 systemd[1]: Started Redis persistent key-value database.

 

 

3. WAS #1, WAS #2 에서 tomcat 설정 

이제 부터는 WAS #1, WAS #2 에서 모두 진행 해야 하는 작업 이다.
tomcat 설치 디렉토리 아래 lib 디렉토리에 아래의 jar 파일 3개를 복사 하여 넣는다.

tomcat-redis-session-manager-2.0.0.jar
다운로드 : https://github.com/rmohr/tomcat-redis-session-manager/releases/download/2.0-tomcat-7/tomcat-redis-session-manager-2.0.0.jar

jedis-2.5.2.jar
다운로드 : https://repo1.maven.org/maven2/redis/clients/jedis/2.5.2/jedis-2.5.2.jar

commons-pool2-2.2.jar
다운로드 : https://repo1.maven.org/maven2/org/apache/commons/commons-pool2/2.2/commons-pool2-2.2.jar


[root@WAS1 ~]# su - www
[www@WAS1 ~]$ cd ~/apache-tomcat-7.0.109/lib
[www@WAS1 lib]$ wget https://github.com/rmohr/tomcat-redis-session-manager/releases/download/2.0-tomcat-7/tomcat-redis-session-manager-2.0.0.jar
[www@WAS1 lib]$ wget https://repo1.maven.org/maven2/redis/clients/jedis/2.5.2/jedis-2.5.2.jar
[www@WAS1 lib]$ wget https://repo1.maven.org/maven2/org/apache/commons/commons-pool2/2.2/commons-pool2-2.2.jar

* 만약 위의 주소에서 받을 수 없는 경우 https://mvnrepository.com/ 에서 검색 하여 다운로드 받도록 한다.


tomcat 설치 디렉토리 아래 conf 디렉토리 아래의 context.xml 파일을 수정 한다.

[www@WAS1 lib]$ cp ~/apache-tomcat-7.0.109/conf/context.xml ~/apache-tomcat-7.0.109/conf/context.xml.ori
[www@WAS1 lib]$ vi ~/apache-tomcat-7.0.109/conf/context.xml

<?xml version='1.0' encoding='utf-8'?>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- 아래는 추가된 내용 -->
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
                     host="192.168.0.11"
                     port="6379"
                     password="MySeretP@ssword"
                     database="0"
                     maxInactiveInterval="30"
    />
</Context>


WAS #1, WAS #2 의 tomcat 을 재시작  하여 준다.
[www@WAS1 ~]$ shutdown.sh 
Using CATALINA_BASE:   /home/www/apache-tomcat-7.0.109
Using CATALINA_HOME:   /home/www/apache-tomcat-7.0.109
Using CATALINA_TMPDIR: /home/www/apache-tomcat-7.0.109/temp
Using JRE_HOME:        /home/www/jdk1.8.0_333
Using CLASSPATH:       /home/www/apache-tomcat-7.0.109/bin/bootstrap.jar:/home/www/apache-tomcat-7.0.109/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[www@WAS1 ~]$  startup.sh 
Using CATALINA_BASE:   /home/www/apache-tomcat-7.0.109
Using CATALINA_HOME:   /home/www/apache-tomcat-7.0.109
Using CATALINA_TMPDIR: /home/www/apache-tomcat-7.0.109/temp
Using JRE_HOME:        /home/www/jdk1.8.0_333
Using CLASSPATH:       /home/www/apache-tomcat-7.0.109/bin/bootstrap.jar:/home/www/apache-tomcat-7.0.109/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

 


4. 테스트
WAS #1 에서 로그인 한 뒤, WAS #1을 정지 시키고 WAS #2 에서 로그인을 요구 하는지 보는 형식으로 테스트를 진행 하였으며, redis-cli 명령어를 이용 하여 세션 정보가 생성 되었는지 확인 후, redis 의 모든 세션 정보를 삭제 하였을때, 정상적으로 로그아웃 처리 되는 것을 확인 하였다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함