본문 바로가기

Cloud

AWS - Sticky Session

쉽게 생각해서 세션 유지하는 것과 같은 의미라 생각하면 됩니다.

예를 들어 유저1, 유저2, 유저3이 있고 각 유저들은 EC2 인스턴스1, 인스턴스2, 인스턴스3에 정보 요청을 하고 있습니다.

ALB(Application Load Balancer)는 각 사용자의 요청이 어느 인스턴스로 보내줘야 할 지 정보를 알고 있고

각 인스턴스에 트래픽 상태를 확인해서 200(status Code)이 응답으로 오면 사용자 요청(트래픽)에 따라 맞는 인스턴스로 매핑되게 됩니다.

 

 

로드 밸런서가 이미 어느 인스턴스에 보낼지 아는 상태에서 다른 인스턴스에 보내게 되면 원하는 결과가 나오지 않고 

잘못된 리다이렉션을 할 것 입니다.

이를 막기 위해 나온 개념이 Sticky Session입니다.

 

조금 더 친숙한 개념으로 Cookie를 생각하면 됩니다.   클라이언트(유저, 브라우저)에서 로드 밸런서로 요청의 일부를 전송합니다.

해당 트래픽은 어떤 인스턴스로 가야할 지 알고 있는 상태에서 쿠키 설정을 하게 되면 트래픽은 쿠키 만료 기간동안은 정의된 인스턴스로

트래픽을 보낼 것입니다.

 

 

그러다가 쿠키가 기간이 만료된다면 다른 EC2 인스턴스에 리다이렉션될 것입니다. 

그렇지만 단순히 고정성을 활성화해서 트래픽 보내는 인스턴스를 고정시키는 것이 꼭 좋은 것은 아니다.

고정 기간을 오래 두게 된다면 해당 인스턴스로 트래픽이 계속해서 몰릴 것이고 부하로 인해 불균형이 초래될 것입니다.

 

 

 

쿠키 설정은 Sticky Session에 특징이며 크게 두 가지 기능이 있습니다.

Cookie (Sticky Session) 설정
Application Based Cookie Duration Based Cookie
Application에 필요한 모든 사용자 정의 속성을 포함 Load Balancer에서 생성되는 쿠키 
쿠키 이름은 각 대상 그룹별로 개별적으로 지정되며, AWSALB, AWSALBAPP, AWSALBTG, ... 이런 이름으로 정의해선 안됨
(ELB에서 사용되는 이름)
특정 기간을 기반으로 만료되며 그 기간이 로드 밸런서 자체에서 생성됨
ALB에서 정의한 쿠키(Application Based Cookie)이름
= AWSALBAPP 
ALB에서 정의한 쿠키(Duration Based Cookie): AWSALB
CLB에서 정의한 쿠키(Duration Based Cookie): AWSELB

Sticky 속성 사용

1) 대상 그룹 속성 수정

2) Target Selection Configuration에서 고정성 또는 고정 세션 설정하고 Application Based Cookie로 할지 Duration Based Cookie로 할 지 정의함

3) App에서 Load Balancer로 보내는 쿠키 이름을 설정해야 함

4) 고정성 기간 정의 

▷ ELB에서 EC2 Instance의 상태에 따라 계속 바꿔가며 트래픽을 전달했다면, Cookie 설정을 통해서 고정성 기간 동안은 

하나의 인스턴스에 트래픽을 전달

 

타겟 그룹에서 속성변경
타겟 설정

Stickiness 허용하고 타입을 앞서 정의한 내용 중 하나를 선택한 다음 duration을 체크합니다.

여기서 Application Based Cookie를 하게되면 쿠키 이름을 정하는 칸이 나오는데, 기본 ELB에서 정의된 이름을 사용해서 설정하면 안됩니다.   이렇게 설정된 쿠키가 인스턴스를 통과할 때 고정성이 실행됩니다. 

반응형

'Cloud' 카테고리의 다른 글

AWS - SSL/TLS  (0) 2023.01.18
AWS - Cross Zone Load Balancing  (0) 2023.01.17
AWS - ELB(GWLB)  (0) 2023.01.17
AWS - ELB(NLB)  (0) 2023.01.17
AWS - ELB(ALB)  (0) 2023.01.17