나의 공부기록

[AWS] 30. ALB(Application Load Balaner) 본문

자격증/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가 다른 것을 확인 가능

My First Instance 작동 화면
My Second Instance 작동 화면

 

04. 로드밸런서 생성

  • 가용영역 선택 - 어떤 가용영역을 걸쳐서 인스턴스를 생성할건지

  • 보안 그룹 생성 > 보안 그룹 선택

[ 보안 그룹 생성 ]

  • ALB 리스너 생성

[ 대상 그룹 생성 ]

 

05. ALB 작동 확인

  • ALB의 DNS 주소로 접속하면 2개의 인스턴스에 트래피을 분산해서 보내는 것을 확인할 수 있음


ALB ➡️ EC2 접근 설정 - 보안그룹

01. EC2 인스턴스의 보안그룹 > 인바운드 규칙 편집

  • ALB의 보안그룹을 통해서만 HTTP 접근 허용

 

02. EC2 인스턴스 직접 접속 & ALB를 통한 접속 확인

  • 직접 EC2 인스턴스에 접속 불가능 

  • ALB를 통한 접근은 허용됨


ALB 리스너 규칙 설정

01. ALB 리스너 선택

 

02. 리스너 규칙 추가

  • 조건 : 어떤 것을 필터링할 것인가?

  • 리스너의 우선순위 설정

03. 리스너 규칙 설정 확인

 

04. 리스너에서 설정한 경로로 접근 ➡️ 커스텀 문구 확인 가능