ALB

  • ALB는 7계층 전용 로드 밸런서이다.
  • 여러 단말 간 HTTP 애플리케이션의 라우팅에 사용된다.
  • 한 단말 내의 여러 애플리케이션에 부하를 분산하기도 한다.
  • HTTPS/2WebSocket을 지원하며 리다이렉트 또한 지원한다.

다음과 같은 예시처럼 타겟 그룹에 따라 라우팅 해줄 수 있다.

  • URL에 따라 라우팅: example.com/users & example.com/posts
  • URL의 호스트 네임에 따라 라우팅: one.example.com & other.example.com
  • 쿼리 스트링, 헤더에 따라 라우팅: example.com/users?id=123&order=false

따라서 ALB는 마이크로 서비스 아키텍처와 컨테이너 기반 애플리케이션에 유용하게 사용할 수 있는 로드 밸런서이다.

ALB 시나리오

ALB Scenario

  • /user로 라우팅 되는 타겟 그룹(인스턴스 집합)이 존재
  • /search로 라우팅 되는 타겟 그룹(인스턴스 집합)이 존재
  • 라우팅을 ALB가 해주는 것 !

타겟 그룹

ALB의 타겟 그룹으로는 다음과 같은 것들이 될 수 있다.

  • EC2 인스턴스(Auto Scaling Group에 의해 관리됨) - HTTP
  • ECS 작업 - HTTP
  • 람다 함수
  • 사설 IP 주소

참고: ALB의 상태 확인(Health Check)은 타겟 그룹 레벨에서 이뤄짐

타겟 그룹 예시

alb-scenario2

  • 모바일에서 들어오는 트래픽(쿼리스트링)은 AWS EC2 타겟 그룹으로 처리
  • 데스크탑에서 들어오는 트래픽은 온 프레미스 서버 그룹으로 처리
    • 이 때, 해당 서버의 사설 IP가 제공되어야 한다.
    • 의문점: 사설 IP를 알아도 포워딩이 가능한가?

ALB: 알아두면 좋은 점

  • 고정 호스트 이름이 부여된다. (xxx.region.elb.amazonaws.com)
  • 애플리케이션 서버는 클라이언트의 IP를 확인할 수 없게 된다.
    • 그 대신, 클라이언트의 IP는 X-Forwarded-For 헤더에 삽입된다.
    • 포트와 프로토콜은 X-Forwarded-Port, X-Forwarded-Proto에 삽입된다.

업데이트: