Amazon Elastic Compute Cloud
Linux 인스턴스용 사용 설명서

스팟 집합 작동 방식

스팟 집합은 스팟 인스턴스 및 온디맨드 인스턴스의 모음 또는 플릿입니다.

스팟 집합은 사용자가 스팟 집합 요청에서 지정한 목표 용량을 충족하는 데 필요한 수만큼 스팟 인스턴스 및 온디맨드 인스턴스를 시작하려고 합니다. 스팟 인스턴스에 대한 요청은 요청에 지정된 최대 가격이 현재 스팟 가격을 초과하고 사용 가능한 용량이 있으면 수행됩니다. 스팟 인스턴스가 스팟 가격 또는 사용 가능 용량의 변경으로 인해 중단될 경우 스팟 집합에서도 목표 용량 플릿을 유지하려고 합니다.

스팟 인스턴스 풀은 동일한 인스턴스 유형(예: m5.large), 운영 체제, 가용 영역 및 네트워크 플랫폼을 가지는 미사용 EC2 인스턴스의 세트입니다. 스팟 집합 요청을 할 때 인스턴스 유형, AMI, 가용 영역 또는 서브넷에 따라 바뀌는 여러 시작 사양을 포함할 수 있습니다. 스팟 집합은 요청에 포함된 시작 사양과 스팟 집합 요청의 구성을 기반으로 스팟 집합 요청을 이행하는 데 사용되는 스팟 인스턴스 풀을 선택합니다. 스팟 인스턴스는 선택한 풀에서 가져옵니다.

스팟 집합의 온디맨드

항상 인스턴스 용량을 사용할 수 있도록 스팟 집합 요청에 온디맨드 용량에 대한 요청을 포함할 수 있습니다. 스팟 집합 요청에 원하는 목표 용량 및 해당 용량의 몇 %가 온디맨드 용량이어야 하는지를 지정합니다. 잔고는 스팟 용량으로 구성됩니다. 스팟 용량은 가용 Amazon EC2 용량이 있고 용량이 가용 상태일 경우 시작됩니다. 예를 들어 스팟 집합 요청에 목표 용량을 10으로 지정하고 온디맨드 용량을 8로 지정하면 Amazon EC2는 8개의 용량 단위를 온디맨드로 시작하고 2개(10-8=2)의 용량 단위를 스팟으로 시작합니다.

온디맨드 용량에 대한 인스턴스 유형 우선순위 지정

스팟 집합가 온디맨드 용량을 채우려고 시도하는 경우 기본적으로 최저 가격의 인스턴스 유형을 먼저 시작합니다. OnDemandAllocationStrategyprioritized로 설정된 경우 스팟 집합가, 우선 순위를 통해, 온디맨드 용량을 채우기 위해 먼저 사용할 인스턴스 유형을 결정합니다. 시작 템플릿 재정의에 우선 순위를 할당하고 우선 순위가 가장 높은 것을 먼저 시작합니다.

예를 들어 서로 다른 인스턴스 유형인 c3.large, c4.large, c5.large를 각각 지닌 3개의 시작 템플릿 재정의를 구성했다고 가정해 보겠습니다. c5.large에 대한 온디맨드 가격은 c4.large에 대한 온디맨드 가격보다 낮습니다. c3.large가 가장 낮습니다. 우선 순위를 사용해 순서를 결정하지 않는 경우 플릿이 c3.large로 시작하여 온디맨드 용량을 채운 후 c5.large를 사용합니다. 종종 c4.large에 대한 미사용 예약 인스턴스가 있게 되므로 c4.large, c3.large, c5.large의 순서이도록 시작 템플릿 재정의 우선 순위를 설정할 수 있습니다.

스팟 인스턴스를 위한 할당 전략

스팟 집합의 스팟 인스턴스 할당 전략에 따라 시작 사양으로 표시되는 가능한 스팟 인스턴스 풀에서 스팟 집합에 대한 요청을 이행하는 방법이 결정됩니다. 다음은 스팟 집합 요청에서 지정할 수 있는 할당 전략입니다.

