Elastic Beanstalk 환경에 대한 Auto Scaling 그룹 - AWS Elastic Beanstalk

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

Elastic Beanstalk 환경에 대한 Auto Scaling 그룹

AWS Elastic Beanstalk 환경에는 사용자의 환경에서 Amazon EC2 인스턴스를 관리하는 Auto Scaling 그룹이 포함됩니다. 단일 인스턴스 환경에서 Auto Scaling 그룹은 실행 중인 인스턴스가 항상 한 개가 있도록 보장합니다. 로드 밸런싱된 환경에서 사용자가 실행할 다양한 인스턴스로 이루어진 그룹을 구성하면 Auto Scaling에서는 로드를 기준으로 필요에 따라 인스턴스를 추가하거나 제거합니다.

또한 Auto Scaling 그룹은 환경의 인스턴스에 대한 시작 구성을 적용합니다. 시작 구성을 수정하여 인스턴스 유형, 키 페어, Amazon Elastic Block Store(Amazon EBS) 스토리지 및 인스턴스를 시작하는 경우에만 구성할 수 있는 기타 설정을 변경할 수 있습니다.

Auto Scaling 그룹은 두 가지 Amazon CloudWatch 경보를 사용하여 조정 작업을 트리거합니다. 기본 트리거는 각 인스턴스의 평균 아웃바운드 네트워크 트래픽이 5분 이상 6MiB보다 높거나 2MiB보다 낮은 경우를 조정합니다. Auto Scaling을 효과적으로 사용하려면 애플리케이션, 인스턴스 유형 및 서비스 요구 사항에 적절한 트리거를 구성합니다. 지연 시간, 디스크 I/O, CPU 사용률 및 요청 수 등 여러 통계를 기준으로 조정할 수 있습니다.

예측 가능한 피크 트래픽 기간에 환경에서 Amazon EC2 인스턴스의 사용을 최적화하려면 일정에 따라 인스턴스 개수를 변경하도록 Auto Scaling 그룹을 구성합니다. 매일 또는 매주 반복되는 그룹 구성에 대한 변경을 예약하거나 일회성 변경을 예약해 사이트에 많은 트래픽을 일으키는 마케팅 이벤트에 대비할 수 있습니다.

옵션으로 Elastic Beanstalk는 환경에 대해 온디맨드 인스턴스와 스팟 인스턴스를 결합할 수 있습니다. 용량 리밸런싱을 활성화하여 스팟 인스턴스의 가용성에 영향을 주는 변경 사항을 모니터링하고 자동으로 대응하도록 Amazon EC2 Auto Scaling을 구성할 수 있습니다.

Auto Scaling은 시작하는 각 Amazon EC2 인스턴스의 상태를 모니터링합니다. 인스턴스가 예기치 않게 종료된 경우 Auto Scaling은 종료를 감지하고 대체 인스턴스를 시작합니다. 로드 밸런서의 상태 확인 메커니즘을 사용하도록 그룹을 구성하려면 Auto Scaling 상태 확인 설정 단원을 참조하세요.

Elastic Beanstalk 콘솔, EB CLI 또는 구성 옵션을 사용하여 환경에 맞게 Auto Scaling을 구성할 수 있습니다.

스팟 인스턴스 지원

Amazon EC2 스팟 인스턴스를 활용하기 위해서는 사용자 환경에 대해 스팟 옵션을 활성화하면 됩니다. 그러면 해당 환경의 Auto Scaling 그룹이 Amazon EC2 구매 옵션을 결합하고 온디맨드 인스턴스와 스팟 인스턴스를 혼합하여 유지 관리합니다.

이 주제에서는 환경에 대한 스팟 인스턴스 요청을 활성화하는 다음 방법을 설명합니다.

중요

스팟 인스턴스에 대한 수요는 매 순간 상당히 다를 수 있으며 스팟 인스턴스의 가용성도 사용 가능한 미사용 Amazon EC2 인스턴스의 양에 따라 상당히 다를 수 있습니다. 스팟 인스턴스가 중단될 가능성은 항상 있습니다.

