Application Load Balancer 구성 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Application Load Balancer 구성

로드 밸런싱을 활성화한 경우, AWS Elastic Beanstalk 환경에는 환경에서 인스턴스 간의 트래픽을 분산하는 Elastic Load Balancing 로드 밸런서가 갖춰져 있습니다. Elastic Load Balancing은 몇 가지 로드 밸런서 유형을 지원합니다. 자세한 내용은 Elastic Load Balancing 사용 설명서를 참조하세요. Elastic Beanstalk에서는 자동으로 로드 밸런서를 생성하거나, 생성한 공유 로드 밸런서를 지정할 수 있습니다.

이 주제에서는 Elastic Beanstalk에서 생성하고 사용자 환경 전용으로 지정하는 Application Load Balancer의 구성에 대해 설명합니다. 또한 공유 Application Load Balancer 구성 단원도 참조하세요. Elastic Beanstalk에서 지원하는 모든 로드 밸런서 유형 구성에 대한 자세한 내용은 Elastic Beanstalk 환경의 로드 밸런서 단원을 참조하세요.

참고

환경 생성 중에만 환경에서 사용하는 로드 밸런서 유형을 선택할 수 있습니다. 설정을 변경하여 실행 중인 환경의 로드 밸런서 작동을 관리할 수는 있지만 로드 밸런서 유형을 변경할 수는 없습니다. 전용 로드 밸런서에서 공유 로드 밸런서로 전환하거나 그 반대로 전환할 수 없습니다.

소개

Application Load Balancer는 여러 경로에 대한 요청을 서로 다른 대상으로 보낼 수 있도록 애플리케이션 네트워크 프로토콜 계층에서 트래픽을 검사하여 요청 경로를 식별합니다.

환경에서 Application Load Balancer를 사용하는 경우 Elastic Beanstalk는 기본적으로 Classic Load Balancer와 동일한 기능을 수행하도록 구성합니다. 기본 리스너는 포트 80에서 HTTP 요청을 수락하고 이를 환경의 인스턴스로 분산합니다. 포트 443에서 HTTPS 트래픽을 해독하는 인증서가 있는 보안 리스너를 추가하고, 상태 확인 동작을 구성하고, 로드 밸런서에서 Amazon Simple Storage Service(Amazon S3) 버킷으로 액세스 로그를 푸시할 수 있습니다.

참고

Classic Load Balancer 또는 Network Load Balancer와 달리 Application Load Balancer는 전송 계층(계층 4) TCP 또는 SSL/TLS 리스너를 가질 수 없습니다. 오직 HTTP 및 HTTPS 리스너만 지원합니다. 또한, 백엔드 인증을 사용하여 로드 밸런서와 백엔드 인스턴스 간에 HTTPS 연결을 인증할 수 없습니다.

Elastic Beanstalk 환경에서 Application Load Balancer를 사용하여 특정 경로의 트래픽을 웹 서버 인스턴스의 다른 포트로 보낼 수 있습니다. Classic Load Balancer를 통해 리스너가 수신하는 모든 트래픽이 백엔드 인스턴스의 단일 포트로 라우팅됩니다. Application Load Balancer를 통해 리스너에 대한 여러 규칙을 구성하여 특정 경로에 대한 요청을 여러 백엔드 프로세스로 라우팅할 수 있습니다. 프로세스가 수신 대기하는 포트로 각 프로세스를 구성합니다.

예를 들어, 기본 애플리케이션과 별도로 로그인 프로세스를 실행할 수 있습니다. 환경의 인스턴스에서 실행하는 기본 애플리케이션이 대부분의 요청을 수락하고 포트 80에서 수신 대기하지만, 로그인 프로세스는 포트 5000에서 수신 대기하고 /login 경로에 대한 요청을 수락합니다. 클라이언트에서 수신되는 모든 요청은 포트 80으로 들어옵니다. Application Load Balancer를 사용하는 경우 요청의 경로에 따라 개별 프로세스 두 개로 트래픽을 라우팅하는 두 규칙을 통해 포트 80으로 수신되는 트래픽에 대해 단일 리스너를 구성할 수 있습니다. 포트 5000에서 수신 대기 중인 로그인 프로세스에 /login에 대한 트래픽을 라우팅하는 사용자 지정 규칙을 추가합니다. 기본 규칙은 그 밖의 모든 트래픽을 포트 80에서 수신 대기하는 기본 애플리케이션 프로세스로 라우팅합니다.

