본문 바로가기
AWS

다중서버에서 세션 관리(Redis 세션 클러스터링, Sticky Session)

by 코딩공장공장장 2021. 7. 24.

안녕하세요. 

 

오늘은 다중 서버 환경에서 세션을 어떻게 관리하는지에 대해 알아보겠습니다. 

 

세션 관리는 크게 3가지 방식이 있습니다.

 

sticky session과 세션 클러스터링 그리고 redis를 이용한 세션 클러스터링이 있는데

 

각각에 대해 알아보겠습니다. 

 

 

sticky session

 

 

 

세션은 was 안에 있는 프로젝트에서 생성이 됩니다.

 

예를 들어 스프링 웹 프로젝트라면 스프링 프레임워크에서 세션이 생성되고 관리됩니다.

 

허나 위와 같이 다중 서버 환경에서 sticky session을 사용하게 된다면 

 

사용자가 웹서비스를 이용하다 서버에 문제가 생겨 다른 서버로 재접속하게 된다면 

 

 

 

 

세션이 공유 되지 않아 로그인을 다시 해야 하는 경우가 생깁니다. 

 

만약, 웹사이트에서 굉장히 긴 양식의 글을 적고 있는데 그 사이에 서버에 문제가 생겨 서버의 접속 경로가 바뀐다면 

 

다시 로그인하여 처음부터 글을 작성해야하는 사용자들의 불편함이 생깁니다.

 

 

 

 

이러한 문제를 해결하기 위해 세션 클러스팅이라는 방식이 있습니다.

 

세션 클러스팅

 

세션 클러스터링이란 여러대의 서버에 모두 세션 정보를 저장시켜 클라이언트가 접속하는 서버가 바뀌어도 

 

세션이 유지되는 방법입니다. 

 

 

위의 그림처럼 사용자의 접속이 server1으로 접속 되고 로그인을 통해 세션이 생성되면 

 

이 세션을 다른 모든 서버로 세션을 보내줍니다. 

 

이러한 방식으로 사용자의 접속이 server1에서 server2나 server3로 바뀌게 되더라도

 

로그인을 계속 유지된채로 사용할 수 있습니다.

 

허나 이러한 방식에는 치명적인 단점이 있습니다. 

 

이런식으로 모든 사용자의 세션을 각각의 서버에 모두 보내주게 되면 서버의 메모리에 상당히 부담이 갑니다. 

 

이러한 치명적인 단점을 극복하기 위해 세션 서버를 별도로 두어 사용하는 방식도 있는데요.  

 

그러한 방식인 Redis 세션 클러스터링에 대해 알아보겠습니다. 

 

 

 

Redis 세션 클러스터링

 

Redis를 이용한 세션 클러스터링 방법은 세션을 관리할 서버를 따로 두어 사용하는 방식입니다. 

 

Redis는 외부 세션 서버의 이름입니다. 

 

 

위와 같이 서버에서 세션을 Redis 서버로 보내주어 세션을 관리하면 사용자의 서버의 접속 경로가 바뀌게 되더라도

 

세션이 서버에서 관리되지 않고 별도 외부 서버에서 관리되므로 로그인이 계속 유지된채로 사용할 수 있습니다.

 

 

 

추후 AWS의 EC2와 RDS로 연동된 다중 서버 환경에서 Redis 외부서버와 연동하여 서버를 구축하는

 

포스팅을 올리도록 하겠습니다.

반응형