이러한 중단이 애플리케이션에 미치는 영향을 최소화하려면 Amazon EC2 Auto Scaling에 포함된 용량 리밸런싱 옵션을 활성화합니다. 이 기능을 활성화하면 EC2는 Auto Scaling 그룹의 스팟 인스턴스가 중단되기 전에 인스턴스를 자동으로 교체하려고 시도합니다. 이 기능을 활성화하려면 Elastic Beanstalk 콘솔을 사용해 Auto Scaling 그룹을 구성합니다. 또는 aws:autoscaling:asg 네임스페이스에 Elastic Beanstalk EnableCapacityRebalancing 구성 옵션true로 설정할 수 있습니다.

자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서용량 리밸런싱Linux 인스턴스용 Amazon EC2 사용 설명서스팟 인스턴스 중단을 참조하세요.

Elastic Beanstalk에서는 스팟 기능을 지원하는 몇 가지 구성 옵션을 제공합니다. Auto Scaling 그룹 구성에 대해 설명하는 다음 단원에서 설명되어 있습니다.

aws:ec2:instances 네임 스페이스에서 해당 옵션 중 두 가지는 특별히 주의할 필요가 있습니다.

  • SpotFleetOnDemandBase

  • SpotFleetOnDemandAboveBasePercentage

해당 두 옵션은 aws:autoscaling:asg 네임스페이스의 MinSize 옵션과 연관이 있습니다.

  • MinSize만이 환경의 초기 용량, 즉 실행하려는 최소 인스턴스 수를 결정합니다.

  • SpotFleetOnDemandBase는 초기 용량에 영향을 주지 않습니다. 스팟이 활성화된 경우 이 옵션만이 스팟 인스턴스가 고려되기 전에 프로비저닝되는 온디맨드 인스턴스 수를 결정합니다.

  • SpotFleetOnDemandBaseMinSize보다 작은 경우를 가정합니다. 그래도 여전히 MinSize 인스턴스를 초기 용량으로 가져올 것입니다. 적어도 그 중 SpotFleetOnDemandBase는 온디맨드 인스턴스여야 합니다.

  • SpotFleetOnDemandBaseMinSize보다 큰 경우를 가정합니다. 환경을 확장함에 따라 적어도 두 값의 차이와 동일한 추가 인스턴스 수를 확보하게 됩니다. 즉, SpotFleetOnDemandBase 요구 사항을 만족하기 전에 적어도 추가 (SpotFleetOnDemandBase - MinSize) 인스턴스를 온디맨드로 확보하게 됩니다.

프로덕션 환경에서 스팟 인스턴스는 로드 밸런싱 수행 및 확장 가능 환경의 일부로 특히 유용합니다. 단일 인스턴스 환경에서는 스팟을 사용하지 않는 것이 좋습니다. 스팟 인스턴스를 사용할 수 없는 경우 환경의 전체 용량(단일 인스턴스)이 손실될 수 있습니다. 개발 또는 테스트를 위해 여전히 단일 인스턴스 환경에서 스팟 인스턴스를 사용할 수 있습니다. 이 경우 SpotFleetOnDemandBaseSpotFleetOnDemandAboveBasePercentage를 모두 0으로 설정해야 합니다. 다른 설정은 온디맨드 인스턴스를 생성합니다.

주의
  • 일부 기존 AWS 계정은 스팟 인스턴스를 지원하지 않는 기본 인스턴스 유형(예: t1.micro)을 Elastic Beanstalk에 제공할 수 있습니다. 스팟 인스턴스 요청을 활성화하고 None of the instance types you specified supports Spot(지정한 인스턴스 유형이 스팟을 지원하지 않음) 오류가 표시되면 스팟을 지원하는 인스턴스 유형을 구성해야 합니다. 스팟 인스턴스 유형을 선택하려면 스팟 인스턴스 어드바이저를 사용합니다.

  • 스팟 인스턴스 요청을 활성화하려면 Amazon EC2 시작 템플릿을 사용해야 합니다. 환경을 생성하거나 업데이트하는 동안 이러한 기능을 구성하면 Elastic Beanstalk에서 Amazon EC2 시작 템플릿을 사용하도록 환경 구성을 시도합니다(환경에서 아직 템플릿을 사용하지 않는 경우). 이 경우 사용자 정책에 필요한 권한이 없으면 환경 생성 또는 업데이트가 실패할 수 있습니다. 따라서 관리형 사용자 정책을 사용하거나 사용자 지정 정책에 필요한 권한을 추가하는 것이 좋습니다. 필요한 권한에 대한 자세한 내용은 맞춤형 사용자 지정 정책 생성 단원을 참조하십시오.

