본문 바로가기
IT/AWS

ALB(Application Load Balancer)

by 노오-력 2023. 3. 27.

 Application Load Balancer

ALB는 Network Layer 7, 즉 HTTP 전용 로드 밸런서로

머신 간 다수의 HTTP 애플리케이션의 라우팅에 사용된다.

이러한 머신들은 Target groups이라는 그룹으로 묶이게 된다.

 

그리고 동일 EC2 인스턴스 상의 여러 애플리케이션에 부하를 분산하다.

이 때는 컨테이너와 ECS를 사용한다.

 

HTTP/2 와 WebSocket를 지원하고

HTTP에서 HTTPS로 트래픽 리다이렉트도 지원한다.

 

경로 라우팅도 지원한다.

target group에 따른 라우팅으로는

URL 경로에 기반한 라우팅 (example.com/users, example.com/boards ...)

URL 호스트네임에 따른 라우팅 (one.example.com, two.example.com ... )

query string, headers에 기반한 라우팅 (example.com/users?id=abcd&board=1)

도 가능하다.

 

ALB는 마이크로 서비스컨테이너 기반 애플리케이션에 가장 좋은 로드밸런서로

docker와 Amazon ESC의 경우에 ALB가 가장 적합한 로드밸런서이다.

포트 매핑 기능이 있어, ECS 인스턴스의 동적 포트로의 리다이렉션을 가능하게 해주기 때문이다.

 

하나의 ALB로 다수의 애플리케이션을 처리할 수 있는 장점이 있다.

 

 

 

위 그림을 보면

외부 ALB가 있고

그 뒤에는 Route/user로 라우팅 될 target group이 있고

Rout/order로 라우팅 될 target group이 있다.

즉, 두개의 독립된 마이크로 서비스가 서로 다른 작업을 처리하는 것이다.

 

 

Target Groups

target group에는

- ASG(Auto Scaling Group)에 의해 관리되는 EC2 인스턴스

- ECS 작업

- 람다 함수

- private IP 주소

가 있고 ALB는 여러 target group으로 라우팅 할 수 있으며

상태확인은 target group 레벨에서 이루어진다.

 

 

ALB를 사용하는 경우

고정 호스트네임이 부여되고

애플리케이션 서버는 클라이언트의 IP를 직접 보지 못하며

클라이언트의 실제 IP는 X-Forwarded-For 라고 불리는 헤더에 삽입된다.

X-Forwarded-Port를 사용하는 포트와

X-Forwarded-Proto에 의해 사용되는 프로토콜도 얻게된다.

 

클라이언트에서 트래픽을 받은 ALB는 자신의 private IP를 사용해 EC2 인스턴스와 통신한다.

그리고 EC2인스턴스가 클라이언트의 IP를 알기 위해서는

HTTP request에 있는 추가 헤더인 X-Forwarded-Port와 Proto를 확인해야한다.

 

 

'IT > AWS' 카테고리의 다른 글

GWLB (Gateway Load Balancer)  (0) 2023.03.27
NLB (Network Load Balancer)  (0) 2023.03.27
Elastic Load Balancing (ELB)  (0) 2023.03.26
Elastic File System ( EFS )  (0) 2023.03.24
EBS Multi-Attach  (0) 2023.03.24