Amazon EC2
AWS 클라우드
Elastic Load Balancing 시작하기
고가용성

고가용성

Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에 있는 여러 대상(Amazon EC2 인스턴스, 컨테이너 및 IP 주소)에 걸쳐 트래픽을 자동으로 분산합니다.

상태 확인

상태 확인

Elastic Load Balancing은 비정상 대상을 감지하고, 비정상 대상으로 트래픽을 전송하는 것을 중단한 후, 나머지 정상 대상 전체로 로드를 분산할 수 있습니다.

보안 기능

보안 기능

Amazon Virtual Private Cloud(VPC)를 사용하면 로드 밸런서와 연결된 보안 그룹을 생성 및 관리하여 추가적인 네트워킹 및 보안 옵션을 제공할 수 있습니다. 또한, 내부(인터넷에 연결되지 않음) 로드 밸런서를 생성할 수도 있습니다.

TLS 종료

TLS 종료

Elastic Load Balancing은 통합 인증 관리 및 SSL 복호화를 지원하므로 로드 밸런서의 SSL 설정을 중앙에서 관리하고 애플리케이션의 CPU 집약적 작업 부담을 덜 수 있습니다.

계층 4 또는 계층 7 로드 밸런싱

계층 4 또는 계층 7 로드 밸런싱

계층 7 전용 기능을 위해 HTTP/HTTPS 애플리케이션을 로드 밸런싱하거나, TCP 프로토콜만 사용하는 애플리케이션을 위해 엄격한 계층 4 로드 밸런싱을 사용할 수 있습니다.

운영 모니터링

운영 모니터링

Elastic Load Balancing은 실시간으로 애플리케이션의 성능을 모니터링하기 위해 Amazon CloudWatch 지표와 통합 및 요청 추적 기능을 제공합니다.

애플리케이션 요구 사항에 따라 적절한 로드 밸런서를 선택할 수 있습니다. 유연한 애플리케이션 관리가 필요한 경우 Application Load Balancer를 사용하는 것이 좋습니다. 애플리케이션에 탁월한 성능 및 고정 IP가 필요한 경우 Network Load Balancer를 사용하는 것이 좋습니다. 기존 애플리케이션이 EC2-Classic 네트워크 내에 구축되어 있는 경우 Classic Load Balancer를 사용해야 합니다.

기능

Application Load Balancer

Network Load Balancer

Classic Load Balancer

프로토콜

HTTP, HTTPS

TCP

TCP, SSL, HTTP, HTTPS

플랫폼

VPC

VPC

EC2-Classic, VPC

상태 확인

CloudWatch 지표

로깅

영역 장애 조치

연결 드레이닝(등록 취소 지연)

동일한 인스턴스의 여러 포트로 로드 밸런싱

 

WebSockets

 

IP 주소를 대상으로 사용
 

로드 밸런서 삭제 보호

 

경로 기반 라우팅

 

 

호스트 기반 라우팅

 

 

네이티브 HTTP/2

 

 

구성 가능한 유휴 연결 시간 제한
 

교차 영역 로드 밸런싱

 

SSL 오프로딩

 

SNI(서버 이름 표시)    

고정 세션

 

백엔드 서버 암호화

 

고정 IP

 

 

탄력적 IP 주소

 

 