다음 예제에서는 다양한 조정 옵션을 설정하는 다양한 시나리오를 보여줍니다. 모든 예는 스팟 인스턴스 요청이 활성화된 로드 밸런싱 수행 환경이라고 가정합니다.

예 1: 초기 용량의 일부인 온디맨드 및 스팟
옵션 설정
옵션 네임스페이스

MinSize

aws:autoscaling:asg

10

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

이 예에서 환경은 10개의 인스턴스로 시작합니다. 그 중 7개는 온디맨드(기본 4개, 6개의 50%는 기본 이상)이고 3개는 스팟입니다. 환경은 최대 24개의 인스턴스까지 확장할 수 있습니다. 확장 시, 4개의 기본 온디맨드 인스턴스 이상인 플릿의 온디맨드 부분은 50%로 유지되며 전체적으로 최대 24개까지 확장됩니다. 이 중 14개는 온디맨드(기본 4개, 20개 중 50%는 기본 이상)이고 10개는 스팟입니다.

예 2: 모든 온디맨드 초기 용량
옵션 설정
옵션 네임스페이스

MinSize

aws:autoscaling:asg

4

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

이 예에서 환경은 네 개의 인스턴스로 시작하며 모두 온디맨드 인스턴스입니다. 환경은 최대 24개의 인스턴스까지 확장할 수 있습니다. 확장 시, 4개의 기본 온디맨드 인스턴스 이상인 플릿의 온디맨드 부분은 50%로 유지되며 전체적으로 최대 24개까지 확장됩니다. 이 중 14개는 온디맨드(기본 4개, 20개 중 50%는 기본 이상)이고 10개는 스팟입니다.

예 3: 초기 용량을 초과하는 추가 온디맨드 기본
옵션 설정
옵션 네임스페이스

MinSize

aws:autoscaling:asg

3

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

이 예에서 환경은 세 개의 인스턴스로 시작하며 모두 온디맨드 인스턴스입니다. 환경은 최대 24개의 인스턴스까지 확장할 수 있습니다. 초기의 세 개 인스턴스에 처음 추가되는 인스턴스는 네 개의 기본 온디맨드 인스턴스를 완성하기 위한 온디맨드 인스턴스입니다. 계속 확장됨에 따라, 4개의 기본 온디맨드 인스턴스 이상인 플릿의 온디맨드 부분은 50%로 유지되며 전체적으로 최대 24개까지 확장됩니다. 이 중 14개는 온디맨드(기본 4개, 20개 중 50%는 기본 이상)이고 10개는 스팟입니다.

Elastic Beanstalk 콘솔을 사용하여 Auto Scaling 그룹 구성

Elastic Beanstalk 콘솔에서 환경의 구성(Configuration) 페이지에 있는 용량(Capacity)을 편집하여 Auto Scaling의 작동 방식을 구성할 수 있습니다.

