본문 바로가기
공부/데이터

[aws] 로드밸런서, IP고정, 세션별 접근(sticky session)

by demonic_ 2019. 11. 23.
반응형

 

로드밸런싱을 할 때 sticky session이 필요할 때가 있다.

 

sticky session 이란 세션을 사용하여 트래픽을 분산하는 것이다. 예를들어 웹사이트가 있는데 로그인을 하면서 session을 서버에서 생성했다. 이때 다른 서버에 접속하면 세션이 공유되지 않아 새로 로그인을 요청하게 된다. (그래서 무한 로그인 지옥에 빠지게 된다)

이러한 현상을 없애기 위해 sticky session을 이용한다.

 

 

Sticky Session이란?

쿠키 또는 세션을 사용하여 트래픽을 분산하는 기능. nginx 의 경우 ip_hash 를 설정하면 비슷한 기능을 한다.

 

 

문제는 AWS에서 제공하는 로드밸런서에서 sticky session을 지원하지 않는 것이 있다는 점이다.

 

AWS 에서 제공하는 로드밸런싱은 3가지다.

Application Load Balancer(ALB)

Network Load Balancer(NLB)

Classic Load Balancer(CLB)

 

각각의 성능차이는 다음과 같다.

 

출처: Bespin Global,  https://www.bespinglobal.com/tech-blog-171114-aws-nlb2/

 

외부 API 연결이 있는 경우 IP를 이용해 등록하는 경우가 있다.

문제는 ALB나 CLB를 사용하면 IP를 고정으로 등록할 수 없기 때문에 NLB를 사용해야 하는데 그럴경우 sticky session을 이용할 수가 없다.

 

 

정리하자면

 

고정IP를 사용하고 싶다면 NLB를 써야하지만 sticky session 사용이 불가하다.

ALB, CLB 를 사용하면 고정IP를 사용할 수 없다.

 

때문에 상황에 맞춰 필요한 것을 이용하면 된다.

 

 

 

 

# NLB설정, 고정IP 등록

로드밸런싱 > 로드밸런서 매뉴 클릭, 로드밸런서 생성을 클릭한다.

 

아래 메뉴중 가운대 것을 선택한다.

 

 

다음화면에서 가용 영역 부분에 고정IP를 등록하는 것이 있다.

AWS에서 제공하는 가용영역은 2a, 2c 두가지가 있는데, 인스턴스(EC2)가 소속된 가용영역과 동일해야 한다.

 

탄력적 IP가 미리 등록되어 있어야 목록에서 보인다.

 

 

 

# sticky session 설정

 

ALB의 경우 표에서는 sticky session 지원이 가능하다고 하지만 실제로 설정화면을 보면 설정하는 곳이 없다. 

그래서 내 경우는 CLB를 이용해 설정했다.

 

sticky session을 설정하는 곳은 로드벨런서가 아닌 '대상그룹'에 있다.

 

대상그룹을 클릭해 설명 최하단을 가면 속성이 있는데 고정 옵션을 선택해 설정할 수 있다.

참고로 유지시간은 1초부터 최대 7일까지 가능하다.

 

끝.

반응형

댓글