[AWS] ELB란 무엇인가?

양진혁·2022년 3월 23일
0

AWS

목록 보기
6/14

ELB(Elastic Load Balancer)란 무엇인가?

아마존에서 정의하는 ELB

Amazon ELB는 들어오는 애플리케이션 트래픽을 Amazon EC2, 인스턴스, 컨테이너, IP주소, Lambda 함수와 같은 여러 대상에 자동으로 분산시킵니다. Amazon ELB는 단일 가용 영역 또는 여러 가용 영역에서 다양한 애플리케이션 부하를 처리할 수 있습니다. Amazon ELB가 제공하는 세가지 Load Balancer는 모두 어플리케이션의 내결함성(결함에 저항하는 능력)에 필요한 고가용성, 자동 확장/축소, 강력한 보안을 갖추고 있습니다.

ELB의 필요성

AWS CLOUD상 모든 서비스는 Elastic(탄력적)이다. 즉 인스턴스 숫자 뿐만 아니라 리소스가 줄었다 늘었다 하며 필요한 요구를 맞춰준다. 그렇게 하려면 필연적으로 리소스가 늘어나는 스케일링이 요구된다. 스케일링은 두가지로 나뉜다.

  • Vertical Scale(수직적 상승)
    만약 성능의 16배 상향이 필요하다면 CPU1 Memory 1gb를 CPU 16 Memory 16gb로 변환, 성능이 올라가는 폭에 비해 가격이 훨씬 비싸다. 그리고 만약 10000배 이상 등 크기가 커지면 커질수록 방법이 줄어든다.
  • Horizontal Scale(수평적 상승)
    만약 성능의 16배 상향이 필요하다면 CPU1 Memory 1gb를 16개를 사용한다. 성능이 올라가는 폭이랑 가격 올라가는 폭이 비슷하다 만약 10000배를 하려면 만개를 넣으면 된다.

유저는 이렇듯 인스턴스가 늘어나면 트래픽을 감당하기가 힘들어 진다. IP 처리, 어디로 접속할지에 대해서 등 신경쓸 일이 많아진다. 만약 인스턴스가 떨어진다면 연결을 끊어줘야 한다. 그래서 나온 서비스가 ELB이다. 유저는 하나만 접근하면 되고 ELB가 알아서 인스턴스들을 관리 해 준다.

ELB 특징

  • IP가 지속적으로 바뀜
    • IP 주소가 지속적으로 바뀐다.
    • 따라서 도메인 기반으로 사용해야 한다.
  • Health Check
    • 직접 트래픽을 발생시켜 인스턴스가 살아있는지 체크한다.
    • Inservice, Outofservice 두가지 상태로 나누어진다.
  • 3가지 종류가 존재한다.
    • Application Load Balancer(애플리케이션 레이어에서 작동)
      • 똑똑하다.
      • Application level
      • 트래픽을 모니터링하여 라우팅 가능
        • 예: image.sample.com -> 이미지를 서버로, web.sample.com -> 웹 서버로 트래픽 분산
    • Network Load Balancer(네트워크 레이어에서 작동)
      • 빠르다.
      • Elastic IP 할당 가능
      • TCP 기반 빠른 트래픽 분산
    • Classic Load Balancer
      • 상위 두가지가 나오기 전에 많이 사용했다.(옛날에 많이 쓰임)
      • 요즘은 상위 두가지를 쓰기를 권장한다.
    • Gateway Load Balancer
      • 먼저 트래픽을 체크
      • 가상 어플라이언스 배포 / 확장 관리를 위한 서비스

대상그룹(Target Group)

  • ALB가 라우팅 할 대상의 집합
  • 구성
    • 3 + 1 가지 종류
      • Instance
      • IP(Private)
      • Lambda
      • ALB(특수한 경우)
    • 프로토콜(HTTP, HTTPS, gRPC 등)
    • 기타 설정
      • 트래픽 분산 알고리즘, 고정 세션 등

Sticky Session

세션을 저장하는 구조이다. 먼저 EC2 두개의 인스턴스가 존재한다고 가정한다. 만약 로드 밸런서를 통해 트래픽을 발생시키면(ex 로그인) 세션이 저장되고 세션키가 발급된다. 그 다음 로그인을 진행할 때 아이디 패스워드를 보내는 것이 아닌 세션키를 보낸다.
세션키가 맞을 시 로그인을 처리한다. 하지만 ELB가 부하를 분산하다 보니 두개의 인스턴스 중 그 세션키가 어디로 갈 지 모른다. 만약 두번째 인스턴스로 보내면 실패 처리가 된다. 만약 인스턴스가 수백개 수천개라고 가정한다면 로그인을 하기 위해서 수백 수천번 시도해야 한다.
그래서 ELB에 공간을 만든다. 양진혁 이라는 유저가 인스턴스 A에 로그인 했다는 쿠키를 만든다.
그 기록을 통해서 양진혁이 로그인 할 때 인스턴스 A로 보낸다. 그것이 바로 Sticky Session이다.

Reference

https://www.youtube.com/c/AAAWS/videos

0개의 댓글