(AWS SAA-C03) AWS ALB 정리


AWS 애플리케이션 로드 밸런서 – ALB

  • 애플리케이션 로드 밸런서는 OSI 계층 7(애플리케이션 계층)에서 작동하며 하나 이상의 EC2 인스턴스에서 실행되는 여러 서비스 또는 컨테이너의 콘텐츠를 기반으로 라우팅 규칙을 정의할 수 있습니다.
  • 애플리케이션에 대한 트래픽이 시간 경과에 따라 변경됨에 따라 로드 밸런서의 크기를 조정하십시오.
  • 대부분의 워크로드는 자동 크기 조정도 가능합니다.
  • ALB는 로드 밸런서가 정상 대상에만 요청을 보낼 수 있도록 등록된 대상의 상태를 모니터링하는 데 사용되는 상태 확인을 지원합니다.

AWS 애플리케이션 로드 밸런서 구성 요소

로드 밸런서

  • 클라이언트의 단일 접점 역할을 합니다.
  • 들어오는 애플리케이션 트래픽을 여러 AZ의 여러 대상(예: EC2 인스턴스)에 걸쳐 ALB로 분산하면 애플리케이션의 가용성이 향상됩니다.
  • 로드 밸런서에 하나 이상의 리스너를 추가할 수 있습니다.

경청자

  • 구성된 프로토콜 및 포트를 사용하여 클라이언트의 연결 요청을 확인합니다.
  • 정의된 규칙은 로드 밸런서가 요청을 등록된 대상으로 라우팅하는 방법을 결정합니다.
  • 각 규칙은 우선 순위, 하나 이상의 작업 및 하나 이상의 조건으로 구성됩니다.
  • 지원되는 작업은 다음과 같습니다.

    = 포워드
    = 리디렉션
    = 고정 응답
  • 지원되는 규칙 조건은 다음과 같습니다.

    = 호스트 헤더
    = http 요청 방법
    = 경로 패턴
    = 소스 IP
    = http 헤더
    = 쿼리 문자열
  • 규칙의 조건이 충족되면 해당 작업이 수행됩니다.
  • 각 수신자에 대해 기본 규칙을 정의해야 합니다.
    선택적으로 추가 규칙을 정의할 수 있습니다.

대상 그룹

  • 지정된 프로토콜 및 포트 번호를 사용하여 EC2 인스턴스와 같은 하나 이상의 등록된 대상으로 요청을 라우팅합니다.
  • 하나의 대상을 여러 대상 그룹에 등록할 수 있습니다.
  • 상태 확인은 대상 그룹별로 구성할 수 있습니다.
  • 로드 밸런서의 리스너 규칙에 지정된 대상 그룹에 등록된 모든 대상에 대해 상태 확인을 수행합니다.
  • 대상 그룹이 지원하는 것
    = EC2 인스턴스(ASG의 일부로 관리 가능)
    = EC2 작업
    = 람다 함수
    = VPN 또는 DX를 통한 AWS 또는 온프레미스의 개인 IP 주소
  • 가중 대상 그룹 라우팅 지원
    = 규칙에 따라 여러 대상 그룹으로 향하는 트래픽 라우팅을 활성화합니다.

    = 여러 로드 밸런서 없이도 Blue-Green, Canary 및 Hybrid 배포와 같은 사용 사례를 지원합니다.

    = 또한 온프레미스와 클라우드 간에 또는 Ec2와 Lambda와 같은 서로 다른 컴퓨팅 유형 간에 다운타임 없이 마이그레이션할 수 있습니다.
  • 로드 밸런서는 요청을 받으면 우선 순위에 따라 리스너 규칙을 평가하여 적용할 규칙을 결정한 다음 규칙 작업을 위해 대상 그룹에서 대상을 선택합니다.
  • 애플리케이션 트래픽의 내용을 기반으로 요청을 다른 대상 그룹으로 라우팅하도록 수신기 규칙을 구성할 수 있습니다.
  • 라우팅은 대상이 여러 대상 그룹에 등록된 경우에도 각 대상 그룹에 대해 독립적으로 수행됩니다.
  • 사용되는 라우팅 알고리즘은 대상 그룹 수준에서 구성할 수 있습니다.
  • 기본 라우팅 알고리즘은 라운드 로빈입니다.
    또는 최소 미해결 요청 라우팅 알고리즘을 지정할 수 있습니다.