Elastic Beanstalk 콘솔에서 Auto Scaling 그룹을 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

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

    참고

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

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

  4. [용량] 구성 범주에서 [편집]을 선택합니다.

  5. Auto Scaling 그룹(Auto Scaling group) 섹션에서 다음 설정을 구성합니다.

    • 환경 유형(Environment type) - 로드 밸런싱 수행(Load balanced)을 선택합니다.

    • 최소 인스턴스(Min instances) - 항상 그룹에 있어야 하는 최소 EC2 인스턴스 수입니다. 그룹은 최소 개수로 시작해 확장 트리거 조건이 충족되면 인스턴스를 추가합니다.

    • 최대 인스턴스(Max instances) - 항상 그룹에 있어야 하는 최대 EC2 인스턴스 수입니다.

      참고

      롤링 업데이트를 사용하는 경우 최대 인스턴스 개수는 롤링 업데이트에 대한 작동 중인 최소 인스턴스 수 설정보다 커야 합니다.

    • 플릿 구성 - 기본값은 온디맨드 인스턴스입니다. 스팟 인스턴스 요청을 활성화하려면 결합된 구매 옵션 및 인스턴스를 선택합니다.

      스팟 인스턴스 요청을 활성화하도록 선택하면 다음의 옵션이 활성화됩니다.

      • 최대 스팟 가격 - 스팟 인스턴스에 대한 최고 가격 옵션 권장 사항에 대해서는 Linux 인스턴스용 Amazon EC2 사용 설명서스팟 인스턴스 요금 기록을 참조하세요.

      • 온디맨드 기본 - 환경 확장에 따라 스팟 인스턴스를 고려하기 전에 Auto Scaling 그룹이 프로비저닝하는 최소 온디맨드 인스턴스 수입니다.

      • 온디맨드 기본 초과 - Auto Scaling 그룹이 온디맨드 인스턴스를 초과하여 프로비저닝하는 추가 용량의 일부인 온디맨드 인스턴스의 비율입니다.

        참고

        온디맨드 기본온디맨드 기본 초과 옵션은 앞에서 나열한 최소최대 인스턴스와 연관이 있습니다. 이러한 옵션에 대한 자세한 정보와 예시는 스팟 인스턴스 지원 단원을 참조하세요.

      • 용량 리밸런싱 활성화 - 이 옵션은 Auto Scaling 그룹에 스팟 인스턴스가 하나 이상 있는 경우에만 관련이 있습니다. 이 기능을 활성화하면 EC2는 Auto Scaling 그룹의 스팟 인스턴스가 중단되기 전에 인스턴스를 자동으로 교체하여 스팟 인스턴스의 애플리케이션 중단을 최소화하려고 시도합니다. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서용량 리밸런싱을 참조하세요.

    • 인스턴스 유형(Instance type) - 애플리케이션을 실행하기 위해 시작되는 Amazon EC2 인스턴스의 유형입니다. 자세한 내용은 인스턴스 타입 단원을 참조하세요.

    • AMI ID - 사용자 환경에서 Amazon EC2 인스턴스를 시작하기 위해 Elastic Beanstalk에서 사용하는 머신 이미지입니다. 자세한 내용은 AMI ID 단원을 참조하세요.

    • 가용 영역(Availability Zones) - 환경의 인스턴스를 분산할 가용 영역의 수를 선택합니다. 기본적으로 Auto Scaling 그룹은 사용 가능한 모든 영역에서 균일하게 인스턴스를 시작합니다. 인스턴스를 더 적은 수의 영역에 집중시키려면 사용할 영역 수를 선택합니다. 프로덕션 환경의 경우 가용 영역 하나를 사용할 수 없을 때 애플리케이션을 사용할 수 있도록 가용 영역을 두 개 이상 사용합니다.

    • 배치(Placement)(선택 사항) - 사용할 가용 영역을 선택합니다. 인스턴스를 특정 영역의 리소스에 연결해야 하는 경우 또는 특정 영역에서만 사용할 수 있는 예약 인스턴스를 구입한 경우에 이 설정을 사용합니다. 사용자 지정 VPC에서 환경을 시작한 경우에는 이 옵션을 구성할 수 없습니다. 사용자 지정 VPC에서 환경에 할당한 서브넷의 가용 영역을 선택합니다.

    • 조정 쿨다운(Scaling cooldown) - 조정 후 계속해서 트리거를 평가하기 전에 인스턴스가 시작되거나 종료될 때까지 대기하는 시간(초)입니다. 자세한 내용은 조정 쿨다운을 참조하세요.

    
            Elastic Beanstalk Auto Scaling 구성 창
  6. 변경 사항을 저장하려면 페이지 하단에서 적용을 선택합니다.

EB CLI를 사용하여 Auto Scaling 그룹 구성

eb create 명령을 사용하여 환경을 생성하면 사용자 환경의 Auto Scaling 그룹과 관련된 몇 가지 옵션을 지정할 수 있습니다. 이러한 몇 개의 옵션을 통해 환경의 용량을 제어할 수 있습니다.

--single

Amazon EC2 인스턴스 하나가 있고 로드 밸런서는 없는 환경을 생성합니다. 이 옵션을 사용하지 않으면 생성된 환경에 로드 밸런서가 추가됩니다.

--enable-spot

환경에 대한 스팟 인스턴스 요청을 활성화합니다.

eb create 명령에 대한 다음 옵션은 --enable-spot과 함께 사용해야 합니다.

--instance-types

환경에서 사용할 Amazon EC2 인스턴스 유형을 나열합니다.

--spot-max-price