lowestPrice

스팟 인스턴스는 최저 가격의 풀에서 가져옵니다. 이는 기본 전략입니다.

diversified

스팟 인스턴스는 모든 풀에 두루 분산됩니다.

InstancePoolsToUseCount

스팟 인스턴스는 지정한 스팟 풀 수에 걸쳐 배포됩니다. 이 파라미터는 lowestPrice와 함께 사용하는 경우에만 유효합니다.

목표 용량 유지

스팟 가격 또는 스팟 인스턴스 풀의 가용 용량 변화로 인해 스팟 인스턴스가 종료된 후에는 maintain 유형의 스팟 집합가 대체 스팟 인스턴스를 시작합니다. 할당 전략이 lowestPrice인 경우, 플릿은 현재 스팟 가격이 가장 낮은 풀에서 대체 인스턴스를 시작합니다. 할당 전략이 diversified인 경우 플릿은 나머지 풀에 대체 스팟 인스턴스를 배포합니다. 할당 전략으로써 InstancePoolsToUseCount와 함께 lowestPrice를 사용하는 경우 플릿이 최저 가격의 스팟 풀을 선택하여 지정한 스팟 풀 수에 걸쳐 스팟 인스턴스를 시작합니다.

비용 최적화를 위한 스팟 집합 구성

스팟 인스턴스 사용 비용을 최적화하려면 스팟 집합이 현재 스팟 가격을 기반으로 인스턴스 유형과 가용 영역의 가장 저렴한 조합을 자동으로 배포하도록 lowestPrice 할당 전략을 지정하십시오.

스팟 집합은 항상 퍼블릭 온디맨드 가격을 기반으로 가장 저렴한 인스턴스 유형을 온디맨드 인스턴스 목표 용량에 대해 선택하며, 스팟 인스턴스에 대해서는 계속해서 할당 전략(lowestPrice 또는 diversified)을 따릅니다.

비용 최적화 및 다각화를 위한 스팟 집합 구성

저렴함과 다각화를 모두 충족하는 스팟 인스턴스 플릿을 생성하려면 InstancePoolsToUseCount과 함께 lowestPrice 할당 전략을 사용하십시오. 스팟 집합가 지정된 스팟 풀 수에 걸쳐 현재 스팟 가격을 기반으로 인스턴스 유형과 가용 영역의 가장 저렴한 조합을 자동으로 배포합니다. 이 조합을 통해 가장 비싼 스팟 인스턴스를 피할 수 있습니다.

적합한 할당 전략 선택

사용 사례를 바탕으로 스팟 집합을 최적화할 수 있습니다.

플릿이 작거나 짧은 시간 동안 실행될 경우 모든 인스턴스가 단일 스팟 인스턴스 풀에 있더라도 스팟 인스턴스가 중단될 확률은 낮습니다. 따라서 lowestPrice 전략이 요구를 충족시키는 동시에 최저 가격을 제공할 가능성이 높습니다.

플릿이 크거나 장시간 실행될 경우 스팟 인스턴스를 여러 풀로 분산하여 플릿의 가용성을 높일 수 있습니다. 예를 들어 스팟 집합 요청이 풀 10개와 인스턴스 100개의 목표 용량을 지정하면 플릿이 각 풀에서 스팟 인스턴스 10개를 시작합니다. 풀에서 스팟 가격이 최고 가격을 초과하는 경우, 플릿 중 10%만 영향을 받습니다. 이 전략을 사용하면 플릿이 시간이 지나면서 어느 한 풀에서 발생하는 스팟 가격의 상승에 덜 민감해집니다.

diversified 전략 사용 시 스팟 집합은 온디맨드 가격보다 높거나 이 가격과 동일한 스팟 가격의 풀로 스팟 인스턴스를 시작하지 않습니다.

