자격증/AWS
[AWS] 30. ALB(Application Load Balaner)
나의 개발자
2025. 4. 10. 15:08
ALB(Application Load Balaner) - Layer 7 (HTTP) 전문 로드 밸런서
- 계층 : Layer 7 계층 - HTTP/HTTPS
- 리디렉션 : HTTP ➡️ HTTPS 지원
- 기능 : Path, Hostname, Query 기반 라우팅
- ALB 하나로 여러 앱 처리 가능
Target Group
- ALB는 트래픽을 Target Group으로 라우팅
➡️ Target Group은 각 Target 타입을 포함할 수 있음 - Health Check는 Target Group 단위로 수행
Target 타입 | 설명 |
EC2 인스턴스 | Auto Scaling Group과 연동 가능 |
ECS Task | 포토 매핑 기능과 함께 동작 |
Lambda 함수 | HTTP 요청을 JSON 이벤트로 변환 |
IP 주소 | 사설 IP만 가능, 온프레미스도 OK |
라우팅 방식
- 이 기능들 덕분에 ALB는 마이크로 서비스나 컨테이너 기반 아키텍처에 최적화되어 있음
라우팅 조건 | 예시 |
Path 기반 | /users, /products 등 |
호스트 기반 | api.example.com, blog.example.com |
Query 기반 | ?platform=mobile VS ?platform=desktop |
헤더 기반 | Custom header 값에 따라 |
ALB + ECS = 찰떡궁합
- 컨테이너 포트는 매번 달라질 수 있음
➡️ ALB는 동적 포트 매핑 지원으로 대응 가능
➡️ 여러 ECS 서비스가 한 ALB 공유 가능
X-Forwarded Headers
- ALB는 클라이언트의 실제 IP주소를 숨김
➡️ 대신 다음 헤더에 정보를 포함시킴
헤더 | 내용 |
X-Forwarded-For | 클라이언트 IP |
X-Forwarded-Port | 요청 포트 |
X-Forwarded-Proto | 요청 프로토콜(HTTP/HTTPS) |
- 서버 쪽 로그를 분석할 때, 꼭 이 헤더를 확인해야 사용자 IP 추적 가능
ALB 실습
01. EC2 인스턴스 생성
- 한 번에 인스턴스 2개 생성 ➡️ 인스턴스 명 변경
- SSH 접속하지 않을 예정이라 키페어 불필요
- 인스턴스에 http 웹 서버를 설치하기 위함
02. 인스턴스명 수정 - My Second Instance
03. 인스턴스 정상 작동 확인
- 각 인스턴스의 화면에서 IP가 다른 것을 확인 가능
04. 로드밸런서 생성
- 가용영역 선택 - 어떤 가용영역을 걸쳐서 인스턴스를 생성할건지
- 보안 그룹 생성 > 보안 그룹 선택
[ 보안 그룹 생성 ]
- ALB 리스너 생성
[ 대상 그룹 생성 ]
05. ALB 작동 확인
- ALB의 DNS 주소로 접속하면 2개의 인스턴스에 트래피을 분산해서 보내는 것을 확인할 수 있음
ALB ➡️ EC2 접근 설정 - 보안그룹
01. EC2 인스턴스의 보안그룹 > 인바운드 규칙 편집
- ALB의 보안그룹을 통해서만 HTTP 접근 허용
02. EC2 인스턴스 직접 접속 & ALB를 통한 접속 확인
- 직접 EC2 인스턴스에 접속 불가능
- ALB를 통한 접근은 허용됨
ALB 리스너 규칙 설정
01. ALB 리스너 선택
02. 리스너 규칙 추가
- 조건 : 어떤 것을 필터링할 것인가?
- 리스너의 우선순위 설정
03. 리스너 규칙 설정 확인
04. 리스너에서 설정한 경로로 접근 ➡️ 커스텀 문구 확인 가능