-
[Spring Boot] Redis로 세션 클러스터링 적용하기Spring Boot 2023. 1. 24. 14:29
프로젝트에 세션 로그인 처리가 되어있는 가정하에 진행되었습니다.
[Spring Boot] 로그인 처리 with Spring Security
들어가기에 앞서..
다양한 방식의 세션 클러스터링 방법이 있지만 해당 프로젝트는 jar로 패키징되는 내장형 톰캣 실행으로 별도의 WAS 없이 실행하고, 또 스프링 부트에서는 간단한 방법으로 Redis를 통해 세션 정보를 등록하는 방법을 사용할 수 있습니다.
📌 Redis 설치 방법
[도커] Redis 생성 및 redis-cli 접속하기
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.session:spring-session-data-redis'
application.yml
spring: redis: host: localhost port: 6379 session: store-type: redis
@EnableRedisHttpSession
SpringBootApplication에 해당 어노테이션을 추가합니다.
@SpringBootApplication @EnableRedisHttpSession public class AdminApplication { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); } }
redis-cli
keys *기존의 로그인을 통해 세션 정보가 Redis에 정상적으로 등록되는지 확인합니다.
127.0.0.1:6379> keys * 1) "spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:tester" 2) "spring:session:sessions:expires:cebc32c2-bc3c-4b7b-8361-7724566a0f2a" 3) "spring:session:sessions:cebc32c2-bc3c-4b7b-8361-7724566a0f2a" 4) "spring:session:expirations:1674537120000"
❗ 마무리
이제는 해당 프로젝트의 jar를 포트별(java -Dserver.port=포트 -jar demo.jar) 로 각각 실행하고 다른 포트로 로그인을 시도해도 Redis에 등록된 세션 정보를 공통으로 바라봄으로써 세션이 유지되는걸 확인 할 수 있다. 여기서 그 앞 단에 Nginx의 로드밸런싱 설정을 통해 부하 분산 또한 간단하게 적용이 가능하다.
'Spring Boot' 카테고리의 다른 글
[Spring] 스프링 IOC 컨테이너와 Bean (0) 2023.01.15 [JAVA] 파일 다운로드 구현하기 (0) 2022.11.09 [Java] jar 배포 시 File java.nio.file.NoSuchFileException (0) 2022.11.01 [Spring Boot] AOP(Aspect Oriented Programming) 적용하기 (0) 2022.10.24 [JAVA] 파일 첨부, 파일 업로드 구현하기 (0) 2022.07.11