ELB - 종류와 특징(CLB & ALB)

Jihun Kim·2022년 4월 1일
0

aws solutions architect

목록 보기
39/57
post-thumbnail

Classic Load Balancer(v1)

  • TCP(4계층), HTTP/HTTPS(7계층) 프로토콜을 지원한다.
  • TCP 또는 HTTP 기반의 health check를 지원한다.
  • 고정된 호스트명을 갖는다.
    - xxx.region.elb.amazonaws.com

CLB 생성시 Health check를 설정할 때는 Ping Path를 현재 사용 중인 경로로 입력해야 한다. 그렇지 않으면 비정상으로 보고 되기 때문이다.

디테일을 아래와 같이 설정해 놓으면 세 번 확인해서 정상일 경우 인스턴스는 정상으로 간주되고 두 번 확인해서 비정상이면 인스턴스는 비정상으로 간주된다.



Application Load Balancer(v2)

  • 7계층(HTTP) 프로토콜을 지원한다.
  • 머신 간 다수의 HTTP 애플리케이션 라우팅에 사용된다.
    - 이 머신들은 대상 그룹(target group)이라는 그룹으로 묶이게 된다.
  • 한 머신에 있는 여러 개의 애플리케이션으로 로드 밸런싱 할 수 있다.
    - 예를 들면, 컨테이너, ECS가 있을 수 있다.
  • HTTP/2와 웹 소켓을 지원한다.
  • HTTP -> HTTPS로 리다이렉트 할 수 있도록 지원해 준다.
    - 자동으로 HTTP가 HTTPS로 들어오도록 하고 싶다면 로드 밸런서를 이용하면 된다.
  • 여러 target groups로 라우팅이 가능하다.
    - URL 경로를 이용한 라우팅: example.com/users & example.com/posts
    - URL 호스트명을 이용한 라우팅: one.example.com & other.example.com
    - 쿼리 스트링, 헤더를 이용한 라우팅: example.com/users?id=123&order=false
  • ALB는 micro services와 container-based 애플리케이션에 사용하기 좋다.
    - 예를 들면, Docker & Amazon ECS가 있다.
  • CLB의 경우 애플리케이션 하나 당 CLB 하나가 필요하지만, ALB는 ALB 하나만으로도 다수의 애플리케이션을 처리할 수 있다.

ALB를 이용하면 아래와 같이 두 개의 독립된 micro services가 서로 다른 작업을 처리할 수 있다. 즉, 각 MSA는 URL 경로를 이용한 라우팅을 통해 각 대상 그룹으로 지능적으로 라우팅 하는 방법을 알고 있는 동일 ALB의 뒤에 있게 된다.


Target groups란?

Target groups는 다음과 같은 것들이 될 수 있다.

  • EC2 instances
    - Auto scaling group에 의해 관리될 수 있다.
    - HTTP 사용
  • ECS tasks
    - ECS 자체적으로 관리한다.
    - HTTP 사용
  • Lambda functions
    - HTTP 요청이 JSON 이벤트로 변환 된다.
  • IP 주소:
    - 해당 주소는 private IP여야 한다.
    - 보통 on-premise의 회사 사내망이 사용 된다.

ALB를 이용해 여러 개의 대상 그룹으로 라우팅 할 수 있으며, health checks도 대상 그룹 레벨에서 이루어진다.

아래는 ALB에서 query string/parameter를 이용해 라우팅 하는 예시이다.


추가적으로 알아 두면 좋을 ALB 특징

  • 고정된 호스트명을 사용한다(XXX.region.elb.amazonaws.com).
  • 애플리케이션 서버는 ALB의 뒤에 있기 때문에 클라이언트의 IP에 관한 정보를 직접적으로 볼 수 없다.
  • 클라이언트의 IP 주소는 헤더의 X-Forwarded-For에 담긴다.
    - 이밖에도 포트는 X-Forwarded-Port, 프로토콜은 X-Forwarded-Proto를 이용해 확인할 수 있다.

ALB 생성하기

아래와 같이 두 개의 target groups를 생성한다. 첫 번째 대상 그룹에는 2개의 인스턴스가 들어가 있고 두 번째 대상 그룹에는 한 개의 인스턴스만 들어 있다.

ALB로 돌아와 listners를 확인해 보면 아래와 같다. 여기서 view/edit rules를 클릭해 설정을 수정할 수 있다.

이제 아래와 같은 화면이 뜨며, (+) 버튼을 눌러 규칙을 추가하면 된다.

아래와 같이 path를 정해서 /test로 요청이 들어오면 my-second-target-group으로 요청을 forward to 하도록 설정할 수 있다.

확인해 보면, 일단 /test 경로로 요청이 들어오면 my-second-target-group으로 요청을 보내며, 그렇지 않으면 기본적으로 my-first-target-group으로 요청을 보낸다.

profile
쿄쿄

0개의 댓글