스팟 인스턴스에 대해 지불하려는 단위 시간당 최고 가격(미국 달러)입니다. 스팟 인스턴스에 대한 최고 가격 옵션 권장 사항에 대해서는 Linux 인스턴스용 Amazon EC2 사용 설명서스팟 인스턴스 요금 기록을 참조하세요.

--on-demand-base-capacity

환경 확장에 따라 스팟 인스턴스를 고려하기 전에 Auto Scaling 그룹이 프로비저닝하는 최소 온디맨드 인스턴스 수입니다.

--on-demand-above-base-capacity

Auto Scaling 그룹이 --on-demand-base-capacity 옵션에 지정된 인스턴스 수를 초과하여 Auto Scaling 그룹에 프로비저닝하는 추가 용량의 일부인 온디맨드 인스턴스의 비율입니다.

다음 예에서는 새 환경에 대한 스팟 인스턴스 요청을 활성화하도록 환경을 생성하고 Auto Scaling 그룹을 구성합니다. 이 예제의 경우 사용 가능한 인스턴스 유형이 세 가지 있습니다.

$ eb create --enable-spot --instance-types "t2.micro,t3.micro,t3.small"
중요

--instance-type(‘s’ 없음)이라고 부르는 유사한 이름의 옵션이 있어 온디맨드 인스턴스를 처리할 때에만 EB CLI가 인식할 수 있습니다. --instance-type("s" 없음)을 --enable-spot 옵션과 함께 사용하지 마세요. 함께 사용하면 EB CLI에서 이를 무시합니다. 그 대신 --instance-types("s" 포함)를 --enable-spot 옵션과 함께 사용합니다.

구성 옵션

Elastic Beanstalk는 aws:autoscaling:asgaws:ec2:instances라는 두 네임스페이스에서 Auto Scaling 설정에 대한 구성 옵션을 제공합니다.

aws:autoscaling:asg 네임스페이스

aws:autoscaling:asg 네임스페이스는 전체 확장 및 가용성에 대한 옵션을 제공합니다.

다음 구성 파일 예에서는 2 ~ 4개의 인스턴스, 특정 가용 영역 및 12분(720초)의 휴지 기간을 사용하도록 Auto Scaling 그룹을 구성합니다. 스팟 인스턴스에 대해 용량 리밸런싱이 활성화되었습니다. 이 마지막 옵션은 이 뒤에 나오는 구성 파일 예제에 보이는 것과 같이 aws:ec2:instances 네임스페이스의 EnableSpottrue로 설정되었을 경우에만 적용됩니다.

option_settings: aws:autoscaling:asg: Availability Zones: Any Cooldown: '720' Custom Availability Zones: 'us-west-2a,us-west-2b' MaxSize: '4' MinSize: '2' EnableCapacityRebalancing: true

aws:ec2:instances 네임스페이스

aws:ec2:instances 네임스페이스는 스팟 인스턴스 관리를 포함하여 환경의 인스턴스와 관련된 옵션을 제공합니다. 이 옵션은 aws:autoscaling:launchconfigurationaws:autoscaling:asg를 보완합니다.

환경 구성을 업데이트하고 InstanceTypes 옵션에서 하나 이상의 인스턴스 유형을 제거하면 Elastic Beanstalk는 제거된 인스턴스 유형에서 실행 중인 모든 Amazon EC2 인스턴스를 종료합니다. 그러면 환경의 Auto Scaling 그룹에서 필요에 따라 현재 지정된 인스턴스 유형을 사용하여 원하는 용량을 완료하는 데 필요한 새 인스턴스를 시작합니다.

다음 구성 파일 예에서는 환경에 대한 스팟 인스턴스 요청을 활성화하도록 환경을 생성하고 Auto Scaling 그룹을 구성합니다. 사용 가능한 인스턴스 유형이 세 가지 있습니다. 기본 용량에 최소 하나의 온디맨드 인스턴스를 사용하며, 모든 추가 용량에 대해 온디맨드 인스턴스 33% 유지가 사용됩니다.

option_settings: aws:ec2:instances: EnableSpot: true InstanceTypes: 't2.micro,t3.micro,t3.small' SpotFleetOnDemandBase: '1' SpotFleetOnDemandAboveBasePercentage: '33'

스팟 인스턴스 유형을 선택하려면 스팟 인스턴스 어드바이저를 사용합니다.