튜토리얼: 대상으로 지정된 용량 예약을 사용하여 온디맨드 인스턴스를 시작하도록 EC2 플릿 구성
이 자습서에서는 EC2 플릿이 targeted
용량 예약으로 온디맨드 인스턴스를 시작하기 위해 수행해야 하는 모든 단계를 안내합니다.
먼저 온디맨드 인스턴스를 시작할 때 targeted
온디맨드 용량 예약을 사용하도록 플릿을 구성하는 방법에 대해 학습합니다. 또한 총 온디맨드 목표 용량이 사용 가능한 미사용 용량 예약 수를 초과할 경우 플릿이 지정된 할당 전략을 사용하여 나머지 목표 용량을 시작할 인스턴스 풀을 선택하도록 플릿을 구성하는 방법도 학습합니다.
EC2 플릿 구성
이 튜토리얼에서 플릿은 다음과 같이 구성됩니다.
-
목표 용량: 온디맨드 인스턴스 10개
-
총 미사용
targeted
용량 예약: 6개(플릿의 온디맨드 목표 용량인 온디맨드 인스턴스 10개보다 적음) -
용량 예약 풀 수: 2개(
us-east-1a
및us-east-1b
) -
풀당 용량 예약 수: 3개
-
온디맨드 할당 전략:
lowest-price
(미사용 용량 예약 수가 온디맨드 목표 용량보다 적을 경우 플릿에서 온디맨드 할당 전략을 기반으로 나머지 온디맨드 용량을 시작할 풀 결정)lowest-price
할당 전략 대신prioritized
할당 전략을 사용할 수도 있습니다.
온디맨드 인스턴스를 targeted 용량 예약으로 시작하려면 다음과 같이 여러 단계를 수행해야 합니다.
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
입니다. 리소스 그룹을 생성해야 하는 이유에 대한 자세한 내용은 용량 예약을 사용하여 EC2 플릿의 온디맨드 용량 예약 섹션을 참조하세요.
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-versions 명령을 사용하여 구성을 확인할 시작 템플릿을 선택적으로 설명합니다.
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-1a
및 us-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
}