공유 Application Load Balancer 구성 - AWS Elastic Beanstalk

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

공유 Application Load Balancer 구성

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

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

참고

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

소개

공유 로드 밸런서는 Amazon Elastic Compute Cloud(Amazon EC2) 서비스를 사용하여 직접 생성 및 관리한 다음 여러 Elastic Beanstalk 환경에서 사용하는 로드 밸런서입니다.

로드 밸런싱된 조정 환경을 생성하고 Application Load Balancer를 사용하도록 선택할 때마다 Elastic Beanstalk는 기본적으로 사용자 환경 전용 로드 밸런서를 만듭니다. Application Load Balancer가 무엇인지와 Elastic Beanstalk 환경에서 어떻게 작동하는지 알아보려면 Elastic Beanstalk에 대한 Application Load Balancer 구성 소개를 참조하세요.

경우에 따라 여러 개의 전용 로드 밸런서를 사용하는 데 드는 비용을 절감할 수 있습니다. 이는 애플리케이션이 모놀리식 서비스 대신 마이크로서비스 제품군인 경우와 같이 여러 환경이 있을 때 유용할 수 있습니다. 이러한 경우 공유 로드 밸런서를 사용하도록 선택할 수 있습니다.

공유 로드 밸런서를 사용하려면 먼저 Amazon EC2에서 이를 생성하고 하나 이상의 리스너를 추가합니다. Elastic Beanstalk 환경을 만드는 동안 로드 밸런서를 제공하고 리스너 포트를 선택합니다. Elastic Beanstalk는 리스너를 환경의 기본 프로세스와 연결합니다. 사용자 지정 리스너 규칙을 추가하여 특정 호스트 헤더 및 경로에서 다른 환경 프로세스로 트래픽을 라우팅할 수 있습니다.

Elastic Beanstalk가 공유 로드 밸런서에 태그를 추가합니다. 태그 이름은 elasticbeanstalk:shared-elb-environment-count이고 값은 이 로드 밸런서를 공유하는 환경 수입니다.

공유 로드 밸런서를 사용하는 것은 전용 로드 밸런서를 사용하는 것과 여러 가지 면에서 차이가 있습니다.

관련 전용 Application Load Balancer 공유 Application Load Balancer

관리

Elastic Beanstalk는 로드 밸런서, 리스너, 리스너 규칙 및 프로세스(대상 그룹)를 만들고 관리합니다. 환경을 종료하면 Elastic Beanstalk도 해당 환경을 제거합니다. 해당 옵션을 선택하는 경우 Elastic Beanstalk는 로드 밸런서 액세스 로그 캡처를 설정할 수 있습니다.

Elastic Beanstalk 외부에서 로드 밸런서와 리스너를 만들고 관리합니다. Elastic Beanstalk는 기본 규칙과 기본 프로세스를 만들고 관리하며, 사용자가 규칙 및 프로세스를 추가할 수 있습니다. Elastic Beanstalk는 환경 생성 중에 추가된 리스너 규칙 및 프로세스를 제거합니다.

리스너 규칙

Elastic Beanstalk는 각 리스너에 대한 기본 규칙을 생성하여 모든 트래픽을 리스너의 기본 프로세스로 라우팅합니다.

Elastic Beanstalk는 기본 규칙을 포트 80 리스너(있는 경우)에만 연결합니다. 사용자가 다른 기본 리스너 포트를 선택하는 경우 기본 규칙을 해당 포트에 연결해야 합니다(Elastic Beanstalk 콘솔 및 EB CLI에서 자동으로 수행).

로드 밸런서를 공유하는 환경 간의 리스너 규칙 조건 충돌을 해결하기 위해 Elastic Beanstalk는 환경의 CNAME을 호스트 헤더 조건으로 리스너 규칙에 추가합니다.

Elastic Beanstalk는 로드 밸런서를 공유하는 환경 전체에서 규칙 우선 순위 설정을 상대적으로 취급하고 생성 시 절대 우선 순위에 매핑합니다.

보안 그룹

Elastic Beanstalk는 기본 보안 그룹을 생성하여 로드 밸런서에 연결합니다.

사용자는 로드 밸런서에 사용할 하나 이상의 보안 그룹을 구성할 수 있으며, 구성하지 않으면 Elastic Beanstalk가 Elastic Beanstalk에 의해 관리되는 기존 보안 그룹이 로드 밸런서에 이미 연결되어 있는지 확인합니다. 이미 연결되어 있지 않으면 Elastic Beanstalk는 보안 그룹을 생성하여 로드 밸런서에 연결합니다. Elastic Beanstalk는 로드 밸런서를 공유하는 마지막 환경이 종료되면 이 보안 그룹을 삭제합니다.

