ELB - Sticky Sessions & Cross-Zone Load Balancing

Jihun Kim·2022년 4월 1일
0

aws solutions architect

목록 보기
40/57
post-thumbnail

Sticky Sessions(Session Affinity)

  • 동일한 유저가 동일한 인스턴스로 리다이렉팅 되도록 만드는 것을 stickiness라 한다.
  • CLB & ALB에서 사용할 수 있다.
  • stickiness를 위해서 cookie가 사용되는데, 이는 만료 날짜를 갖게 되며 만료 날짜가 지나면 해당 클라이언트는 같은 인스턴스로 리다이렉팅 되지 않는다.
    - 그러면 이 때는 유저가 세션 데이터를 잃게 된다.
  • 사용 예시
    - 유저의 로그인 정보와 같은 중요한 세션 데이터를 잃지 않도록 하기 위해 사용할 수 있다.
    -> 즉, stickiness를 통해 동일한 인스턴스로 라우팅 되도록 할 수 있다.


Application-based Cookies

쿠키 만료 기간은 애플리케이션에서 지정할 수 있다.

  • target에 의해 생성 된다.
  • 애플리케이션에서 사용하고자 하는 어떤 custom attributes도 사용 가능하다.
  • 쿠키 이름은 각 target group 별로 달라야 한다.
  • ELB 예약 쿠키명은 사용하면 안된다.
    - AWSALB
    - AWSALBAPP
    - AWSALBTG
  • 로드 밸런서가 생성해 준다.
    - AWSALBAPP 이라는 이름을 사용한다.

Duration-based Cookies

  • 로드 밸런서가 생성해 준다.
  • ALB는 AWSALB 라는 이름을 사용하고, CLB는 AWSELB 라는 이름을 사용한다.
  • 특정 기간을 기준으로 만료 되며 이 기간은 로드 밸런서가 생성해 준 것이다.


Sticky Session 생성 실습

(Target group이 생성되어 있다고 가정한다)

  1. Target groups로 들어가서 생성 되어 있는 타겟 그룹을 선택해 Actions > Edit attributes를 클릭한다.

  2. 하단에 Stickiness가 있는데 여기서 Load balancer generated cookie 또는 Application-based cookie 중 하나를 선택한다.

    • 둘 다 duration 설정이 가능하다.
    • Application-based cookie의 경우 여기서 cookie name을 설정하면 된다.
  3. 그러면 이제 headers에 Cookie: AWSALB={쿠키명}으로 쿠키 정보가 함께 온다.



Cross-Zone Load Balancing

교차 영역 로드 밸런싱을 이용하면 각 로드 밸런서 인스턴스는 전체 가용 영역에 등록된 모든 인스턴스에 전반적으로 고르게 분산 된다.

아래와 같이 클라이언트가 첫 번째 ALB 인스턴스에 50, 그리고 나머지 인스턴스에 남은 50을 보낸다고 가정해 보자.
그러면 각 AZ에 있는 ALB는 가용 영역에 관계 없이 전체 10개의 인스턴스에 트래픽을 고르게 분산한다. 이것이 바로 교차 영역 로드 밸런싱이다.

만약 이 기능을 사용하지 않으면 아래와 같이 각 ALB node가 가진 인스턴스로만 트래픽을 보낸다.

만약 각 가용 영역에 있는 인스턴스 수가 불균형 하다면 위와 같이 특정 가용 영역의 인스턴스가 더 많은 트래픽을 수신하게 된다.


각 ELB의 cross-zone 부하 분산 기능

ALB

  • ALB에서 항상 이 기능을 사용할 수 있다.
    - disable이 불가능하다.
  • AZ간 데이터 전송에 관한 비용을 따로 지불하지 않는다.
    - 끄는 기능이 없기 때문이다.

NLB

  • 기본으로 disable 상태이다.
  • 교차 영역 로드 밸런싱을 활성화 할 경우 추가 비용을 지불해야 한다.

CLB

  • 기본으로 diable 상태이다.
  • 교차 영역 간 데이터 전송시 추가 비용을 지불하지 않는다.
profile
쿄쿄

0개의 댓글