Application Load Balancer의 이점

  • 요청의 URL을 기반으로 요청을 전달하도록 수신기 규칙을 구성할 수 있는 경로 기반 라우팅을 지원합니다.
  • 이를 통해 애플리케이션을 더 작은 서비스(마이크로서비스)로 구성하고 URL 콘텐츠를 기반으로 올바른 서비스로 요청을 라우팅할 수 있습니다.
  • 동적 포트 매핑을 사용하여 여러 포트를 사용하는 인스턴스를 등록하여 단일 EC2 인스턴스에서 여러 서비스로 요청 라우팅을 지원합니다.
  • 컨테이너화된 애플리케이션을 지원합니다.
    EC2 컨테이너 서비스(ECS)는 작업을 예약할 때 사용하지 않는 포트를 선택하고 해당 포트를 사용하여 대상 그룹에 작업을 등록하여 클러스터를 효율적으로 사용할 수 있습니다.
  • 상태 확인은 대상 그룹 수준에서 정의되며 많은 CloudWatch 지표가 대상 그룹 수준에서 보고되므로 각 서비스의 상태를 독립적으로 모니터링할 수 있습니다.
  • 대상 그룹을 Auto-Scaling 그룹에 연결하면 각 서비스가 수요에 따라 동적으로 확장될 수 있습니다.

Application Load Balancer의 이점

  • HTTP 및 HTTPS 프로토콜을 사용하는 애플리케이션의 로드 밸런싱을 지원합니다.
  • ALB는 기본적으로 활성화된 HTTP/2를 지원합니다.
    HTTP/2를 지원하는 클라이언트는 TLS를 통해 연결할 수 있습니다.
  • 웹소켓 WebSocket을 기본적으로 보호합니다.
  • ALB에서는 기본적으로 요청 추적지지하다
    = 요청 추적을 사용하여 클라이언트에서 대상 또는 다른 서비스로의 HTTP 요청을 추적할 수 있습니다.

    = 클라이언트로부터 요청을 받았을 때 로드밸런서가 대상에게 요청을 보내기 전 X-Amzn-Trace-Id 헤더를 추가하거나 업데이트합니다.
  • 로드 밸런서와 대상 사이의 모든 서비스 또는 애플리케이션도 이 헤더를 추가하거나 업데이트할 수 있습니다.
  • 고정 세션(로드 밸런서에서 생성된 쿠키를 사용하여 동일한 클라이언트의 요청을 동일한 대상으로 라우팅)고정 세션) 지원하다.
  • ALB는 ALB에서 암호를 해독하기 전에 기본 대상으로 요청을 보냅니다.
    SSL 종료지지하다
  • 로드 밸런서에 SSL 인증서를 설치할 수 있습니다.
  • 로드 밸런서는 이 인증서를 사용하여 연결을 닫은 다음 대상으로 보내기 전에 클라이언트의 요청을 해독합니다.
  • X-Forwarded-For 실제 클라이언트 IP, 포트 및 프로토콜을 결정하는 데 도움이 되는 헤더와 같은 레이어 7 특정 기능을 지원합니다.
  • 들어오는 애플리케이션 트래픽에 대한 응답으로 요청 처리 용량을 자동으로 조정합니다.
  • 하이브리드 로드 밸런싱이 지원됩니다.

    = 애플리케이션이 VPC와 온프레미스 위치 간에 분산된 대상에서 실행되는 경우 해당 IP 주소를 사용하여 동일한 대상 그룹에 추가할 수 있습니다.
  • 하이브리드 로드 밸런싱은 둘 이상의 AZ를 지정하고 AZ 간에 수신 트래픽을 분산할 수 있으므로 고가용성을 제공합니다.
  • ACM과 통합하면 SSL/TLS 인증서를 프로비저닝하고 이를 로드 밸런서에 바인딩하여 전체 SSL 오프로딩 프로세스를 매우 쉽게 만들 수 있습니다.
  • 보안 수신기에 대해 동일한 도메인에 대해 여러 인증서를 지원합니다.
  • 인터넷 연결 로드 밸런서에 대한 IPv6 주소를 지원합니다.
  • 기본적으로 교차 영역 로드 밸런싱을 지원합니다.
  • 하이브리드 로드 밸런싱에서는 로드 밸런서와 송수신할 수 있는 트래픽을 제어하기 위해 보안 그룹이 지원됩니다.
  • 로드 밸런서로 전송된 모든 요청을 기록하는 액세스 로그를 제공하고 나중에 분석할 수 있도록 S3에 압축된 형식으로 로그를 저장합니다.
  • ALB가 실수로 삭제되는 것을 방지하기 위해 삭제 보호 기능을 제공합니다.
  • 연결 유휴 시간 제한 지원 – ALB는 각 요청에 대해 클라이언트(프론트엔드) 및 대상 인스턴스(백엔드)의 두 연결을 유지합니다.
    유휴 제한 시간이 경과할 때까지 데이터를 보내거나 받지 않은 경우 ALB는 프런트 엔드 연결을 닫습니다.
  • CloudWatch와 통합되어 요청 수, 오류 수, 오류 유형 및 요청 지연 시간과 같은 지표를 제공합니다.
  • IP 주소, HTTP 헤더 및 사용자 지정 URI 문자열을 기반으로 규칙 구성을 허용하여 공격으로부터 웹 애플리케이션을 보호하는 데 도움이 되는 웹 애플리케이션 방화벽인 AWS WAF와 통합됩니다.
  • CloudTrail과 통합하여 AWS 계정에서 이루어진 ALB API 호출 기록을 수신합니다.
  • MTLS(백엔드 서버 인증)는 지원되지 않습니다.