업데이트

환경 생성 후 Application Load Balancer를 업데이트할 수 있습니다. 리스너, 리스너 규칙 및 프로세스를 편집할 수 있고, 로드 밸런서 액세스 로그 캡처를 구성할 수 있습니다.

Application Load Balancer에서 액세스 로그 캡처를 구성하는 데 Elastic Beanstalk를 사용할 수 없으며 환경 생성 후에는 리스너 및 리스너 규칙을 업데이트할 수 없습니다. 프로세스(대상 그룹)만 업데이트할 수 있습니다. 액세스 로그 캡처를 구성하고 리스너 및 리스너 규칙을 업데이트하려면 Amazon EC2를 사용합니다.

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

Elastic Beanstalk 콘솔을 사용하여, 환경 생성 중에 공유 Application Load Balancer를 구성할 수 있습니다. 환경에서 사용할 계정의 공유 가능 로드 밸런서 중 하나를 선택하고, 기본 리스너 포트를 선택하고, 추가 프로세스 및 리스너 규칙을 구성할 수 있습니다.

환경이 생성된 후에는 Application Load Balancer 콘솔에서 공유 Application Load Balancer 구성을 편집할 수 없습니다. 리스너, 리스너 규칙, 프로세스(대상 그룹) 및 액세스 로그 캡처를 구성하려면 Amazon EC2를 사용합니다.

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

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

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

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

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

    또는 용량 구성 범주에서 로드 밸런싱 수행 환경 유형을 구성합니다. 세부 정보는 Capacity을 참조하세요.

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

  7. Application Load Balancer 옵션을 선택하고 공유(Shared) 옵션을 선택합니다(이미 선택되어 있지 않은 경우).

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

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

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

공유 Application Load Balancer 설정

공유 Application Load Balancer

이 단원에서는 환경에 사용할 공유 Application Load Balancer를 선택하고 기본 트래픽 라우팅을 구성합니다.

여기에서 공유 Application Load Balancer를 구성하기 전에 Amazon EC2를 사용하여 계정에 하나 이상의 리스너와 공유하기 위한 Application Load Balancer를 하나 이상 정의합니다. 아직 선택하지 않은 경우 로드 밸런서 관리(Manage load balancers)를 선택할 수 있습니다. Elastic Beanstalk는 새 브라우저 탭에서 Amazon EC2 콘솔을 엽니다.

Elastic Beanstalk 외부에서 공유 로드 밸런서를 구성했으면 이 콘솔 섹션에서 다음 설정을 구성합니다.

  • 로드 밸런서 ARN(Load balancer ARN) – 이 환경에서 사용할 공유 로드 밸런서입니다. 로드 밸런서 목록에서 선택하거나 로드 밸런서 Amazon 리소스 이름(ARN)을 입력합니다.

  • 기본 리스너 포트(Default listener port) – 공유 로드 밸런서가 수신 대기하는 리스너 포트입니다. 기존 리스너 포트 목록에서 선택합니다. 호스트 헤더에 환경의 CNAME이 있는 이 리스너의 트래픽은 이 환경의 기본 프로세스로 라우팅됩니다.

Application Load Balancer 구성 - 공유 로드 밸런서 선택

프로세스

이 목록을 사용하여 공유 로드 밸런서에 대해 프로세스를 지정합니다. 프로세스는 리스너가 트래픽을 라우팅하기 위한 대상입니다. 처음에 목록에는 기본 프로세스가 표시되는데, 이 프로세스는 기본 리스너에서 트래픽을 수신합니다.

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

  2. 환경 프로세스(Environment process) 대화 상자를 사용하여 설정을 편집한 다음 저장(Save)을 선택합니다.

프로세스를 추가하려면
  1. 프로세스 추가(Add process)를 선택합니다.

  2. 환경 프로세스(Environment process) 대화 상자에서 원하는 설정을 구성한 다음 추가(Add)를 선택합니다.

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) – 규칙의 우선 순위입니다. 우선 순위 숫자가 작을수록 우선 적용됩니다. 리스너 규칙의 우선 순위는 고유해야 합니다. Elastic Beanstalk는 공유 환경 전체에서 규칙 우선 순위를 상대적으로 취급하고 생성 시 절대 우선 순위에 매핑합니다.

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

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

Application Load Balancer 구성 - 규칙 목록

예제: 안전한 마이크로서비스 기반 애플리케이션에 공유 Application Load Balancer 사용

