Sticky Session / Session Clustering

이하연·2021년 9월 18일
0

[Network] 네트워크

목록 보기
9/9

배경

일반적으로 대용량 트래픽을 장애 없이 처리하기위해선 여러대의 서버에 적절히 트래픽을 분배하는 로드 밸런서를 사용합니다.

Sticky Session

이름 그대로 "서버를 고정하는 방식"

특정 세션의 요청(첫 요청 이후의 모든 요청)을 처음 처리한 서버로만 전송하는 것을 의미합니다.

장점

일반적인 Sickey Session을 유지 방법

  • Cookie를 사용

    대표적인 방식으로, cookie에 이용서버를 저장하는 것이 있다.

    좀 더 구체적으로 설명하자면, IP Hash 방식으로 서버를 고정하면 생길 수 있는 트래픽 쏠림 현상을 Cookie를 사용하면 해결할 수 있다.

  • 클라이언트의 IP tracking하는 방식

단점

  • 특정 서버만 과부하 가능성 높음

    사용자가 접속해야하는 서버가 정해져있기에 트래픽 몰림 문제에서 완전히 자유롭지 않다.

  • 특정 서버 Fail → 해당 서버에 붙어있는 세션들 소실 가능성 높음

    서버에 장애가 발생하는 경우 해당 서버를 이용하고 있던 사용자의 세션 정보를 읽게 된다.

  • 로드 밸런싱이 의도한대로 동작하지 않을 수도 있다.

단점 해결하는 방안 → Session Clustering

Session Clustering

Clustering이란, 여러 컴퓨터를 연결하여 하나의 시스템처럼 동작하도록 하는 기술

Session Clustering이란, 여러 WAS의 세션을 묶어 동일한 세션으로 관리하는 것

  • 사용자 동일한 세션 데이터 받음

    사용자가 같은 묶음으로만 접속한다면 동일한 세션 데이터를 받을 수 있도록 보장 가능

  • 트래픽 쏠림 문제 해결

    한 서버에 고정되지 않아도 되므로 트래픽 쏠림 문제 해결된다.

  • 특정 서버 Fail 시 문제를 해결

    개별 서버가 터지더라도 세션 정보를 유지할 수 있게 된다.

단점

  • 동기화 과정 필요하여 성능 저하

    세션 데이터가 저장될 때마다 모든 서버에 해당 데이터가 입력되어야 하므로(동기화의 과정이 필요하므로) 성능 저하가 올 수 있다.

    해결방안

    primary-sendary session
    모든 was가 아닌 하나의 서버에만 세션을 동기화하고, 그 외 서버에는 세션 키만 들고 있도록하여 값을 백업시킨다.

  • 많은 메모리 요구

    개별 서버 안에서도 각 서버의 세션 정보가 아닌 동일 그룹의 모든 세션 정보를 저장해야 한다.

    해결방안

    session storage 방식
    여러 서버에서 하나의 별도의 세션 저장소를 사용한다.

참고

Session Clustering

🤷🏻 여러 서버에서 세션은 어떻게 처리할까?

0개의 댓글