ALB 수신기

  • 수신기는 구성된 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스입니다.
  • 수신기는 포트 1-65535로 HTTP 및 HTTPS 프로토콜을 지원합니다.
  • ALB는 대상이 주요 작업에 집중할 수 있도록 암호화 및 암호 해독 작업을 오프로드하는 HTTPS 수신기에 대한 SSL 종료를 지원합니다.
  • HTTPS 리스너는 리스너에서 정확히 하나의 SSL 서버 인증서를 지원합니다.
  • HTTPS 리스너에는 하나 이상의 SSL 인증서가 리스너에 있어야 합니다.
  • HTTP 및 HTTP 수신기가 모두 있는 Websocket(보안 WebSocket)
  • HTTPS 리스너로 HTTP/2 지원
    = 하나의 HTTP/2 연결을 사용하여 128개의 요청을 병렬로 보낼 수 있습니다.

    = ALB는 이를 개별 HTTP/1.1 요청으로 변환하고 라운드 로빈 라우팅 알고리즘을 사용하여 대상 그룹의 적법한 대상에 배포합니다.

    = HTTP/2는 프런트 엔드 연결을 보다 효율적으로 사용하여 클라이언트와 로드 밸런서 간의 연결을 줄입니다.

    = HTTP/2의 서버 푸시 기능은 지원하지 않습니다.
  • 각 수신기에는 기본 규칙이 있으며 선택적으로 추가 규칙을 정의할 수 있습니다.
  • 각 규칙은 우선 순위, 작업, 선택적 호스트 조건 및 선택적 경로 조건으로 구성됩니다.

    = 우선 순위: 규칙은 가장 낮은 값에서 가장 높은 값의 우선 순위로 평가됩니다.
    기본 규칙은 우선 순위가 가장 낮습니다.

    = 조치: 각 규칙 조치에는 유형 및 대상 그룹이 있습니다.
    현재 지원되는 유일한 유형은 요청을 대상 그룹으로 전달하는 전달입니다.
    언제든지 규칙의 대상 그룹을 변경할 수 있습니다.

    = 조건: 규칙 조건에는 호스트와 경로의 두 가지 유형이 있습니다.
    규칙에 대한 조건이 충족되면 해당 작업이 수행됩니다.
  • 호스트 조건 또는 호스트 기반 라우팅
    = 호스트 조건을 사용하여 호스트 헤더의 호스트 이름을 기반으로 다른 대상 그룹에 요청을 전달하는 규칙을 정의할 수 있습니다.

    = 이를 통해 orders.example.com, images.example.com 및 registration.example.com과 같은 단일 ALB를 사용하여 여러 도메인을 지원할 수 있습니다.
  • 각 호스트 조건에는 하나의 호스트 이름이 있습니다.
  • 경로 조건 또는 경로 기반 라우팅
    = 경로 조건을 사용하여 요청의 URL을 기반으로 다른 대상 그룹에 요청을 전달하는 규칙을 정의할 수 있습니다.

    = 각 경로 조건에는 example.com/orders, example.com/images 및 example.com/registrations와 같은 하나의 경로 패턴이 있습니다.

    = 요청의 URL이 리스너 규칙의 경로 패턴과 정확히 일치하면 해당 규칙을 사용하여 요청이 라우팅됩니다.

