-
Spring Boot | Redis로 세션 클러스터링 적용하기▼ Backend/스프링 (Spring) 2023. 2. 3. 16:31반응형
프로젝트에 세션 로그인 처리가 되어있는 가정하에 진행되었습니다.
Spring Boot | 로그인 구현하기 (Spring Security)
들어가기에 앞서..
다양한 방식의 세션 클러스터링 방법이 있지만 해당 프로젝트는 jar로 패키징되는 내장형 톰캣 실행으로 별도의 WAS 없이 실행합니다. 그리고 스프링 부트에서는 간단한 방법으로 Redis를 통해 세션 정보를 등록하는 방법을 사용할 수 있습니다.
📌 Redis 설치 방법
윈도우 10 | 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"
@EnableSpringHttpSession
❗ 마무리
이제는 해당 프로젝트의 jar를 포트별(java -Dserver.port=포트 -jar demo.jar) 로 각각 실행하고 다른 포트로 로그인을 시도해도 Redis에 등록된 세션 정보를 공통으로 바라봄으로써 세션이 유지되는걸 확인 할 수 있다.
추가 적으로 앞 단에 Nginx의 로드밸런싱 설정을 통해 부하 분산 또한 간단하게 적용이 가능하다.
반응형'▼ Backend > 스프링 (Spring)' 카테고리의 다른 글
Spring Boot | bootWar, war 내,외장 톰캣으로 실행하기 (0) 2023.02.27 Spring Boot | Prometheus + Grafana 모니터링 (0) 2023.02.10 Spring | IOC, DI, Bean (0) 2023.01.28 Spring Boot | JPA, 다중 데이터베이스 구성하기 (0) 2022.05.25 Spring Boot | application.properties(yml) 환경에 맞게 분리하기 (0) 2022.05.13