저렴하고 다각화된 플릿을 생성하려면 lowestPrice과 함께 InstancePoolsToUseCount 전략을 사용하십시오. 스팟 인스턴스를 할당할 스팟 풀 수로써 낮은 수 또는 높은 수를 사용할 수 있습니다. 예를 들어 일괄 처리를 실행하는 경우 대기열이 비용 절감 효과를 극대화하는 동시에 컴퓨팅 파워를 항상 확보할 수 있도록 스팟 풀 수를 낮게(예: InstancePoolsToUseCount=2) 지정하는 것이 좋습니다. 웹 서비스를 실행하는 경우 스팟 인스턴스 풀을 일시적으로 사용할 수 없게 되었을 때 그 충격을 최소화할 수 있도록 스팟 풀 수를 낮게(예: InstancePoolsToUseCount=10) 지정하는 것이 좋습니다.

스팟 가격 재정의

각 스팟 집합 요청은 글로벌 최고 가격을 포함하거나 기본 가격(온디맨드 가격)을 사용할 수 있습니다. 스팟 집합은 각각의 시작 사양에 대해 기본 최고 가격으로 이 가격을 사용합니다.

하나 이상의 시작 사양에서 최고 가격을 선택적으로 지정할 수 있습니다. 이 가격은 시작 사양에 특정한 것입니다. 시작 사양에 특정 가격이 포함되는 경우 스팟 집합은 글로벌 최고 가격 대신 이 최고 가격을 사용합니다. 특정 최고 가격을 포함하지 않는 다른 시작 사양은 글로벌 최고 가격을 계속해서 사용합니다.

스팟 집합 인스턴스 가중치 부여

스팟 인스턴스의 플릿을 요청할 때 각 인스턴스 유형이 애플리케이션의 성능에 기여하는 용량 단위를 정의하고 인스턴스 가중치를 사용하여 적절히 각 스팟 인스턴스 풀에 대한 최고 가격을 조정할 수 있습니다.

기본적으로, 사용자가 지정하는 가격은 인스턴스 시간당 가격입니다. 인스턴스 가중치 기능을 사용할 때, 사용자가 지정하는 가격은 단위 시간당 가격입니다. 단위 시간당 가격은 인스턴스 유형에 따른 가격을 인스턴스가 나타내는 단위 수로 나누어 계산합니다. 스팟 집합은 목표 용량을 인스턴스 가중치로 나누어 시작할 스팟 인스턴스 수를 계산합니다. 결과가 정수가 아닌 경우 스팟 집합은 결과를 다음 정수로 올림하므로 플릿의 크기가 목표 용량을 밑돌지는 않습니다. 시작된 인스턴스의 용량이 요청된 목표 용량을 초과하더라도, 스팟 집합은 시작 사양에서 지정한 어떤 풀이든 선택할 수 있습니다.

다음 표에는 목표 용량이 10인 스팟 집합 요청에서 단위당 가격을 결정하기 위한 계산 예제를 제공합니다.

인스턴스 유형 인스턴스 가중치 인스턴스 시간당 가격 단위 시간당 가격 시작된 인스턴스의 수

r3.xlarge

2

0.05 USD

.025

(0.05를 2로 나눈 값)

5

(10을 2로 나눈 값)

인스턴스 유형 인스턴스 가중치 인스턴스 시간당 가격 단위 시간당 가격 시작된 인스턴스의 수

r3.8xlarge

8

0.10 USD

.0125

(0.10을 8로 나눈 값)

2

(10을 8로 나눈 후 올림한 결과)

스팟 집합 인스턴스 가중치를 사용해 다음과 같이 원하는 목표 용량을 이행 시점에 단위당 최저 가격으로 풀에서 프로비저닝합니다.

  1. 스팟 집합에 대한 목표 용량을 인스턴스(기본값) 또는 선택한 단위(예: 가상 CPU 수, 메모리, 스토리지 또는 처리량)로 설정합니다.

  2. 단위당 가격을 설정합니다.

  3. 각 시작 구성을 위해, 목표 용량으로 접근하는 방향으로 인스턴스 유형이 나타내는 단위 수를 의미하는 가중치를 지정합니다.