소스 IP 주소 보존

 

 

  • Application Load Balancer

    Application Load Balancer는 요청 레벨(계층 7)에서 작동하고, 요청의 콘텐츠에 따라 트래픽을 대상(EC2 인스턴스, 컨테이너 및 IP 주소)으로 라우팅합니다. HTTP 및 HTTPS 트래픽의 고급 로드 밸런싱에 적합한 Application Load Balancer는 마이크로 서비스 및 컨테이너 기반 애플리케이션을 비롯하여 최신 애플리케이션 아키텍처를 제공하는 것을 목표로 하는 고급 요청 라우팅 기능을 제공합니다. Application Load Balancer는 언제나 최신 SSL/TLS 암호화 및 프로토콜을 사용하도록 보장함으로써 애플리케이션 보안을 간소화하고 강화합니다.

    7계층 로드 밸런싱
    HTTP/HTTPS 애플리케이션을 로드 밸런싱하고 X-Forwarded-For 헤더와 같은 7계층 전용 기능을 사용할 수 있습니다.

    HTTPS 지원
    애플리케이션 로드 밸런서는 클라이언트와 로드 밸런서 간 HTTPS 종료를 지원합니다. Application Load Balancer는 사전 정의된 보안 정책으로 AWS Identity and Access Management(IAM) 및 AWS Certificate Manager를 통한 SSL 인증서 관리 기능도 제공합니다.

    SNI(서버 이름 표시)
    SNI(서버 이름 표시)는 TLS 핸드쉐이크 시작 시 클라이언트가 연결할 호스트 이름을 표시하는 TLS 프로토콜에 대한 확장 프로그램입니다. 로드 밸런서는 같은 보안 리스너를 통해 여러 개의 인증서를 제시할 수 있으므로 단일 보안 리스너를 사용하여 여러 개의 보안 웹 사이트를 지원하도록 할 수 있습니다. 또한, Application Load Balancer가 SNI를 사용한 스마트 인증서 선택 알고리즘을 지원합니다. 클라이언트가 표시하는 호스트 이름이 여러 인증서와 일치할 경우 로드 밸런서가 클라이언트의 기능을 포함한 여러 요소를 기반으로 사용할 최적의 인증서를 결정합니다.

    IP 주소를 대상으로 사용
    애플리케이션 백엔드의 IP 주소를 대상으로 사용하여 AWS 또는 온프레미스에 호스팅된 애플리케이션을 로드 밸런싱할 수 있습니다. 이를 통해 인스턴스의 모든 IP 주소 및 인터페이스에 호스팅된 애플리케이션 백엔드로 로드 밸런싱할 수 있습니다. 같은 인스턴스에 호스팅된 각 애플리케이션은 연결된 보안 그룹을 가질 수 있고 같은 포트를 사용할 수 있습니다. 또한, IP 주소를 대상으로 사용하여 온프레미스 위치(Direct Connect 또는 VPN 연결을 통해), 피어링된 VPC 및 EC2-Classic(ClassicLink 사용)에 호스팅된 애플리케이션을 로드 밸런싱할 수도 있습니다. AWS와 온프레미스 리소스에 걸쳐 로드 밸런싱할 수 있는 기능은 클라우드로 마이그레이션, 클라우드로 버스팅 또는 클라우드로 장애 조치하는 데 도움이 됩니다.

    고가용성
    애플리케이션 로드 밸런서를 사용하려면 2개 이상의 가용 영역을 지정해야 합니다. 수신되는 트래픽을 여러 가용 영역의 대상으로 분산할 수 있습니다. Application Load Balancer는 수신되는 애플리케이션 트래픽에 대응하여 요청 처리 용량을 자동으로 확장합니다.

    보안 기능
    Amazon Virtual Private Cloud(VPC)를 사용할 경우 Elastic Load Balancing과 연결된 보안 그룹을 생성 및 관리하여 추가적인 네트워킹 및 보안 옵션을 제공할 수 있습니다. Application Load Balancer를 인터넷과 연결되도록 구성하거나 퍼블릭 IP 주소 없이 로드 밸런서를 생성하여 인터넷에 연결되지 않은 내부 로드 밸런서로 사용할 수 있습니다.

    콘텐츠 기반 라우팅
    애플리케이션이 몇 개의 개별 서비스로 구성된 경우 애플리케이션 로드 밸런서는 요청 의 내용을 기반으로 요청을 서비스로 라우팅할 수 있습니다.

            호스트 기반 라우팅
            HTTP 헤더의 호스트 필드를 기반으로 클라이언트 요청을 라우팅하여 동일한 로드 밸런서에서 여러 도메인으로 라우팅할 수 있습니다.

            경로 기반 라우팅
            HTTP 헤더의 URL 경로를 기반으로 클라이언트 요청을 라우팅할 수 있습니다.

    컨테이너식 애플리케이션 지원
    Application Load Balancer는 단일 Amazon EC2 인스턴스상의 여러 포트에 걸쳐 로드 밸런싱함으로써 향상된 컨테이너 지원 기능을 제공합니다. Amazon EC2 Container Service(ECS)와 긴밀하게 통합되어 완전관리형 컨테이너 상품을 제공합니다. ECS를 사용하면 ECS 작업 정의에서 동적 포트를 지정하여 EC2 인스턴스에 예약된 경우 컨테이너에 미사용 포트를 제공할 수 있습니다. ECS 스케줄러가 이 포트를 사용하여 자동으로 로드 밸런서에 작업을 추가합니다.

    HTTP/2 지원
    HTTP/2는 새로운 버전의 HyperText Transfer Protocol(HTTP)로, 하나의 다중 연결을 사용하여 동일한 연결에서 복수의 요청을 전송하도록 허용합니다. 또한 헤더 데이터를 전송 전에 이진 형식으로 압축하고 클라이언트와의 TLS 연결을 지원합니다.

    웹 소켓 지원
    웹 소켓은 최종 사용자가 서버로 업데이트를 요청(또는 폴링)할 필요 없이 서버가 최종 사용자와 실시간 메시지를 교환할 수 있도록 해줍니다. 웹 소켓 프로토콜은 장기 TCP 연결을 통해 클라이언트와 서버 간 양방향 통신 채널을 제공합니다

    IPv6 기본 지원
    Application Load Balancer는 VPC에서 인터넷 프로토콜 버전 6(IPv6)을 기본적으로 지원합니다. 따라서 클라이언트가 IPv4 또는 IPv6를 통해 Application Load Balancer에 연결할 수 있습니다.

    고정 세션
    고정 세션은 요청을 동일한 클라이언트에서 동일한 대상으로 라우팅하는 메커니즘입니다. Application Load Balancer는 로드 밸런서에서 생성한 쿠키를 사용하여 고정 세션을 지원합니다. 고정 세션을 활성화할 경우 동일한 대상이 요청을 수신하고 쿠키를 사용하여 세션 컨텍스트를 복구할 수 있습니다. 고정성은 대상 그룹 레벨에서 정의됩니다.

    상태 확인
    애플리케이션 로드 밸런서는 정상 상태의 대상으로만 트래픽을 라우팅합니다. Application Load Balancer를 사용하면 두 가지 방식으로 애플리케이션 상태에 대한 통찰력을 개선할 수 있습니다. (1) 200~499까지 상세한 오류 코드를 구성할 수 있게 해주는 상태 확인 개선 사항. 상태 확인을 통해 로드 밸런서 뒤의 각 서비스의 상태를 모니터링할 수 있습니다. (2) EC2 인스턴스에서 실행되는 각 서비스의 트래픽을 파악할 수 있는 새로운 지표.

    운영 모니터링
    Amazon CloudWatch는 요청 횟수, 오류 횟수, 오류 유형, 요청 지연 시간과 같은 Application Load Balancer 지표를 보고합니다.

    로깅
    액세스 로그 기능을 사용하여 로드 밸런서로 전송된 요청을 모두 기록하고 이후 분석을 위해 Amazon S3에 로그를 저장할 수 있습니다. 로그는 압축되고 gzip 파일 확장자를 사용합니다. 압축된 로그는 스토리지 공간 및 전송 대역폭을 모두 저장하며 애플리케이션 오류를 진단하고 웹 트래픽을 분석하는 데 유용합니다.

    AWS CloudTrail을 사용하여 계정에 대한 Application Load Balancer API 호출을 기록하고 로그 파일을 전달할 수도 있습니다. API 호출 기록을 사용하여 보안 분석, 리소스 변경 사항 추적, 준수 감사를 수행할 수 있습니다.

    삭제 보호
    애플리케이션 로드 밸런서에서 삭제 보호를 활성화하여 우발적 삭제를 방지할 수 있습니다.

    요청 추적
    Application Load Balancer는 로드 밸런서에 수신되는 모든 요청에 새로운 사용자 정의 식별자 "X-Amzn-Trace-Id" HTTP 헤더를 추가합니다. 요청 추적을 사용하면 웹 사이트와 분산 애플리케이션을 구성하는 다양한 서비스에서 요청이 사용됨에 따라 고유한 ID별로 요청을 추적할 수 있습니다. 고유한 추적 식별자를 사용하여 애플리케이션 스택에서 모든 성능 또는 타이밍 문제를 개별 요청별로 세분화하여 확인할 수 있습니다.

    웹 애플리케이션 방화벽
    AWS WAF를 사용해 Application Load Balancer의 웹 애플리케이션을 보호할 수 있습니다. AWS WAF는 애플리케이션 가용성에 영향을 주거나, 보안을 위협하거나, 리소스를 과도하게 사용하는 흔한 웹 공격으로부터 웹 애플리케이션을 보호하는 데 도움이 되는 웹 애플리케이션 방화벽입니다.

  • Network Load Balancer

    Network Load Balancer는 연결 레벨(계층 4)에서 작동하고, IP 프로토콜 데이터에 따라 연결을 대상(Amazon EC2 인스턴스, 컨테이너 및 IP 주소)으로 라우팅합니다. TCP 트래픽을 로드 밸런싱하는 데 적합한 Network Load Balancer는 매우 짧은 지연 시간을 유지하면서 초당 수백만 개의 요청을 처리할 수 있습니다. Network Load Balancer는 가용 영역당 하나의 정적 IP 주소를 사용하면서 갑작스럽고 변동이 심한 트래픽 패턴을 처리하는 데 최적화되었습니다. Auto Scaling, Amazon EC2 Container Service(ECS) 및 Amazon CloudFormation과 같은 다른 인기 있는 AWS 서비스와 통합됩니다.

    연결 기반 로드 밸런싱
    TCP 트래픽을 로드 밸런싱하고 연결을 대상(Amazon EC2 인스턴스, 마이크로 서비스, 컨테이너 및 IP 주소)으로 라우팅할 수 있습니다.

    고가용성
    Network Load Balancer는 가용성이 매우 뛰어납니다. 클라이언트로부터 수신되는 트래픽을 수락하고 해당 트래픽을 같은 가용 영역 내 여러 대상으로 분산합니다. 또한, 이 로드 밸런서는 등록된 대상의 상태를 모니터링하여 정상 상태의 대상으로만 트래픽이 라우팅 되도록 합니다. 로드 밸런서가 비정상 상태의 대상을 감지하면, 해당 대상으로 트래픽을 라우팅하는 것을 중단하고 나머지 정상인 대상으로 트래픽을 다시 라우팅합니다. 한 가용 영역 내 모든 대상이 비정상이고 또 다른 가용 영역에 대상을 설정해둔 경우, Network Load Balancer가 자동으로 장애 조치를 수행하여 다른 영역에 있는 정상인 대상으로 트래픽을 라우팅합니다.

    높은 처리량
    Network Load Balancer는 트래픽을 증가함에 따라 이를 처리할 수 있도록 설계되었으며 초당 수백만 개의 요청을 로드 밸런싱할 수 있습니다. 갑작스럽고 변동이 심한 트래픽 패턴도 처리할 수 있습니다.

    짧은 지연 시간
    Network Load Balancer는 지연 시간에 민감한 애플리케이션을 위해 매우 짧은 지연 시간을 제공합니다.

    소스 IP 주소 보존
    Network Load Balancer는 클라이언트 측 소스 IP를 보존하여 백엔드가 클라이언트의 IP 주소를 확인할 수 있도록 허용합니다. 그러면 애플리케이션에서 추가 처리를 위해 이를 사용할 수 있습니다.

    고정 IP 지원
    Network Load Balancer는 가용 영역(서브넷)별로 고정 IP를 자동으로 제공하며, 애플리케이션에서 이를 로드 밸런서의 프런트 엔드 IP로 사용할 수 있습니다.

    탄력적 IP 지원
    또한, Network Load Balancer를 사용하면 가용 영역(서브넷)별로 탄력적 IP를 지정하여 고정 IP를 직접 제공할 수 있습니다.

    상태 확인
    Network Load Balancer는 네트워크 및 애플리케이션 대상의 상태 확인을 모두 지원합니다. 네트워크 수준의 상태는 평상시의 트래픽에 대한 대상의 전반적인 응답을 기준으로 합니다. 대상이 새로운 연결에 응답할 수 없게 되거나 너무 느린 경우 로드 밸런서가 해당 대상을 사용 불가로 표시합니다. 애플리케이션 수준의 상태 확인은 좀 더 상세히 살펴보는 데 사용할 수도 있습니다. 주어진 대상의 특정 URL을 주기적으로 조사함으로써 실제 애플리케이션의 상태를 통합할 수 있습니다. 빠른 진단과 강력한 디버깅을 위해 Network Load Balancer API의 '이유 코드'를 통해 그리고 대상 상태 확인에 연결된 Amazon CloudWatch 지표를 통해 오류가 발생하는 이유와 상태 확인에 대한 완전한 가시성을 제공합니다.

    DNS 장애 조치
    Network Load Balancer에 등록된 대상이 모두 비정상이거나 주어진 영역 내 Network Load Balancer 노드가 모두 비정상인 경우, Amazon Route 53에서 트래픽을 다른 가용 영역에 있는 로드 밸런서 노드로 보냅니다.

    Amazon Route 53과 통합
    Route 53과 통합하면 Network Load Balancer가 응답하지 않는 경우, 사용할 수 없는 로드 밸런서 IP 주소를 서비스에서 제거하고 트래픽을 다른 리전에 있는 대체 Network Load Balancer로 보냅니다.

    AWS 서비스와 통합
    Network Load Balancer는 Auto Scaling, Amazon EC2 Container Service(ECS), AWS CloudFormation, AWS CodeDeploy 및 AWS Config와 같은 다른 AWS 서비스와 통합됩니다.

    수명이 긴 TCP 연결
    Network Load Balancer는 WebSocket 유형의 애플리케이션에 적합한 수명이 긴 TCP 연결을 지원합니다.

    중앙 API 지원
    Network Load Balancer는 Application Load Balancer와 같은 API를 사용합니다. 따라서 대상 그룹 및 상태 확인 작업을 하고, 같은 Amazon EC2 인스턴스의 여러 포트에 걸쳐 로드 밸런싱하여 컨테이너식 애플리케이션을 지원할 수 있습니다.

    강력한 모니터링 및 감사
    Amazon CloudWatch는 Network Load Balancer 지표를 보고합니다. CloudWatch는 활성 흐름 개수, 정상 호스트 개수, 새로운 흐름 개수, 처리된 바이트 등과 같은 지표를 제공합니다. Network Load Balancer는 AWS CloudTrail과도 통합됩니다. CloudTrail은 Network Load Balancer에 대한 API 호출을 추적합니다.

    향상된 로깅
    흐름 로그 기능을 사용하여 로드 밸런서로 전송된 모든 요청을 기록할 수 있습니다. 흐름 로그는 VPC 내 네트워크 인터페이스에서 송수신되는 IP 트래픽에 대한 정보를 캡처합니다. 흐름 로그 데이터는 Amazon CloudWatch Logs를 사용해 저장됩니다.

    영역 격리
    Network Load Balancer는 단일 영역에 있는 애플리케이션 아키텍처를 위해 설계되었습니다. 가용 영역 내 무언가에 장애가 발생하면, AWS에서 자동으로 다른 정상 가용 영역으로 장애 조치합니다. 높은 가용성을 실현하도록 여러 AZ에 로드 밸런서와 대상을 구성하는 것이 좋지만, 단일 가용 영역에 Network Load Balancer를 활성화하여 영역 격리가 필요한 아키텍처를 지원할 수 있습니다.

    IP 주소를 대상으로 사용하는 로드 밸런싱
    애플리케이션 백엔드의 IP 주소를 대상으로 사용하여 AWS 또는 온프레미스에 호스팅된 애플리케이션을 로드 밸런싱할 수 있습니다. 이를 통해 인스턴스의 모든 IP 주소 및 인터페이스에 호스팅된 애플리케이션 백엔드로 로드 밸런싱할 수 있습니다. 같은 인스턴스에 호스팅된 각 애플리케이션은 연결된 보안 그룹을 가질 수 있고 같은 포트를 사용할 수 있습니다. 또한, IP 주소를 대상으로 사용하여 온프레미스 위치(Direct Connect 연결을 통해) 및 EC2-Classic(ClassicLink 사용)에 호스팅된 애플리케이션을 로드 밸런싱할 수도 있습니다. AWS와 온프레미스 리소스에 걸쳐 로드 밸런싱할 수 있는 기능은 클라우드로 마이그레이션, 클라우드로 버스팅 또는 클라우드로 장애 조치하는 데 도움이 됩니다.

  • Classic Load Balancer

    Classic Load Balancer는 여러 Amazon EC2 인스턴스에서 기본적인 로드 밸런싱을 제공하며, 요청 레벨 및 연결 레벨에서 작동합니다. Classic Load Balancer는 EC2-Classic 네트워크 내에 구축된 애플리케이션을 대상으로 합니다. Virtual Private Cloud(VPC) 사용 시, 계층 7에는 Application Load Balancer를 사용하고 계층 4에는 Network Load Balancer를 사용하는 것이 좋습니다.

    고가용성
    수신되는 트래픽을 단일 가용 영역 또는 여러 가용 영역의 Amazon EC2 인스턴스 전체에 걸쳐 배포할 수 있습니다. Classic Load Balancer는 수신되는 애플리케이션 트래픽에 대응하여 요청 처리 용량을 자동으로 조정합니다.

    상태 확인
    Classic Load Balancer는 Amazon EC2 인스턴스의 상태를 감지할 수 있습니다. 비정상적인 EC2 인스턴스를 감지한 경우, 더 이상 해당 인스턴스로 트래픽을 라우팅하지 않고 나머지 정상적인 인스턴스 전체로 로드를 분배합니다.

    보안 기능
    Amazon Virtual Private Cloud(VPC)를 사용할 경우 Classic Load Balancer와 연결된 보안 그룹을 생성 및 관리하여 추가적인 네트워킹 및 보안 옵션을 제공할 수 있습니다. 또한 퍼블릭 IP 주소 없이 클래식 로드 밸런서를 생성하여 인터넷에 연결되지 않은 내부 로드 밸런서로 사용할 수 있습니다.

    SSL 오프로드
    Classic Load Balancer는 애플리케이션 인스턴스에서 SSL 복호화를 오프로딩하고, SSL 인증서를 중앙 집중식으로 관리하고, 퍼블릭 키 인증(선택 사항)을 사용해 백엔드 인스턴스 암호화하는 것을 비롯하여 SSL 종료를 지원합니다. 유연한 암호 지원을 사용하면 로드 밸런서가 클라이언트에게 제공하는 암호 및 프로토콜을 제어할 수 있습니다.

    고정 세션
    Classic Load Balancer는 쿠키를 사용하여 사용자 세션을 특정 Amazon EC2 인스턴스에 고정하는 기능을 지원합니다. 사용자가 애플리케이션에 액세스하는 동안 트래픽은 동일한 인스턴스로 라우팅됩니다.

    IPv6 지원
    Classic Load Balancer는 EC2-Classic 네트워크에서 인터넷 프로토콜 버전 4 및 6(IPv4 및 IPv6)을 모두 사용할 수 있도록 지원합니다.

    계층 4 또는 계층 7 로드 밸런싱
    HTTP/HTTPS 애플리케이션을 로드 밸런싱하고 X-Forwarded 및 고정 세션과 같은 계층 7 전용 기능을 사용할 수 있습니다. 또한, TCP 프로토콜만 사용하는 애플리케이션에 대해 엄격한 계층 4 로드 밸런싱을 사용할 수 있습니다.

    운영 모니터링
    요청 수 및 요청 지연 시간과 같은 클래식 로드 밸런서 측정치는 Amazon CloudWatch를 통해 보고됩니다.

    로깅
    액세스 로그 기능을 사용하여 로드 밸런서로 전송된 요청을 모두 기록하고 이후 분석을 위해 Amazon S3에 로그를 저장합니다. 로그는 애플리케이션 장애 진단 및 웹 트래픽 분석에 유용합니다. AWS CloudTrail을 사용하여 계정에 대한 Classic Load Balancer API 호출을 기록하고 로그 파일을 전달할 수 있습니다. API 호출 기록을 사용하면 보안 분석, 리소스 변경 사항 추적, 규정 준수 감사를 수행할 수 있습니다.