Application Load Balancer 규칙은 요청을 대상 그룹에 매핑합니다. Elastic Beanstalk에서 대상 그룹은 프로세스로 표현됩니다. 프로토콜, 포트 및 상태 확인 설정을 사용하여 프로세스를 구성할 수 있습니다. 프로세스는 환경의 인스턴스에서 실행되는 프로세스를 나타냅니다. 기본 프로세스는 애플리케이션 앞에서 실행되는 역방향 프록시(nginx 또는 Apache)의 포트 80에 있는 리스너입니다.

참고

Elastic Beanstalk 외부에서는 대상 그룹이 인스턴스 그룹으로 매핑됩니다. 리스너는 규칙과 대상 그룹을 사용하여 트래픽을 경로에 따라 다른 인스턴스에 라우팅할 수 있습니다. Elastic Beanstalk 내에서는 환경의 모든 인스턴스가 동일하므로 서로 다른 포트에서 수신 대기하는 프로세스 간에 구별됩니다.

Classic Load Balancer는 전체 환경에 대해 하나의 상태 확인 경로를 사용합니다. Application Load Balancer를 사용할 경우 로드 밸런서 및 Elastic Beanstalk 확장 상태 모니터링을 통해 모니터링되는 별도의 상태 확인 경로가 프로세스마다 있습니다.

Application Load Balancer를 사용하려면 환경이 기본 또는 사용자 지정 VPC에 있어야 하며, 표준 권한 세트를 보유한 서비스 역할이 있어야 합니다. 서비스 역할이 오래된 경우 elasticloadbalancing:DescribeTargetHealthelasticloadbalancing:DescribeLoadBalancers를 포함하도록 해당 역할의 권한을 업데이트해야 할 수 있습니다. Application Load Balancer에 대한 자세한 내용은 Application Load Balancer란 무엇인가요?를 참조하세요.

참고

Application Load Balancer 상태 확인은 Elastic Beanstalk 상태 확인 경로를 사용하지 않습니다. 대신에 각 프로세스마다 개별적으로 구성된 특정 경로가 사용됩니다.

Elastic Beanstalk 콘솔을 사용하여 Application Load Balancer 구성

환경 생성 중에 또는 나중에 환경을 실행 중일 때 Elastic Beanstalk 콘솔을 사용하여 Application Load Balancer의 리스너, 프로세스 및 규칙을 구성할 수 있습니다.

환경 생성 중에 Elastic Beanstalk 콘솔에서 Application Load Balancer를 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

  2. 탐색 창에서 환경을 선택합니다.

  3. 새 환경 생성을 선택하여 환경 생성을 시작합니다.

  4. 마법사의 기본 페이지에서 환경 생성을 선택하기 전에 추가 옵션 구성을 선택합니다.

  5. 고가용성 구성 프리셋을 선택합니다.

    또는 용량 구성 범주에서 로드 밸런싱 수행 환경 유형을 구성합니다. 자세한 내용은 용량 섹션을 참조하세요.

  6. [로드 밸런서] 구성 범주에서 [편집]을 선택합니다.

  7. Application Load Balancer전용(Dedicated) 옵션을 아직 선택하지 않은 경우 선택합니다.

    
            Elastic Load Balancing 구성 페이지 - 로드 밸런서 유형 선택
  8. 환경에 필요한 Application Load Balancer 구성 부분을 모두 변경합니다.

  9. 저장을 선택하고 난 후 환경에 필요한 다른 구성 부분을 변경합니다.

  10. 환경 생성을 선택합니다.

