카테고리 없음

세션 클러스터링 session clustering

예쁜꽃이피었으면 2021. 12. 24. 12:31
세션 클러스터링

- 동일한 세션으로 여러 곳에서 사용할 수 있게 관리하는 것

- 두 대 이상의 WAS를 이용하는 경우 load balancing 또는 failover, auto scaling등의 대체된 was에게도 세션이 공유하게 하는 기술

더보기

load balancing
https://m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903

로드밸런서는 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭한다.

클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹)사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 한다.

failover (페일오버,장애 극복 기능/장애 대비 기능)

https://oriyong.tistory.com/80

 실패(fail)를 끝낸(over)다. 시스템에 장애가 오면(컴퓨터 서버, 시스템, 네트워크 등에 이상이 생겼을 때) 미리 준비했던 다른 시스템으로 대체(예비 시스템으로 자동 전환)해서 운영하는 것.



auto scaling(오토스케일링)

https://www.samsungsds.com/kr/insights/auto_scaling.html 

 클라우드 컴퓨팅의 유연성을 돋보이게 하는 핵심  기술로 CPU, 메모리, 디스크, 네트워크 트래픽과 같은 시스템 자원들의 메트릭(Metric)값을 모니터링하여 서버 사이즈를 자동으로 조절한다. 이를 통해 사용자는 예상치 못한 서비스 부하에 효과적으로 대응하고 비용 절감효과를 볼 수 있다.


세션 클러스터링 언제쓸까

was가 2대 이상일 때

1. 네트워크 레벨에서 볼 때

동시 접속자가 많은 경우 하나의 was만으로는 모든 처리가 불가능하기 때문에 was를 묶어서 분산처리를 한다.

이 때는 was는 한 곳에 세션(session)을 몰아주거나 세션 서버(session server)를 따로 두어 관리하게 된다.

https://heowc.tistory.com/28

2. 서버 레벨에서 볼 때

아파치 서버를 두고 톰캣 서버를 연통시켜서 사용하는 방법이다. 아파치를 통해 세션을 공유한다.

https://sarc.io/index.php/tomcat/111-tomcat-session-cluster-1

2-1) Horizontal Clustering

https://heowc.tistory.com/28

2-2) Vertical Clustering

https://heowc.tistory.com/28

 


https://tjdrnr05571.tistory.com/3

로그인방식을 크게 나누면 세션방식과 토큰방식이 있다.

세션방식은 보통 서버에 로그인 정보를 저장하는데 서버가 하나가 아닐 때 세션을 어디에 저장해야 할까.

 

방법1. Sticky Session

stickiness가 적용되지 않았을 때는 request를 아무 서버에 보내지만, 스티키세션이 적용된 후에는 정해진 서버에만 request를 보낸다.

단점 : 특정 사용자의 세션은 한 서버에 의존하고 있기 때문에 특정 서버에 트래픽이 집중된다면 장애가 발생할 수 있다. 서버의 대수가 많고 다른 서버가 여유롭더라도 트래픽이 몰린 서버로만 요청을 보내야 하는 경우가 생길 수 있기 때문이다. 또, 하나의 서버에 문제가 발생했을 때 그 서버에 저장된 세션정보들이 분실될 수도 있고 그 동안 서버에 저장된 세션을 이용하지 못할 수도 있다.

 

 

방법2. Tomcat에서 지원하는 Session Clustering

was가 2대 이상 설치되어 있을 경우 모든 세션 정보를 여러대의 서버에 다 가지고 있는 것.

세션이 변경될 때마다 세션정보를 모든 서버에 저장해야 한다.

https://kimyhcj.tistory.com/141

장점 : 여러 대의 was가 있어도 동일한 세션으로 관리해 스티키 세션의 단점을 극복

단점 : 모든 서버에 세션정보를 다 저장해야하기 때문에 서버 메모리의 비효율이 생긴다.

또한 세션 정보를 추가해야 할 때 마다 모든 서버에 세션정보를 다 추가해야한다. -> 모든 서버에 네트워크 요청을 해야 해서 많은 네트워크 요청이 발생한다. 

서버에 대수가 늘어나는 만큼 더 많은 네트워크 요청이 생긴다.

 

 

 

방법3. 레디스(Redis). 세션 서버를 레디스에 따로 두어 세션 스토리지를 관리하는 것

레디스는 InmemoryDB이며 Session Storage로 사용될 수 있다.

서버에 세션 정보를 저장하는 것이 아니라 외부에 레디스 서버를 띄우고 이 서버에 모든 세션정보를 저장하는 것이다.

was서버들이 레디스에서 세션정보를 읽어온다.

https://tjdrnr05571.tistory.com/3

장점1.

스티키 세션의 단점 극복 : 

한 서버에 문제가 생겨도 외부에 세션정보를 저장했기 때문에 서버 장애 문제를 극복하고 한 대의 서버에 트래픽이 몰릴 일이 없다.

세션 클러스터링의 단점 극복 :

서버들끼리 네트워크 요청을 할 필요도 없고 서버를 스테이트리스(stateless)하게 유지할 수 있다

 

 

 

 


[참조]

https://junshock5.tistory.com/91

 

세션 클러스터링 이란?

세션 클러스터링 이란? 두 대 이상의 WAS를 이용하는 경우 로드 밸런싱(대용량 트래픽 처리시 분산시키는 것), 또는 failover(장애 발생시 예비시스템으로 자동전환, 서버 이중화), auto scaling(AWS에서

junshock5.tistory.com

https://heowc.tistory.com/28

 

Session Clustering 알아보기

이번에는 두편에 걸쳐 Session Clustering에 대해 적어보려 합니다. 첫편에서는 Session Clustering에 대한 간단한 개념을 알아보겠습니다. What..! - 동일한 세션으로 여러 곳에서 사용할 수 있게 관리 하는

heowc.tistory.com

https://tjdrnr05571.tistory.com/3

 

[#1] 서버가 여러대면 로그인 정보는 어디에 저장할까? - Sticky Session, Session Clustering, Redis Session Stor

크게 많이 사용하는 로그인 방식으로는 세션방식과 토큰방식이 있습니다. 이 글은 세션 방식에 대해 다룹니다. 세션 방식은 보통 서버에 로그인 정보를 저장합니다. Scale-out을 하기 전에는 한대

tjdrnr05571.tistory.com

 

 

 

 

반응형