[AWS SAA-C03] AWS ALB 정리

AWS Application Load balancer - ALB

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

AWS Application Load Balancer Components

A load balancer

  • 클라이언트의 단일 연락처 역할을 한다.
  • ALB로 수신되는 응용 프로그램 트래픽을 여러 AZ에서 여러 대상(예: EC2 인스턴스)에 걸쳐 분산하므로 응용 프로그램의 가용성이 향상된다.
  • 하나 이상의 수신기를 로드 밸런서에 추가할 수 있다.

Listener

  • 구성된 프로토콜 및 포트를 사용하여 클라이언트의 연결 요청을 확인
  • 정의된 규칙은 로드 밸런서가 요청을 등록된 대상으로 라우팅하는 방법을 결정한다.
  • 각 규칙은 우선 순위, 하나 이상의 작업 및 하나 이상의 조건으로 구성된다.
  • 지원되는 작업은 다음과 같다.
    = Foward
    = Redirect
    = fixed-response
  • 지원되는 규칙 조건은 다음과 같다.
    = host-header
    = http-request-method
    = path-pattern
    = source-ip
    = http-header
    = query-string
  • 규칙의 조건이 충족되면 해당 작업이 수행된다.
  • 각 수신기에 대한 기본 규칙을 정의해야 함 선택적으로 추가 규칙을 정의할 수 있다.

Target Group(대상 그룹)

  • 지정된 프로토콜 및 포트 번호를 사용하여 EC2 인스턴스와 같은 하나 이상의 등록된 대상으로 요청을 라우팅한다.
  • 대상을 여러 대상 그룹에 등록할 수 있다.
  • 상태 점검(Health check)은 대상 그룹별로 구성할 수 있다.
  • 로드 밸런서의 수신기 규칙에 지정된 대상 그룹에 등록된 모든 대상에 대해 상태 검사가 수행된다.
  • target Group이 지원하는 것들
    = EC2 인스턴스(ASG의 일부로 관리 가능)
    = EC2 작업
    = Lambda Function
    = VPN 또는 DX를 통한 AWS 또는 온프레미스의 Private IP Address
  • 가중 Target group routing 지원
    = 규칙에 의해 여러 대상 그룹으로 전달되는 트래픽의 라우팅을 활성화한다.
    = 여러 로드 밸런싱 장치 없이도 Blue-Green, Canary 및 하이브리드 배포와 같은 사용 사례를 사용할 수 있다.
    = 또한 사내와 클라우드 간 또는 Ec2 및 람다와 같은 서로 다른 컴퓨팅 유형 간에 다운타임 없이 마이그레이션 할 수 있다.
  • 로드 밸런서는 요청을 수신하면 수신기 규칙을 우선 순위에 따라 평가하여 적용할 규칙을 결정한 다음 규칙 작업에 대한 대상 그룹에서 대상을 선택한다.
  • 수신기 규칙은 응용 프로그램 트래픽의 내용을 기반으로 다른 대상 그룹으로 요청을 라우팅하도록 구성할 수 있다.
  • 라우팅은 대상이 여러 대상 그룹에 등록된 경우에도 각 대상 그룹에 대해 독립적으로 수행된다.
  • 사용되는 라우팅 알고리즘은 대상 그룹 수준에서 구성할 수 있다.
  • 기본 라우팅 알고리즘은 라운드 로빈이다. 또는 최소 미결 요청 라우팅 알고리즘을 지정할 수도 있다.

애플리케이션 로드 밸런서의 이점

  • 요청의 URL을 기반으로 요청을 전달하도록 수신기 규칙을 구성할 수 있는 경로 기반 라우팅을 지원한다.
  • 이를 통해 애플리케이션을 소규모 서비스(마이크로서비스)로 구성하고 URL의 내용을 기반으로 올바른 서비스로 요청을 라우팅할 수 있다.
  • 동적 포트 매핑을 사용하여 여러 포트를 사용하여 인스턴스를 등록하여 단일 EC2 인스턴스의 여러 서비스에 대한 라우팅 요청을 지원한다.
  • 컨테이너형 애플리케이션을 지원한다. EC2 ECS(Container Service)는 작업을 스케줄링할 때 사용되지 않는 포트를 선택하고 이 포트를 사용하여 작업을 대상 그룹에 등록할 수 있으므로 클러스터를 효율적으로 사용할 수 있다.
  • 상태 점검이 대상 그룹 레벨에서 정의되고 많은 CloudWatch 메트릭이 대상 그룹 레벨에서 보고되므로 각 서비스의 상태를 독립적으로 모니터링할 수 있다.
  • 대상 그룹을 자동 스케일링 그룹에 연결하면 수요에 따라 각 서비스를 동적으로 확장할 수 있다.