Elastic Beanstalk 콘솔에서 실행 중인 환경의 Application Load Balancer를 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경 이름을 선택합니다.

    참고

    여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.

  3. 탐색 창에서 구성을 선택합니다.

  4. [로드 밸런서] 구성 범주에서 [편집]을 선택합니다.

    참고

    [로드 밸런서] 구성 범주에 [편집] 버튼이 없으면 환경에 로드 밸런서가 없는 것입니다. 설정 방법을 알아보려면 환경 유형 변경을 참조하십시오.

  5. 환경에 필요한 Application Load Balancer 구성 부분을 변경합니다.

  6. 변경 사항을 저장하려면 페이지 하단에서 적용을 선택합니다.

리스너

이 목록을 사용하여 로드 밸런서에 대해 리스너를 지정합니다. 각 리스너는 지정된 프로토콜을 사용하여 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스의 하나 이상의 프로세스로 라우팅합니다. 처음에 이 목록에는 기본 리스너가 표시되는데, 이 리스너는 포트 80을 통해 전송되는 수신 HTTP 트래픽을 기본 프로세스로 라우팅합니다.


          Application Load Balancer 구성 - 리스너 목록
기존 리스너를 구성하려면
  1. 테이블 항목 옆에 있는 확인란을 선택한 다음 작업, 편집을 선택합니다.

  2. Application Load Balancer 리스너 대화 상자를 사용하여 설정을 편집하고 나서 저장을 선택합니다.

리스너를 추가하려면
  1. 리스너 추가를 선택합니다.

  2. Application Load Balancer 리스너(Application Load Balancer listener) 대화 상자에서 원하는 설정을 구성한 다음 추가(Add)를 선택합니다.

Application Load Balancer 리스너 대화 상자 설정을 사용하여 리스너가 트래픽을 수신 대기하는 포트 및 프로토콜과 트래픽을 라우팅할 프로세스를 선택합니다. HTTPS 프로토콜을 선택하는 경우 SSL 설정을 구성합니다.


          Application Load Balancer 리스너 대화 상자

HTTPS 리스너를 구성하기 전에 유효한 SSL 인증서가 있는지 확인해야 합니다. 다음 중 하나를 수행하세요.

Elastic Beanstalk에서의 HTTPS 구성과 인증서 작업에 대한 자세한 내용은 Elastic Beanstalk 환경에 사용할 HTTPS 구성 단원을 참조하세요.

프로세스

이 목록을 사용하여 로드 밸런서에 대해 프로세스를 지정합니다. 프로세스는 리스너가 트래픽을 라우팅하기 위한 대상입니다. 각 리스너는 지정된 프로토콜을 사용하여 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스의 하나 이상의 프로세스로 라우팅합니다. 처음에 목록에는 기본 프로세스가 표시되는데, 이 프로세스는 포트 80을 통해 수신 HTTP 트래픽을 수신 대기합니다.


          Application Load Balancer 구성 - 프로세스 목록

기존 프로세스 설정을 편집하거나 새 프로세스를 추가할 수 있습니다. 목록에 있는 프로세스 편집 또는 목록에 프로세스 추가를 시작하려면 리스너 목록에 대해 나열된 동일한 단계를 사용합니다. 환경 프로세스 대화 상자가 열립니다.

Application Load Balancer의 환경 프로세스 대화 상자 설정

정의

이름과 요청을 수신 대기할 포트프로토콜 설정을 사용하여 프로세스를 정의합니다.


            이름, 포트 및 프로토콜에 대한 Application Load Balancer 프로세스 설정

상태 확인

