AWS에서는 총 4가지의 ELB를 제공하는데 ALB는 그 중 하나입니다.
기본적으로 Elastic Load Balancing은 둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산합니다. 등록된 대상의 상태를 모니터링하면서 상태가 양호한 대상으로만 트래픽을 라우팅합니다. Elastic Load Balancing은 수신 트래픽이 시간이 지남에 따라 변경됨에 따라 로드 밸런서를 확장합니다. 대다수의 워크로드에 맞게 자동으로 조정할 수 있습니다.
여기서 Application Load Balancer는 레이어 7(HTTP)에서 작동합니다.
시스템(대상 그룹) 전체에서 여러 HTTP 애플리케이션에 대한 로드 밸런싱을 담당하는 역할을 합니다. 정확히는 동일한 시스템의 여러 애플리케이션(온프레미스의 IP, 인스턴스, 컨테이너 등)에 대한 로드 밸런싱을 담당합니다.
애플리케이션 계층을 담당합니다.
HTTP/2 및 WebSocket 지원
리디렉션 지원(예: HTTP에서 HTTPS로)
다른 대상 그룹에 대한 라우팅 테이블:
• URL의 경로 기반 라우팅(example.com /users & example.com /posts)
• URL의 호스트 이름 기반 라우팅( one.example.com & other.example.com )
• 쿼리 문자열, 헤더 기반 라우팅(example.com/users ?id=123&order=false )
ALB는 마이크로 서비스 및 컨테이너 기반 애플리케이션에 매우 적합합니다(예: Docker 및 Amazon ECS).
ECS의 동적 포트로 리디렉션하는 포트 매핑 기능이 있습니다.
EC2 인스턴스(Auto Scaling Group에서 관리 가능) – HTTP
ECS 작업(ECS 자체에서 관리) - HTTP
Lambda 함수(서버리스) – HTTP 요청이 JSON 이벤트로 변환됩니다.
온프레미스(IP 주소) – 꼭 사설 IP여야 합니다.
ALB는 여러 대상 그룹으로 라우팅할 수 있습니다.
대상 그룹 수준에서 상태 확인
고정 호스트 이름(XXX.region.elb.amazonaws.com)
애플리케이션 서버는 클라이언트의 IP를 직접 보지 않습니다.
클라이언트의 실제 IP는 X-Forwarded-For 헤더에 삽입됩니다.
Port(X-Forwarded-Port) 및 proto(X-Forwarded-Proto)도 얻을 수 있습니다.
인스턴스 스펙
AMI: Amazon Linux 2
type: t2.micro
보안그룹: HTTP 0.0.0.0 , SSH 0.0.0.0
스토리지: 8GB gp2
사용자 데이터:#!/bin/bash # Use this for your user data (script from top to bottom) # install httpd (Linux 2 version) yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
대상 그룹을 생성합니다.
기존에 생성한 인스턴스를 선택하고 등록된 항목에 추가합니다.
필요한 경우 고급 상태 검사 설정에서 health check 설정을 변경할 수 있습니다.
새로고침을 할 때마다 번갈아 가며 인스턴스가 교체되는 것을 확인합니다.