튜토리얼: 대상으로 지정된 용량 예약을 사용하여 온디맨드 인스턴스 시작 - Amazon Elastic Compute Cloud

튜토리얼: 대상으로 지정된 용량 예약을 사용하여 온디맨드 인스턴스 시작

이 자습서에서는 EC2 플릿이 targeted 용량 예약으로 온디맨드 인스턴스를 시작하기 위해 수행해야 하는 모든 단계를 안내합니다.

먼저 온디맨드 인스턴스를 시작할 때 targeted 온디맨드 용량 예약을 사용하도록 플릿을 구성하는 방법에 대해 학습합니다. 또한 총 온디맨드 목표 용량이 사용 가능한 미사용 용량 예약 수를 초과할 경우 플릿이 지정된 할당 전략을 사용하여 나머지 목표 용량을 시작할 인스턴스 풀을 선택하도록 플릿을 구성하는 방법도 학습합니다.

EC2 플릿 구성

이 자습서에서 플릿 구성은 다음과 같습니다.

  • 목표 용량: 온디맨드 인스턴스 10개

  • 총 미사용 targeted 용량 예약: 6개(플릿의 온디맨드 목표 용량인 온디맨드 인스턴스 10개보다 적음)

  • 용량 예약 풀 수: 2개(us-east-1aus-east-1b)

  • 풀당 용량 예약 수: 3개

  • 온디맨드 할당 전략: lowest-price(미사용 용량 예약 수가 온디맨드 목표 용량보다 적을 경우 플릿에서 온디맨드 할당 전략을 기반으로 나머지 온디맨드 용량을 시작할 풀 결정)

    lowest-price 할당 전략 대신 prioritized 할당 전략을 사용할 수도 있습니다.

1단계: 용량 예약 생성

create-capacity-reservation 명령을 사용하여 us-east-1a에 대해 용량 예약 3개, us-east-1b에 대해 또 다른 용량 예약 3개를 생성합니다. 가용 영역을 제외하고 용량 예약의 다른 속성은 동일합니다.

us-east-1a의 용량 예약 3개

aws ec2 create-capacity-reservation \ --availability-zone us-east-1a\ --instance-type c5.xlarge\ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

결과 용량 예약 ID의 예

cr-1234567890abcdef1

us-east-1b의 용량 예약 3개

aws ec2 create-capacity-reservation \ --availability-zone us-east-1b\ --instance-type c5.xlarge\ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

결과 용량 예약 ID의 예

cr-54321abcdef567890

2단계: 용량 예약 리소스 그룹 생성

resource-groups 서비스 및 create-group 명령을 사용하여 용량 예약 리소스 그룹을 생성합니다. 이 예제에서 리소스 그룹의 이름은 my-cr-group입니다. 리소스 그룹을 생성해야 하는 이유에 대한 자세한 내용은 온디맨드 인스턴스에 용량 예약 사용 섹션을 참조하세요.

aws resource-groups create-group \ --name my-cr-group \ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'

3단계: 용량 예약을 용량 예약 리소스 그룹에 추가

resource-groups 서비스 및 group-resources 명령을 사용하여 1단계에서 생성한 용량 예약을 용량 예약 리소스 그룹에 추가합니다. 해당 ARN을 기준으로 온디맨드 용량 예약을 참조해야 합니다.

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890

출력 예시

{ "Failed": [], "Succeeded": [ "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ] }

(선택 사항) 4단계: 리소스 그룹에서 용량 예약 확인

resource-groups 서비스 및 list-group-resources 명령을 사용하여 선택적으로 리소스 그룹을 설명하여 해당 용량 예약을 확인합니다.

aws resource-groups list-group-resources --group my-cr-group

출력 예시

{ "ResourceIdentifiers": [ { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1" }, { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" } ] }

5단계: 용량 예약이 특정 리소스 그룹을 대상으로 하도록 지정하는 시작 템플리트 생성

Create-launch-template 명령을 사용하여, 사용할 용량 예약을 지정할 시작 템플릿을 생성합니다. 이 예에서 플릿은 리소스 그룹에 추가된 targeted 용량 예약을 사용합니다. 따라서 시작 템플릿 데이터는 용량 예약이 특정 리소스 그룹을 대상으로 하도록 지정합니다. 이 예제에서 시작 템플릿의 이름은 my-launch-template입니다.

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"ImageId": "ami-0123456789example", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } }'

(선택 사항) 6단계: 시작 템플릿 설명

describe-launch-template 명령을 사용하여, 구성을 확인할 시작 템플릿을 선택적으로 설명합니다.

aws ec2 describe-launch-template-versions --launch-template-name my-launch-template

출력 예시

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-01234567890example", "LaunchTemplateName": "my-launch-template", "VersionNumber": 1, "CreateTime": "2021-01-19T20:50:19.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Admin", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-0947d2ba12ee1ff75", "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } } } ] }

7단계: EC2 플릿 생성

시작할 인스턴스에 대한 구성 정보를 지정하는 EC2 플릿을 생성합니다. 다음 EC2 플릿 구성에서는 이 예제와 관련된 구성만 보여 줍니다. 시작 템플릿 my-launch-template은 5단계에서 생성한 시작 템플릿입니다. 두 개의 인스턴스 풀이 있으며, 각각 인스턴스 유형(c5.xlarge)은 동일하지만 가용 영역(us-east-1aus-east-1b)은 다릅니다. 인스턴스 풀의 가격은 가용 영역이 아닌 리전에 대해 정의되기 때문에 동일합니다. 총 목표 용량은 10이고 기본 목표 용량 유형은 on-demand입니다. 온디맨드 할당 전략은 lowest-price입니다. 용량 예약에 대한 사용 전략은 use-capacity-reservations-first입니다.

참고

플릿 유형은 instant여야 합니다. 다른 플릿 유형에서는 use-capacity-reservations-first를 지원하지 않습니다.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1a" }, { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1b" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 10, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }

이전 구성을 사용하여 instant 플릿을 생성하면 목표 용량을 충족하기 위해 다음 10개의 인스턴스가 시작됩니다.

  • 용량 예약은 먼저 다음과 같이 6개의 온디맨드 인스턴스를 시작하는 데 사용됩니다.

    • 3개의 온디맨드 인스턴스는 us-east-1a에서 3개의 c5.xlarge targeted 용량 예약으로 시작됩니다.

    • 3개의 온디맨드 인스턴스는 us-east-1b에서 3개의 c5.xlarge targeted 용량 예약으로 시작됩니다.

  • 목표 용량을 충족하기 위해 4개의 추가 온디맨드 인스턴스가 온디맨드 할당 전략에 따라 일반 온디맨드 용량으로 시작됩니다(이 예에서는 lowest-price). 그러나 풀의 가격이 동일하기 때문에(가용 영역이 아닌 리전별로 가격이 책정되기 때문에) 플릿은 나머지 4개의 온디맨드 인스턴스를 두 풀 중 하나로 시작합니다.

(선택사항) 8단계: 나머지 미사용 용량 예약 수 확인

플릿이 시작된 후, 선택적으로 describe-capacity-reservations를 실행하여 미사용 용량 예약이 몇 개나 남아 있는지 확인할 수 있습니다. 이 예에서는 모든 풀의 용량 예약이 모두 사용되었음을 보여 주는 다음 응답이 나타납니다.

{ "CapacityReservationId": "cr-111", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 }