[AWS] ALB(Application Load Balancer) - 개요
ALB
- ALB는 7계층 전용 로드 밸런서이다.
- 여러 단말 간 HTTP 애플리케이션의 라우팅에 사용된다.
- 한 단말 내의 여러 애플리케이션에 부하를 분산하기도 한다.
HTTPS/2
와WebSocket
을 지원하며 리다이렉트 또한 지원한다.
다음과 같은 예시처럼 타겟 그룹
에 따라 라우팅 해줄 수 있다.
- URL에 따라 라우팅:
example.com/users
&example.com/posts
- URL의 호스트 네임에 따라 라우팅:
one.example.com
&other.example.com
- 쿼리 스트링, 헤더에 따라 라우팅:
example.com/users?id=123&order=false
따라서 ALB는 마이크로 서비스 아키텍처와 컨테이너 기반 애플리케이션에 유용하게 사용할 수 있는 로드 밸런서이다.
ALB 시나리오
/user
로 라우팅 되는 타겟 그룹(인스턴스 집합)이 존재/search
로 라우팅 되는 타겟 그룹(인스턴스 집합)이 존재- 라우팅을 ALB가 해주는 것 !
타겟 그룹
ALB의 타겟 그룹으로는 다음과 같은 것들이 될 수 있다.
- EC2 인스턴스(
Auto Scaling Group
에 의해 관리됨) - HTTP - ECS 작업 - HTTP
- 람다 함수
- 사설 IP 주소
참고: ALB의 상태 확인(Health Check)은 타겟 그룹 레벨에서 이뤄짐
타겟 그룹 예시
- 모바일에서 들어오는 트래픽(쿼리스트링)은 AWS EC2 타겟 그룹으로 처리
- 데스크탑에서 들어오는 트래픽은 온 프레미스 서버 그룹으로 처리
- 이 때, 해당 서버의 사설 IP가 제공되어야 한다.
- 의문점: 사설 IP를 알아도 포워딩이 가능한가?
ALB: 알아두면 좋은 점
- 고정 호스트 이름이 부여된다. (
xxx.region.elb.amazonaws.com
) - 애플리케이션 서버는 클라이언트의 IP를 확인할 수 없게 된다.
- 그 대신, 클라이언트의 IP는
X-Forwarded-For
헤더에 삽입된다. - 포트와 프로토콜은
X-Forwarded-Port
,X-Forwarded-Proto
에 삽입된다.
- 그 대신, 클라이언트의 IP는