인스턴스 가중치 부여의 예

다음과 같은 구성의 스팟 집합 요청을 고려하십시오.

  • 목표 용량은 24

  • 인스턴스 유형이 r3.2xlarge이고 가중치가 6인 시작 사양

  • 인스턴스 유형이 c3.xlarge이고 가중치가 5인 시작 사양

가중치는 목표 용량에 대하여 인스턴스 유형이 나타내는 단위 수를 의미합니다. 첫 번째 시작 사양에서 단위당 최저 가격(인스턴스 시간당 r3.2xlarge에 대한 가격을 6으로 나눈 값)을 제공하는 경우, 스팟 플릿은 이들 인스턴스 중 4개(24를 6으로 나눈 값)를 시작합니다.

두 번째 시작 사양에서 단위당 최저 가격(인스턴스 시간당 c3.xlarge에 대한 가격을 5로 나눈 값)을 제공하는 경우 스팟 집합은 이들 인스턴스 중 5개(24를 5로 나눈 결과를 올림한 값)를 시작합니다.

인스턴스 가중치 부여 및 할당 전략

다음과 같은 구성의 스팟 집합 요청을 고려하십시오.

  • 목표 용량은 30

  • 인스턴스 유형이 c3.2xlarge이고 가중치가 8인 시작 사양

  • 인스턴스 유형이 m3.xlarge이고 가중치가 8인 시작 사양

  • 인스턴스 유형이 r3.xlarge이고 가중치가 8인 시작 사양

스팟 집합이 4개의 인스턴스(30을 8로 나눈 결과를 올림한 값)를 시작합니다. lowestPrice 전략 사용 시, 4개의 인스턴스는 전부 단위당 최저 가격을 제공하는 풀에서 가져옵니다. diversified 전략 사용 시 스팟 집합은 3개의 풀 각각에서 1개의 인스턴스를 시작하고 어떤 풀에 있는 것이든 4번째 인스턴스가 단위당 최저 가격을 제공합니다.

연습: 인스턴스 가중치를 부여한 스팟 집합 사용

이 연습에서는 Example Corp이라는 가상의 회사를 통해 인스턴스 가중치를 사용하여 스팟 집합을 요청하는 프로세스를 설명합니다.

목표

제약 회사인 Example Corp은 암 퇴치 효과가 있는 화합물을 검출하는 데 Amazon EC2의 컴퓨팅 파워를 사용하려고 합니다.

계획

Example Corp은 먼저 스팟 모범 사례를 살펴봅니다. 그런 다음 스팟 집합에 대한 다음 요건을 결정합니다.

인스턴스 유형

Example Corp은 최소 60GB 메모리와 8개의 가상 CPU(vCPU)로 최적의 성능을 자랑하는 컴퓨팅 및 메모리 집약적 애플리케이션을 사용하고 있습니다. 하지만 최저 가격으로 이러한 애플리케이션 리소스를 극대화하는 것이 목표입니다. 그 결과 다음 EC2 인스턴스 유형 중 하나가 이러한 요건에 적합할 것이라는 결정을 내립니다.

인스턴스 유형 메모리(GiB) vCPUs

r3.2xlarge

61

8

r3.4xlarge

122

16

r3.8xlarge

244

32

단위의 목표 용량

인스턴스 가중치를 부여했을 때 목표 용량은 인스턴스 수(기본값) 또는 코어(vCPU), 메모리(GiB) 및 스토리지(GB)와 같은 요소의 조합과 동일할 수 있습니다. 그래서 Example Corp는 단위 1개당 애플리케이션의 기본 용량(60GB 메모리, vCPU 8개)을 고려하여 기본 용량의 20배면 요구에 부응할 것이라고 결정을 내립니다. 그래서 스팟 집합 요청의 목표 용량을 20으로 설정합니다.