다음 설정을 사용하여 프로세스 상태 확인을 구성합니다.

  • HTTP 코드(HTTP code) – 정상 프로세스를 지정하는 HTTP 상태 코드입니다.

  • 경로(Path) – 프로세스에 대한 상태 확인 요청 경로입니다.

  • 제한 시간(Timeout) – 상태 확인 응답을 기다릴 시간(초)입니다.

  • 간격(Interval) – 개별 인스턴스의 상태 확인 간 간격(초 단위)입니다. 이 간격은 제한 시간보다 커야 합니다.

  • 비정상 임계값(Unhealthy threshold), 정상 임계값(Healthy threshold) – Elastic Load Balancing이 인스턴스의 상태 확인을 변경하기 전에 각각 실패하거나 성공해야 하는 상태 확인 횟수입니다.

  • 등록 취소 지연(Deregistration delay) – 인스턴스 등록을 취소하기 전에 활성 요청이 완료될 때까지 기다려야 하는 시간(초)입니다.


            상태 확인에 대한 Application Load Balancer 프로세스 설정
참고

Elastic Load Balancing 상태 확인은 환경 Auto Scaling 그룹의 상태 확인 동작에는 영향을 주지 않습니다. Elastic Load Balancing 상태 확인에 실패한 인스턴스는 자동 대체하도록 Amazon EC2 Auto Scaling을 수동으로 구성하지 않는 한 Amazon EC2 Auto Scaling으로 자동 대체되지 않습니다. 세부 정보는 Auto Scaling 상태 확인 설정을 참조하십시오.

전반적인 환경 상태에 영향을 미치는 정도와 상태 확인에 대한 자세한 내용은 기본 상태 보고 단원을 참조하세요.

세션

고정 정책 활성화됨 상자를 선택하거나 지워서 고정 세션을 활성화 또는 비활성화합니다. 쿠키 지속 시간을 사용하여 고정 세션의 지속 시간을 최대 604800초까지로 구성합니다.


            세션 고정성에 대한 Application Load Balancer 프로세스 설정

규칙

이 목록을 사용하여 로드 밸런서에 대한 사용자 지정 리스너 규칙을 지정합니다. 규칙은 리스너가 특정 경로 패턴에서 수신하는 요청을 대상 프로세스로 매핑합니다. 각 리스너에는 다양한 경로의 요청을 인스턴스의 서로 다른 프로세스로 라우팅하는 여러 규칙이 있을 수 있습니다.

규칙에는 수신 중인 요청에 적용되는 우선 순위를 결정하는 숫자 우선 순위가 지정되어 있습니다. 추가하는 각각의 새 리스너마다 Elastic Beanstalk는 모든 리스너의 트래픽을 기본 프로세스로 라우팅하는 기본 규칙을 추가합니다. 기본 규칙의 우선 순위는 최하위입니다. 이 순위는 동일 리스너에 대해 수신 요청과 일치하는 다른 규칙이 없는 경우에 적용됩니다. 먼저 사용자 지정 규칙을 추가하지 않은 경우 목록이 비어 있습니다. 모든 리스너의 기본 규칙은 표시되지 않습니다.


          Application Load Balancer 구성 - 규칙 목록

기존 규칙의 설정을 편집하거나 새 규칙을 추가할 수 있습니다. 목록에 있는 규칙 편집 또는 목록에 프로세스 추가를 시작하려면 리스너 목록에 대해 나열된 동일한 단계를 사용합니다. 리스너 규칙 대화 상자가 열리고 다음 설정이 표시됩니다.

  • 이름(Name) – 규칙의 이름입니다.

  • 리스너 포트(Listener port) – 규칙이 적용되는 리스너의 포트입니다.

  • 우선 순위(Priority) – 규칙의 우선 순위입니다. 우선 순위 숫자가 작을수록 우선 적용됩니다. 리스너 규칙의 우선 순위는 고유해야 합니다.

  • 일치 조건(Match conditions) – 규칙이 적용되는 요청 URL 조건의 목록입니다. 조건에는 두 가지 유형, 즉 HostHeader(URL의 도메인 부분)와 PathPattern(URL의 경로 부분)이 있습니다. 최대 5개의 조건을 추가할 수 있습니다. 각 조건 값은 최대 128자이며 와일드카드 문자를 포함할 수 있습니다.

  • 프로세스(Process) – 로드 밸런서가 규칙과 일치하는 요청을 라우팅할 프로세스입니다.