애플리케이션 로드 밸런서(Application Load Balancer)의 이점

  • HTTP 및 HTTPS 프로토콜을 사용하는 애플리케이션의 로드 밸런싱을 지원한다.
  • ALB는 기본적으로 활성화된 HTTP/2를 지원한다. HTTP/2를 지원하는 클라이언트는 TLS를 통해 연결할 수 있다.
  • WebSocket 및 Secure WebSockets를 기본적으로 지원한다.
  • ALB에서는 기본적으로 요청 추적을 지원한다.
    = 요청 추적을 사용하여 클라이언트에서 대상 또는 다른 서비스로 HTTP 요청을 추적할 수 있다.
    = 클라이언트로부터 요청을 수신할 때 로드 밸런서가 요청을 대상으로 전송하기 전에 X-Amzn-Trace-Id 헤더를 추가하거나 업데이트한다.
  • 로드 밸런서와 대상 사이의 모든 서비스나 애플리케이션도 이 헤더를 추가하거나 업데이트할 수 있다.
  • 로드 밸런서에서 생성된 쿠키를 사용하여 동일한 클라이언트의 요청을 동일한 대상으로 라우팅하는 고정 세션(Sticky Session)을 지원한다.
  • ALB에서는 기본 대상으로 요청을 보내가 전에 ALB에서 암호를 해독하는 SSL termination을 지원한다.
  • 로드 밸런서에 SSL 인증서를 설치할 수 있다.
  • 로드 밸런서는 이 인증서를 사용하여 연결을 종료한 다음 클라이언트의 요청을 대상으로 보내기 전에 암호를 해독한다.
  • X-Forwarded-For 헤더와 같은 7계층 특정 기능을 지원하여 실제 클라이언트 IP, 포트 및 프로토콜을 결정하는 데 도움이 된다.
  • 수신되는 응용프로그램 트래픽에 대응하여 요청 처리 용량을 자동으로 조정한다.
  • 하이브리드 로드 밸런싱을 지원한다.
    = 애플리케이션이 VPC와 사내 위치 간에 분산된 대상에서 실행되는 경우 해당 IP 주소를 사용하여 동일한 대상 그룹에 추가할 수 있다.
  • 하이브리드 로드 밸런싱에서는 둘 이상의 AZ와 여러 AZ에 걸친 수신 트래픽의 분산을 지정할 수 있으므로 고가용성을 제공한다.
  • ACM과 통합되어 SSL/TLS 인증서를 프로비저닝하고 로드 밸런서에 바인딩함으로써 전체 SSL 오프로드 프로세스를 매우 쉽게 수행할 수 있다.
  • 보안 수신기에 대해 동일한 도메인에 대한 여러 인증서를 지원한다.
  • 인터넷 연결 로드 밸런서에 대해 IPv6 주소를 지원한다.
  • 기본적으로 교차 영역 로드 밸런싱을 지원한다.
  • 하이브리드 로드 밸런싱에서는 Security Group을 지원하여 로드 밸런서를 주고받을 수 있는 트래픽을 제어한다.
  • 액세스 로그를 제공하여 로드 밸런서로 전송된 모든 요청을 기록하고 나중에 분석할 수 있도록 S3에 로그를 압축된 형식으로 저장한다.
  • ALB가 실수로 삭제되지 않도록 Delete Protection을 제공한다.
  • Connection Idle Timeout 지원 - ALB는 각 요청에 대해 클라이언트(프론트 엔드)와 대상 인스턴스(백엔드)의 연결 두 개를 유지한다. 유휴 시간 초과 기간이 경과할 때까지 데이터를 보내거나 받지 않은 경우 ALB는 프런트 엔드 연결을 닫는다.
  • CloudWatch와 통합되어 요청 수, 오류 수, 오류 유형 및 요청 대기 시간과 같은 메트릭을 제공한다.
  • IP 주소, HTTP 헤더 및 사용자 지정 URI 문자열을 기반으로 규칙 구성을 허용하여 공격으로부터 웹 응용프로그램을 보호하는 데 도움이 되는 웹 응용프로그램 방화벽인 AWS WAF와 통합된다.
  • CloudTrail과 통합되어 AWS 계정에서 수행된 ALB API 호출 기록을 수신한다.
  • 백앤드 서버 인증(MTLS)이 지원되지 않는다.

