서버 이중화시 세션을 공유해야 하는 이슈가 있다.
A - B 서버 간 세션이 원활히 공유 되어야 서비스에 문제가 없기 때문에 Redis 라는 것을 통해 공유해보자.
여기서 설치는 생략.
서버1 : 192.168.1.1 (master)
서버2 : 192.168.1.2
각각의 IP 라고 보고 진행해본다.
Redis 설정 전에 Tomcat 설정부터 해보자.
각각 톰켓 설치된 경로에 /lib 에 들어가서
ㄴtomcat-redis-session-manager-2.0.0.jar
ㄴjedis-2.5.2.jar
ㄴcommons-pool2-2.2.jar
를 추가 해준다.
이후 /conf/context.xml 에 들어가서
<Context> 안에 아래 내용을 넣어주자.
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.1.1"
port="6379"
password="Redis비밀번호"
database="0"
maxInactiveInterval="30"/>
host 에는 matser 로 사용할 IP 를 넣었다.
# Redis 설정
# Redis 시작/중지
sudo /etc/init.d/redis_6379 start
sudo /etc/init.d/redis_6379 stop
설정파일 위치 /etc/redis/6379.conf
서버1 Master 설정
requirepass 부분을 찾아서 주석 해제 후 비밀번호 입력
서버2 Slave 설정
masterauth 부분을 찾아서 주석 제거 후 위에서 설정한 Master 비밀번호 입력
ㄴ ex) masterauth redis비밀번호
# repl-ping-slave-period 10 이 부분 주석 제거
# repl-timeout 60 이 부분 주석 제거
적용 후 Redis 재시작 후 로그 확인
로그 위치 /var/log/redis_6379.log
서버1 Master 로그에서 "Synchronization with slave ip:6379 succeeded" 확인
서버2 Slave 로그에서 "MASTER <-> SLAVE sync: Finished with success" 확인
단순 세션정도에 공유는 기본(메모리)로 가능하지만 내용이 커진다면 RDB처럼 사용 가능한 옵션도 있다.
또한 Slave 로 설정된 서버2는 Read 만 가능하므로 상황에 맞게 사용해야 한다.
'Redis' 카테고리의 다른 글
[Redis] Redis 시작시 Warning 처리 (0) | 2020.02.06 |
---|