기존 규칙을 편집하는 경우 이름리스너 포트는 변경할 수 없습니다.


          Application Load Balancer 구성 - 규칙 목록

액세스 로그 캡처

이 설정을 사용하여 Elastic Load Balancing을 구성하여 Application Load Balancer에 전송된 요청에 대한 상세 정보와 함께 로그를 캡처할 수 있습니다. 액세스 로그 캡처는 기본적으로 비활성화되어 있습니다. 로그 저장(Store logs)이 활성화되면 Elastic Load Balancing은 사용자가 구성한 S3 버킷에 로그를 저장합니다. 접두사(Prefix) 설정은 버킷에서 로그를 위한 최상위 폴더를 지정합니다. Elastic Load Balancing은 해당 접두사 아래의 AWSLogs라는 폴더에 로그를 저장합니다. 접두사를 지정하지 않으면 Elastic Load Balancing이 버킷의 루트 수준 폴더에 로그를 저장합니다.

참고

액세스 로그 캡처를 위해 구성하는 Amazon S3 버킷이 계정용으로 Elastic Beanstalk이 생성한 버킷이 아닌 경우, AWS Identity and Access Management(IAM) 사용자에게 적절한 권한을 부여하는 사용자 정책을 추가해야 합니다. Elastic Beanstalk이 제공하는 관리형 사용자 정책은 Elastic Beanstalk 관리 리소스에 대한 권한만 다룹니다.

권한 및 기타 요구 사항을 비롯한 액세스 로그에 대한 자세한 내용은 Application Load Balancer를 위한 액세스 로그를 참조하세요.


          Application Load Balancer 구성 - 액세스 로그

예제: 보안 리스너 하나와 프로세스 2개를 사용하는 Application Load Balancer

이 예제에서는 애플리케이션에 관리 요청을 처리하기 위한 별도의 프로세스와 엔드 투 엔드 트래픽 암호가 필요합니다.

이러한 요구 사항을 충족하도록 환경의 Application Load Balancer를 구성하려는 경우 기본 리스너를 제거하고 HTTPS 리스너를 추가하며, 기본 프로세스가 HTTPS의 포트 443에서 수신 대기하도록 지정하고, 다른 경로에 관리 트래픽용 프로세스 및 리스너 규칙을 추가할 수 있습니다.