ALB Listener

  • Listener는 구성된 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스이다.
  • 수신기는 포트가 1-65535인 HTTP 및 HTTPS 프로토콜을 지원한다.
  • ALB는 HTTPS Listener를 위한 SSL termination을 지원하며, 이는 대상이 주요 작업에 집중할 수 있도록 암호화 및 복호화 작업을 오프로드 해준다.
  • HTTPS Listener는 수신기에서 정확히 하나의 SSL 서버 인증서를 지원한다.
  • HTTPS Listener는 리스너에 하나 이상의 SSL 인증서가 있어야 한다.
  • HTTP 및 HTTP Listener가 모두 있는 웹 소켓(Secure WebSocket)
  • HTTPS 수신기로 HTTP/2 지원
    = 128개의 요청은 하나의 HTTP/2 연결을 사용하여 병렬로 전송할 수 있다.
    = ALB는 이를 개별 HTTP/1.1 요청으로 변환하고 라운드 로빈 라우팅 알고리즘을 사용하여 대상 그룹의 정상적인 대상에 배포한다.
    = HTTP/2는 프런트 엔드 연결을 더 효율적으로 사용하므로 클라이언트와 로드 밸런서 간의 연결이 줄어든다.
    = HTTP/2의 서버 푸시 기능이 지원되지 않는다.
  • 각 Listener에는 기본 규칙이 있으며 선택적으로 추가 규칙을 정의할 수 있다.
  • 각 규칙은 우선 순위, 작업, 선택적 호스트 조건 및 선택적 경로 조건으로 구성된다.
    = Priority: 규칙은 가장 낮은 값부터 가장 높은 값까지 우선 순위 순서로 평가된다. 기본 규칙의 우선 순위가 가장 낮다.
    = Action: 각 규칙 작업에는 유형과 대상 그룹이 있다. 현재 지원되는 유형은 요청을 대상 그룹으로 전달하는 foward 뿐이다. 언제든지 규칙의 대상 그룹을 변경할 수 있다.
    = Condition: 규칙 조건에는 호스트와 경로의 두 가지 유형이 있다. 규칙에 대한 조건이 충족되면 해당 작업이 수행된다.
  • 호스트 조건(Host Condition) 또는 호스트 기반 라우팅
    = 호스트 조건을 사용하여 호스트 헤더의 호스트 이름을 기준으로 요청을 다른 대상 그룹으로 전달하는 규칙을 정의할 수 있다.
    = 이를 통해 orders.example.com, images.example.com, registration.example.com과 같은 단일 ALB를 사용하여 여러 도메인을 지원할 수 있다.
  • 각 호스트 조건에는 호스트 이름이 하나씩 있다.
  • 경로 조건(Path Condition) 또는 경로 기반 라우팅(path-based routing)
    = 경로 조건을 사용하여 요청의 URL을 기반으로 다른 대상 그룹으로 요청을 전달하는 규칙을 정의할 수 있다.
    = 각 경로 조건에는 example.com/orders, example.com/images, example.com/registrations과 같은 경로 패턴이 하나씩 있다.
    = 요청의 URL이 listener 규칙의 경로 패턴과 정확히 일치하는 경우 요청은 해당 규칙을 사용하여 라우팅된다.

기존 로드밸런서와 비교

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

ALB 과금

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

출처: https://jayendrapatil.com/aws-elb-application-load-balancer/

반응형