인스턴스 가중치

목표 용량이 결정되자 이제는 인스턴스 가중치를 계산합니다. 각 인스턴스 유형에 대한 인스턴스 가중치를 계산하기 위해, 다음과 같이 목표 용량에 이르기 위해 필요한 각 인스턴스 유형의 단위를 결정합니다.

  • r3.2xlarge(61.0GB, 8 vCPU) = 단위 20개 중 1개

  • r3.4xlarge(122.0GB, 16 vCPU) = 단위 20개 중 2개

  • r3.8xlarge(122.0GB, 32 vCPU) = 단위 20개 중 4개

따라서 Example Corp은 스팟 집합 요청 시 1, 2 및 4의 인스턴스 가중치를 각 시작 구성에 할당합니다.

단위 시간당 가격

Example Corp은 인스턴스 시간당 온디맨드 가격을 시작 가격으로 사용합니다. 그 밖에 최근 스팟 가격을 사용하거나, 둘을 조합할 수도 있습니다. 단위 시간당 가격을 계산하려면 인스턴스 시간당 시작 가격을 가중치로 나눕니다. 다음 예를 참조하십시오.

인스턴스 유형 온디맨드 가격 인스턴스 가중치 단위 시간당 가격

r3.2xLarge

$0.7

1

$0.7

r3.4xLarge

$1.4

2

$0.7

r3.8xLarge

$2.8

4

$0.7

Example Corp은 단위 시간당 글로벌 가격으로 0.7 USD를 사용하기 때문에 세 가지 인스턴스 유형 모두에서 경쟁력이 있습니다. 또한 r3.8xlarge 시작 사양에서 단위 시간당 글로벌 가격으로 0.7 USD를, 단위 시간당 특정 가격으로 0.9 USD를 사용할 수도 있습니다.

권한 검증

Example Corp은 스팟 집합 요청을 생성하기 전에 필요한 권한을 가진 IAM 역할이 있는지 검증합니다. 자세한 내용은 스팟 집합 사전 조건 단원을 참조하십시오.

요청 생성

Example Corp은 스팟 집합 요청에 대해 다음 구성으로 config.json 파일을 생성합니다.

{ "SpotPrice": "0.70", "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "SubnetId": "subnet-482e4972", "WeightedCapacity": 1 }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.4xlarge", "SubnetId": "subnet-482e4972", "WeightedCapacity": 2 } { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.8xlarge", "SubnetId": "subnet-482e4972", "SpotPrice": "0.90", "WeightedCapacity": 4 } ] }

Example Corp이 다음 request-spot-fleet 명령을 사용하여 스팟 집합 요청을 생성합니다.

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

자세한 내용은 스팟 집합 요청 단원을 참조하십시오.

이행

할당 전략에서는 스팟 인스턴스가 어느 스팟 인스턴스 풀에서 온 것인지 확인합니다.

lowestPrice 전략(기본 전략) 사용 시, 스팟 인스턴스는 이행 시점에 단위당 최저 가격의 풀에서 온 것입니다. 20단위의 용량을 제공하기 위해 스팟 집합이 r3.2xlarge 인스턴스 20개(20을 1로 나눈 값), r3.4xlarge 인스턴스 10개(20을 2로 나눈 값) 또는 r3.8xlarge 인스턴스 5개(20을 4로 나눈 값)를 시작합니다.

Example Corp에서 diversified 전략을 사용한 경우에는 스팟 인스턴스가 3개의 풀 전부에서 옵니다. 스팟 집합은 총 20개의 단위에 대해 r3.2xlarge 인스턴스 6개(6개 단위 제공), r3.4xlarge 인스턴스 3개(6개 단위 제공), r3.8xlarge 인스턴스 2개(8개 단위 제공)를 시작합니다.