Forest Gump?

AWS Sticky Session 과 Cross-Zone Load Balancing 정리 본문

네트워크

AWS Sticky Session 과 Cross-Zone Load Balancing 정리

code1010 2023. 8. 8. 01:27

Sticky Session(session affinity)이란?

 

 

 

먼저 Sticky Session, 혹은 "session affinity"에 대해 알아봅시다. 이는 특정 사용자의 모든 요청을 특정 EC2 인스턴스에 계속 연결하도록 하는 기능입니다. 이렇게 하면 사용자와 서버 사이의 세션 상태가 유지될 수 있습니다.

이해를 쉽게 하기위해서, Sticky Session 이 없이 만약 로드 밸런서가 사용자의 모든 요청을 새로운 인스턴스로 라우팅한다면 매번 사용자는 세션 정보가 유지되지 않아서, 로그인 계속하게 되는 상황이 될 수 있습니다.

 

하지만 단점도 물론 존재하는데, sticky session 설정이 있을경우 해당 인스턴스를 찾으러 가는 성질 때문에 완벽한 로드밸런싱이 안될 수도 있습니다. 

 

(처음에 Websocket ALB로 구현할때 sticky session 이 적용되어 서버를 찾게 하고 싶었지만, 웹소켓 연결되어 있는 A,B 서버와 요청을 주는 서버 C가 달라서 redis session을 추가로 구현한 적이 있습니다. 만능은 아닙니다! )

 

 

Sticky Session의 종류

 

 

Sticky Session은 Application-Based Cookie와 Duration-Based Cookie라는 두 가지 유형의 쿠키를 사용합니다.

 

Application-Based CookieCustom Cookie와 Application cookie 가 있습니다.

- Custom Cookie는 사용자가 이름을 직접 정의 할 수 있고, Application cookie는 로드밸런서에 의해 생성되며 AWSALBAPP이라는 이름을 갖고 있습니다. 단 타겟 그룹별로 다른 이름을 설정 해야 합니다. 

 

custom cookie설정

 

반면에, Duration-Based Cookie는 Elastic Load Balancer에 의해 설정됩니다. 이 쿠키는 사용자의 요청을 설정한 기간 동안 원래의 인스턴스로 라우팅하도록 합니다.

ALB는 AWSALB 라는 이름을 사용하고, CLB는 AWSELB 라는 이름을 사용한다.

 

AWSALB , AWSALPAPP, AWSALBTG, AWSELB 등은 내부적인 쿠키 작업에 필요한 예약어들이기 떄문에 사용하면 안됩니다. 

 

설정 방법

 

1. 타겟 그룹에 들어간 다음, Edit attributes를 누릅니다. 

 

2. 아래의 Stickiness를 누르고 쿠키 이름을 설정합니다.

application-based 나 load balancer generated 모두 7일까지 설정 할 수 있고, applicaiton based cookie는 app cookie내용을 지정 할 수도 있습니다. 

 

이렇게 설정하면, AWS ALB 가 정상적으로 STICKY SESSION COOKIE를 가지고 해당 인스턴스로 가는걸 볼 수 있습니다.

여기서 AWSALB는 저절로 설정된 이름입니다.

 

 

 

Cross-Zone Load Balancing 이란?

 

AWS에서 제공하는 기능으로, 트래픽을 여러 가용 영역(Availability Zones)의 EC2 인스턴스들 사이에 자동으로 분산하는 역할을 합니다. 

 

위 그림과 같이, 각 AZ에 있는 ALB는 가용 영역에 관계 없이 전체 10개의 인스턴스에 트래픽을 고르게 분산합니다.  이것이 바로 교차 영역 로드 밸런싱입니다.

 

 

교차 영역 로드 밸런싱을 사용 안하고, 각 가용영역에 인스턴스 수가 불균형 하다면 위와 같이 특정 가용 영역의 인스턴스가 더 많은 트래픽을 수신하게 됩니다. 

ALB의 경우, 이 기능이 기본으로 작용하게 됩니다. 기본 설정이 ON 되어 있어서 끌 수 없는 반면에,

NLB의 경우, 기본이 OFF으로 되어 있고 이 기능을 사용하려면 요금을 지불해야 합니다. 

 

'네트워크' 카테고리의 다른 글

Route53 특성과 정책 정리  (0) 2023.08.10
DNS 정리  (0) 2023.08.09
SSL,SNI, Connection Draining 이란?  (0) 2023.08.08