티스토리 뷰
참고 문서 : 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
- place
- Java
- Compile
- Review
- devtools
- TIP
- ssh
- HTTP
- springboot
- SSL
- web
- development
- Spring
- kotlin
- 엘리스센터
- food
- devel
- Flutter
- samba
- Linux
- gpkiapi
- MySQL
- dart
- Android
- JavaScript
- json parse
- Security
- Mobile
- Fun
- 맛집
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |