본문 바로가기
개발

Sticky Session & Session Clustering

by hxxyeoniii 2024. 11. 4.

세션이 유지되는 상태에서 암호화 키가 변경되는 이슈가 발생했다.

비슷한 사례로, was 재기동 시 암호화키가 랜덤으로 생성되어 was1번에서 암호화 키를 받아 value 값을 암호화하고, 서버에 요청할때는 was2번으로 붙어 복호화시 key가 달라 복호화를 할 수 없는 이슈가 있었다.


발생 배경

도메인으로 접속 시 이중화 클러스터링이 되어있고 sticky sesson 설정 하지 않음 -> 로그인 후 was1으로 접속하고, 다시 요청을 하면 was2번으로도 붙을 수 있는 환경

 

문제 상황

- 서버 재시작 시점에 암호화 키를 랜덤으로 생성함

- 서버 재시작 전 브라우저에서 가지고 있던 파라미터 암호화 값을 그 전에 키 값으로 복호화를 시도하며 에러 발생

 

해결 방법

1. 서버 재시작 시점 기존 세션 끊기

2. 고정 암호화 키 사용 : 서버 재시작 시점에도 같은 암호화 키를 사용하도록

 

 

-> 서버가 클러스터 환경일 경우, 고정 암호화 키를 사용할 수 있게하여 해결하였다.


위의 이슈를 해결하며, 분산 처리 환경에서 데이터 불일치를 해결하는 방법을 찾아보게 되었다.

 

Sticky Session

Sticky Session은 처음 요청을 보냈을 때, 응답을 준 서버로만 계속 요청을 보내 특정 서버에 붙어있는 방식이다.

= 특정 세션의 요청을 처음 처리한 서버로만 보내는 것

브라우저의 쿠키에 이용한 서버가 어딘지를 저장해 사용하는 방식이 대표적이다.

 

 

특정 서버로만 요청을 하기에 세션이 그대로 남아있어 데이터 불일치 문제를 해결할 수 있지만, 단점도 존재한다.

 

(-) 서버 하나로만 많은 요청이 몰릴 수 있음

(-) 자신의 세션이 없는 다른 서버는 사용할 수 없음

(-) 하나의 서버에 장애 발생 시, 해당 서버의 세션들을 모두 사용할 수 없음

 

 

Session Clustering

Session Clustering은 여러 서버가 하나처럼 작동하게 해주는 기술이다.

한 세션을 여러 서버에서 동일하게 관리하는 방식으로, 다른 서버에서도 동일하게 request 처리가 가능하다.

 

 

세션 클러스터 역시 단점이 존재한다.

 

(-) 세션 데이터가 저장될 때마다 모든 서버에 해당 데이터가 입력되어야 하므로 성능저하가 올 수 있음

(-) 개별 서버 안에서 동일 그룹의 모든 세션 정보를 저장해야 하므로 많은 메모리가 필요함

 

 

 


 

 

 

티스토리 오블완 챌린지 사전 이벤트 참여

https://www.tistory.com/event/write-challenge-2024?t_src=tistory_home_topbanner

 

작심삼주 오블완 챌린지

오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.

www.tistory.com