이 예제용 로드 밸런서를 구성하려면
  1. 보안 리스너를 추가합니다. 포트443을 입력합니다. 프로토콜에서 HTTPS를 선택합니다. SSL 인증서에서 SSL 인증서의 ARN을 선택합니다. 예를 들어 arn:aws:iam::123456789012:server-certificate/abc/certs/build 또는 arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678입니다.

    기본 프로세스의 경우 default를 선택한 상태로 유지합니다.

    
            Application Load Balancer 구성 - 보안 리스너 추가

    이제 목록에서 추가 리스너를 볼 수 있습니다.

    
            Application Load Balancer 구성 예제 - 2개의 리스너를 포함하는 리스너 목록
  2. 기본 포트 80 HTTP 리스너를 비활성화합니다. 기본 리스너의 경우 활성 옵션을 끕니다.

    
            Application Load Balancer 구성 예제 - 기본 리스너 비활성화
  3. 기본 프로세스를 HTTPS로 구성합니다. 기본 프로세스를 선택한 다음 작업에서 편집을 선택합니다. 포트443을 입력합니다. 프로토콜에서 HTTPS를 선택합니다.

    
            Application Load Balancer 구성 예제 - HTTPS로의 기본 프로세스 구성
  4. 관리 프로세스를 추가합니다. Nameadmin를 입력합니다. 포트443을 입력합니다. 프로토콜에서 HTTPS를 선택합니다. 상태 확인에서 경로/admin을 입력합니다.

    
            Application Load Balancer 구성 예제 - 관리 프로세스 추가
  5. 관리 트래픽 규칙을 추가합니다. Nameadmin를 입력합니다. 리스너 포트에는 443을 입력합니다. 일치 조건(Match conditions)에서 /admin/* 값과 함께 PathPattern을 추가합니다. 프로세스admin을 선택합니다.

    
            Application Load Balancer 구성 예제 - 관리 규칙 추가

EB CLI를 사용하여 Application Load Balancer 구성

eb create를 실행하면 EB CLI는 로드 밸런서 유형을 선택하라는 메시지를 표시합니다.

$ eb create Enter Environment Name (default is my-app): test-env Enter DNS CNAME prefix (default is my-app): test-env-DLW24ED23SF Select a load balancer type 1) classic 2) application 3) network (default is 2):

또한 --elb-type 옵션으로 로드 밸런서 유형을 지정할 수 있습니다.

$ eb create test-env --elb-type application

Application Load Balancer 네임스페이스

다음 네임스페이스에서 Application Load Balancer와 관련된 설정을 찾을 수 있습니다.

  • aws:elasticbeanstalk:environment – 환경을 위한 로드 밸런서를 선택합니다. Application Load Balancer의 값은 application입니다.

    구성 파일(.Ebextensions)에서는 이 옵션을 설정할 수 없습니다.

  • aws:elbv2:loadbalancer – Application Load Balancer 전체에 적용되는 액세스 로그 및 기타 설정을 구성합니다.

  • aws:elbv2:listener – Application Load Balancer에서 리스너를 구성합니다. 이러한 설정은 Classic Load Balancer에 대한 aws:elb:listener의 설정에 매핑됩니다.

  • aws:elbv2:listenerrule – 요청 경로에 따라 트래픽을 서로 다른 프로세스로 라우팅하는 규칙을 구성합니다. 규칙은 Application Load Balancer에 고유합니다.

  • aws:elasticbeanstalk:environment:process – 상태 확인을 구성하고 환경의 인스턴스에서 실행되는 프로세스의 포트 및 프로토콜을 지정합니다. 이 포트 및 프로토콜 설정은 Classic Load Balancer의 리스너에 대한 aws:elb:listener의 인스턴스 포트 및 인스턴스 프로토콜 설정에 매핑됩니다. 상태 확인 설정은 aws:elb:healthcheckaws:elasticbeanstalk:application 네임스페이스의 설정에 매핑됩니다.

예 .ebextensions/alb-access-logs.config

다음 구성 파일을 사용하여 Application Load Balancer가 있는 환경에 대해 액세스 로그를 업로드하도록 할 수 있습니다.

option_settings: aws:elbv2:loadbalancer: AccessLogsS3Bucket: DOC-EXAMPLE-BUCKET AccessLogsS3Enabled: 'true' AccessLogsS3Prefix: beanstalk-alb
.ebextensions/alb-default-process.config

다음 구성 파일은 기본 프로세스의 상태 확인 및 고정성 설정을 수정합니다.

option_settings: aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '15' HealthCheckPath: / HealthCheckTimeout: '5' HealthyThresholdCount: '3' UnhealthyThresholdCount: '5' Port: '80' Protocol: HTTP StickinessEnabled: 'true' StickinessLBCookieDuration: '43200'
예 .ebextensions/alb-secure-listener.config

다음 구성 파일은 포트 443에서 보안 리스너 및 일치하는 프로세스를 추가합니다.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS
예 .ebextensions/alb-admin-rule.config

다음 구성 파일은 요청 경로가 /admin인 트래픽을 포트 4443에서 수신 대기하는 admin 프로세스로 라우팅하는 규칙이 있는 보안 리스너를 추가합니다.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS Rules: admin SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS aws:elasticbeanstalk:environment:process:admin: HealthCheckPath: /admin Port: '4443' Protocol: HTTPS aws:elbv2:listenerrule:admin: PathPatterns: /admin/* Priority: 1 Process: admin