AWS DVA 항해기 - ELB + ASG - ALB

에옹이다아옹·2025년 11월 15일
0

AWS-DVA

목록 보기
16/23
post-thumbnail

ALB

URL, Host, 헤더, 메서드 같은 “HTTP 내용”을 보고
어떤 Target으로 보낼지 세밀하게 골라주는 L7 HTTP 전용 로드 밸런서

클라이언트 ←→ ALB(공개 IP/도메인) ←→ Target Group(EC2, ECS, Lambda, IP 등)

  • WebSocket, HTTP/2 지원

    BUT HTTP/2 위에서 WebSocket를 돌리는게 아님

    ALB에서 HTTP/2는 클라이언트 ↔ ALB 구간에서만 지원

    [브라우저] -- HTTP/2 --> [ALB] -- HTTP/1.1 --> [EC2/ECS 등]

    ALB는 평범한 HTTP 요청에 대해선 HTTP/2를 지원하고, 별도로 WebSocket 연결도 지원

  • 리다이렉트(클라이언트에게 다른 URL로 가라고 응답) 지원

    ALB Listener Rule의 Action(동작) 중 하나

    동작 방식:

    1. ALB가 요청을 받음
    2. Rule 조건(Host, Path 등)에 매치됨
    3. Target Group으로 안 보내고, 브라우저한테 3xx 응답 + Location 헤더를 돌려줌
    4. 브라우저가 그 Location으로 다시 요청을 보냄

    예시)

  • 경로 라우팅 지원

    URL의 “경로(Path)”를 보고 어떤 Target Group으로 보낼지 결정하는 기능

    호스트 이름에 기반한 라우팅도 가능

  • 쿼리 문자열 & 헤더 기반한 라우팅 지원

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

포트 매핑 기능이 있어서 EC2 인스턴스의 동적 포트로의 리다이렉션을 가능하게 함

ALB의 타겟 그룹

  1. EC2 인스턴스(오토 스케일링 그룹으로 관리될 수 있음)
  2. ECS 작업
  3. Lambda 함수
  4. IP 주소 => 사설 IP 주소여야만 함

ALB는 여러 대상 그룹으로 라우팅 할 수 있으며

Health Check(상태 확인)은 대상 그룹 레벨에서 이루어짐


ALB 실습

  • ALB 생성

    HTTP, HTTPS가 허용된 SG를 적용한 인스턴스 2개를 생성해준다


    얼마나 되는 가용 영역에 로드밸런서를 배포할지 정해야 함

    Security groups를 설정할 차례인데 HTTP 트래픽만 허용하는 SG 그룹 생성




    다음 버튼을 클릭하면

    Include as pending below 클릭


    다시 ALB 생성 화면으로 넘어오면

    80 포트에 있는 로드 밸런스의 리스너와 연결

    생성하고 ALB가 active된 상태가 되면 DNS name이 부여되는데

    새로고침시마다 ALB에서 리다이렉션 해주는 인스턴스가 다름을 확인할 수 있다


  • EC2 인스턴스에 로드밸런서를 통해서만 액세스하게 하는 법

    EC2 인스턴스에 연결된 SG로 가서 Edit Inbound rules 클릭

    ELB의 SG 접근만 허용하도록 선택

    적용 후 EC2 Public Address로 접근하려고 하면 타임아웃 발생

    하지만 로드밸런서의 DNS Name 주소로 접근하면

    정상작동


  • 애플리케이션 밸런서 규칙

    모든 요청이 demo-tg-alb로 보내지게 되어있음
    Add Rule 버튼을 클릭해서 더 복잡하게 설정 가능

    Conditions => 무엇을 요청의 필터로 사용할 것인지 선택

    우선 난 Path로 선택하고 /error일 때 요청이 보내지도록 Rule 추가

    그 다음으로는 조건이 맞는다면 어떤 액션을 취할지 정의해야 함
    난 여기서 Return fixed response => 404 => Not Found, custom error!를 지정하겠다

    규칙이 여러개일 수 있기 때문에 우선순위를 정해줘야 함! 1이 가장 높은 우선순위!!

    규칙을 적용하고 나서 다시 DNS name값을 복사하고 끝에 "/error"를 붙여주면

profile
숲(구조)을 보는 개발자

0개의 댓글