기존 로드밸런서와의 비교

  • URL 콘텐츠를 기반으로 요청을 전달하도록 수신기에서 규칙을 구성할 수 있습니다.
    경로 기반 라우팅 지원하다
  • HTTP 헤더의 호스트 필드를 기반으로 요청을 전달하도록 수신기에서 규칙을 구성할 수 있습니다.
    호스트 기반 라우팅 지원하다
  • 표준 및 사용자 정의 HTTP 헤더 및 메소드, 쿼리 매개변수, 소스 IP 주소와 같은 요청 필드 기반 라우팅 지원하다
  • 단일 EC2 인스턴스에서 여러 애플리케이션에 대한 라우팅 요청을 지원합니다.
    각 인스턴스 또는 IP 주소는 여러 포트를 사용하여 동일한 대상 그룹에 등록할 수 있습니다.
  • 로드 밸런서의 VPC 외부 대상을 포함합니다.
    IP 주소로 대상 등록기능 지원
  • 한 URL에서 다른 URL로 리디렉션 요청지지하다
  • 사용자 지정 HTTP 응답 반환지지하다
  • 람다 함수를 대상으로 등록할수있다.
  • 이를 통해 로드 밸런서는 요청을 라우팅하기 전에 회사 또는 소셜 ID를 통해 애플리케이션 사용자를 인증할 수 있습니다.
  • 동적 포트 매핑을 사용하여 ECS로 컨테이너화된 애플리케이션을 지원합니다.
  • 상태 확인 및 많은 CloudWatch 지표는 대상 그룹 수준에서 정의되므로 각 서비스의 상태를 독립적으로 모니터링할 수 있습니다.
  • 대상 그룹을 Auto-Scaling 그룹에 연결하면 각 서비스가 수요에 따라 동적으로 확장될 수 있습니다.
  • 액세스 로그에는 추가 정보가 포함되며 압축된 형식으로 저장됩니다.
  • 로드 밸런서 성능이 향상되었습니다.

ALB 청구

  • ALB가 실행 중인 각 시간 또는 부분 시간에 대해 청구되고 사용된 로드 밸런서 용량 단위(LCU)의 수입니다.
  • LCU는 ALB 가격을 결정하는 새로운 지표입니다.
  • LCU는 애플리케이션 로드 밸런서가 트래픽을 처리하는 차원(새 연결, 활성 연결, 대역폭 및 규칙 평가) 중 하나에서 사용되는 최대 리소스를 정의합니다.

원천: https://jayendrapatil.com/aws-elb-application-load-balancer/