이 예제에서 애플리케이션은 여러 마이크로 서비스로 구성되며 각 서비스는 하나의 Elastic Beanstalk 환경으로 구현됩니다. 또한 엔드 투 엔드 트래픽 암호화가 필요합니다. 이 예제에서는 사용자 요청을 처리하는 주 프로세스와 관리 요청을 처리하는 별도의 프로세스가 있는 마이크로서비스 환경 중 하나를 보여줍니다.

이러한 요구 사항을 충족하려면 Amazon EC2를 사용하여 마이크로서비스 간에 공유할 Application Load Balancer를 생성합니다. 포트 443과 HTTPS 프로토콜에 보안 리스너를 추가합니다. 그런 다음, 마이크로서비스 도메인당 하나씩, 여러 SSL 인증서를 리스너에 추가합니다. Application Load Balancer 및 보안 리스너 생성에 대한 자세한 내용은 Application Load Balancers 사용 설명서Application Load Balancer 생성Application Load Balancer용 HTTPS 리스너 생성을 참조하세요.

Elastic Beanstalk에서 공유 Application Load Balancer를 사용하도록 각 마이크로서비스 환경을 구성하고 기본 리스너 포트를 443으로 설정합니다. 여기서 설명하는 환경의 경우 기본 프로세스가 HTTPS를 사용하여 포트 443에서 수신함을 나타내고 다른 경로의 관리자 트래픽에 대한 프로세스 및 리스너 규칙을 추가합니다.

이 예제용 공유 로드 밸런서를 구성하려면
  1. 공유 Application Load Balancer(Shared Application Load Balancer) 섹션에서 로드 밸런서를 선택한 다음 기본 리스너 포트(Default listener)443을 선택합니다. 이 리스너 포트가 로드 밸런서에 있는 유일한 리스너인 경우 이미 선택되어 있습니다.

    Application Load Balancer 구성 - 보안 리스너 추가
  2. 기본 프로세스를 HTTPS로 구성합니다. 기본 프로세스를 선택한 다음 작업에서 편집을 선택합니다. 포트에서 443를 입력합니다. 프로토콜에서 HTTPS를 선택합니다.

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

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

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

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

eb create를 실행하면 EB CLI는 로드 밸런서 유형을 선택하라는 메시지를 표시합니다. application(기본값)을 선택하고 계정에 하나 이상의 공유 가능 Application Load Balancer가 있는 경우 EB CLI에서 공유 Application Load Balancer를 사용할지 여부도 묻습니다. y로 응답하면 로드 밸런서와 기본 포트를 선택하라는 메시지가 표시됩니다.

$ 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): Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y Select a shared load balancer 1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e 2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 (default is 1): 2 Select a listener port for your shared load balancer 1) 80 2) 100 3) 443 (default is 1): 3

명령 옵션을 사용하여 공유 로드 밸런서를 지정할 수도 있습니다.

$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443

공유 Application Load Balancer 네임스페이스

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

  • aws:elasticbeanstalk:environment – 환경의 로드 밸런서 유형을 선택하고 공유 로드 밸런서를 사용하도록 Elastic Beanstalk에 지정합니다.

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

  • aws:elbv2:loadbalancer – 공유 Application Load Balancer ARN 및 보안 그룹을 구성합니다.

  • aws:elbv2:listener – 리스너 규칙을 나열하여 공유 Application Load Balancer의 리스너를 환경 프로세스와 연결합니다.

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

  • aws:elasticbeanstalk:environment:process – 상태 확인을 구성하고 환경의 인스턴스에서 실행되는 프로세스의 포트 및 프로토콜을 지정합니다.

.ebextensions/application-load-balancer-shared.config

공유 Application Load Balancer를 시작하려면 Elastic Beanstalk 콘솔, EB CLI 또는 API를 사용하여 로드 밸런서 유형을 application으로 설정하고 공유 로드 밸런서를 사용하도록 선택합니다. 구성 파일을 사용하여 공유 로드 밸런서를 구성합니다.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
참고

이 옵션은 환경을 만드는 동안에만 구성할 수 있습니다.

예 .ebextensions/alb-shared-secure-listener.config

다음 구성 파일은 공유 로드 밸런서에 포트 443의 기본 보안 리스너를 선택하고 기본 프로세스가 포트 443에서 수신하도록 설정합니다.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default aws:elasticbeanstalk:environment:process:default: Port: '443' Protocol: HTTPS
예 .ebextensions/alb-shared-admin-rule.config

다음 구성 파일은 이전 예제를 기반으로 하여 요청 경로가 /admin인 트래픽을 포트 4443에서 수신 대기하는 admin 프로세스로 라우팅하는 규칙을 추가합니다.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default,admin aws:elasticbeanstalk:environment:process:default: 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