Spot Instances가 작동하는 방식
Spot Instances가 작동하는 방식
Spot Instance를 실행하려면 Spot Instance 요청을 직접 만들거나, Amazon EC2가 당신을 대신해 Spot Instance 요청을 만듭니다. Spot Instance 요청이 충족(fulfilled)되면 Spot Instance가 실행됩니다.
출처: 문서
본문
여러 서비스를 사용해 Spot Instance를 실행할 수 있어요. 자세한 내용은 Getting Started with Amazon EC2 Spot Instances 문서를 참고하세요. 이 사용 설명서에서는 EC2를 사용해 Spot Instance를 실행하는 다음 방법들을 설명합니다.
- Amazon EC2 콘솔의 실행 인스턴스 마법사나
run-instances명령으로 Spot Instance 요청을 만들 수 있어요. 자세한 내용은 Manage your Spot Instances 문서를 참고하세요. - EC2 Fleet을 만들 수 있는데, 여기서 원하는 Spot Instances 수를 지정해요. Amazon EC2는 EC2 Fleet에 지정된 각 Spot Instance마다 당신을 대신해 Spot Instance 요청을 만듭니다. 자세한 내용은 Create an EC2 Fleet 문서를 참고하세요.
- Spot Fleet 요청을 만들 수 있는데, 여기서 원하는 Spot Instances 수를 지정해요. Amazon EC2는 Spot Fleet 요청에 지정된 각 Spot Instance마다 당신을 대신해 Spot Instance 요청을 만들어요. 자세한 내용은 Create a Spot Fleet 문서를 참고하세요.
참고: Spot Fleet은 계획된 투자가 없는 레거시 API예요. 대신 EC2 Fleet 또는 Auto Scaling 그룹을 사용할 것을 권장합니다. 자세한 내용은 Which is the best fleet method to use? 문서를 참고하세요.
사용 가능한 용량이 있으면 Spot Instance가 실행돼요. Spot Instance는 중지하거나 종료할 때까지, 또는 **Amazon EC2가 인터럽트(Spot Instance interruption)**할 때까지 실행됩니다. Amazon EC2는 인터럽트할 때 Spot Instance를 중지하거나, 종료하거나, 최대 절전(hibernate) 상태로 만들 수 있어요.
Spot Instances를 사용할 때는 인터럽트에 대비해야 합니다. Spot Instances에 대한 수요가 오르거나 공급이 줄어들면 Amazon EC2가 Spot Instance를 인터럽트할 수 있어요. Amazon EC2가 Spot Instance를 인터럽트하면 **Spot Instance 중단 알림(interruption notice)**을 제공하며, 인터럽트 2분 전에 인스턴스에 경고를 보냅니다. Spot Instances에는 종료 방지(termination protection)를 활성화할 수 없어요. 자세한 내용은 Spot Instance interruptions 문서를 참고하세요.
목차 (Contents)
- Spot Instance 요청 상태 (Spot Instance request states)
- 실행 그룹에서 Spot Instances 실행 (Launch Spot Instances in a launch group)
- 가용 영역 그룹에서 Spot Instances 실행 (Launch Spot Instances in an Availability Zone group)
- VPC에서 Spot Instances 실행 (Launch Spot Instances in a VPC)
- 버스터블 성능 인스턴스 실행 (Launch burstable performance instances)
- 단일 테넌트 하드웨어에서 실행 (Launch on single-tenant hardware)
Spot Instance 요청 상태 (Spot Instance request states)
Spot Instance 요청은 다음 상태 중 하나가 될 수 있어요.
- open – 요청이 충족되기를 기다리고 있어요.
- active – 요청이 충족되었고 연결된 Spot Instance가 있어요.
- failed – 요청에 잘못된 파라미터가 하나 이상 있어요.
- closed – Spot Instance가 인터럽트되거나 종료되었어요.
- disabled – Spot Instance를 중지했어요.
- cancelled – 요청을 취소했거나 요청이 만료되었어요.
요청 상태 간의 전이는 요청 유형(원샷 one-time 또는 영구 persistent)에 따라 달라져요.
원샷(one-time) Spot Instance 요청은 Amazon EC2가 Spot Instance를 실행하거나, 요청이 만료되거나, 요청을 취소할 때까지 active 상태로 유지됩니다. 용량이 없으면 Spot Instance가 종료되고 Spot Instance 요청이 closed 됩니다.
영구(persistent) Spot Instance 요청은 요청이 충족되어도 만료되거나 취소할 때까지 active로 유지돼요. 용량이 없으면 Spot Instance가 인터럽트됩니다. 인스턴스가 인터럽트된 뒤 용량이 다시 생기면, 중지된 Spot Instance는 시작되고, 최대 절전된 Spot Instance는 재개됩니다. 용량이 있으면 Spot Instance를 중지했다가 다시 시작할 수 있어요. Spot Instance가 종료되면(중지 또는 실행 상태와 관계없이) Spot Instance 요청이 다시 열리고 Amazon EC2가 새 Spot Instance를 실행합니다. 자세한 내용은 Stop a Spot Instance, Start a Spot Instance, Terminate a Spot Instance 문서를 참고하세요.
status를 통해 Spot Instance 요청의 상태와 실행된 Spot Instances의 상태를 추적할 수 있어요. 자세한 내용은 Get the status of a Spot Instance request 문서를 참고하세요.
실행 그룹에서 Spot Instances 실행하기 (Launch Spot Instances in a launch group)
Spot Instance 요청에 **실행 그룹(launch group)**을 지정하면, Amazon EC2가 일련의 Spot Instances를 모두 실행할 수 있을 때만 실행하도록 지시할 수 있어요. 또한 Spot 서비스가 실행 그룹의 인스턴스 하나를 종료해야 한다면 전부 종료해야 합니다. 하지만 실행 그룹의 인스턴스 하나 이상을 직접 종료하면 Amazon EC2는 실행 그룹의 나머지 인스턴스를 종료하지 않아요.
이 옵션이 유용할 수 있지만, 이 제약을 추가하면 Spot Instance 요청이 충족될 가능성이 줄어들고 Spot Instances가 종료될 가능성이 높아질 수 있어요. 예를 들어 실행 그룹에 여러 가용 영역의 인스턴스가 포함되어 있다고 가정해 보세요. 그 가용 영역 중 하나의 용량이 줄어 더 이상 사용할 수 없게 되면, Amazon EC2는 실행 그룹의 모든 인스턴스를 종료합니다.
이전에 성공한 요청과 같은(기존) 실행 그룹을 지정하는 또 다른 성공적인 Spot Instance 요청을 만들면, 새 인스턴스가 실행 그룹에 추가됩니다. 이후 이 실행 그룹의 인스턴스 하나가 종료되면 첫 번째·두 번째 요청으로 실행된 인스턴스를 포함해 실행 그룹의 모든 인스턴스가 종료됩니다.
가용 영역 그룹에서 Spot Instances 실행하기 (Launch Spot Instances in an Availability Zone group)
Spot Instance 요청에 **가용 영역 그룹(Availability Zone group)**을 지정하면, Amazon EC2가 같은 가용 영역에서 일련의 Spot Instances를 실행하도록 지시할 수 있어요. Amazon EC2는 가용 영역 그룹의 모든 인스턴스를 한 번에 인터럽트할 필요는 없습니다. 가용 영역 그룹의 인스턴스 하나를 인터럽트해야 하면 나머지는 계속 실행됩니다.
이 옵션이 유용할 수 있지만, 이 제약을 추가하면 Spot Instance 요청이 충족될 가능성이 낮아질 수 있어요.
가용 영역 그룹을 지정했지만 Spot Instance 요청에 가용 영역을 지정하지 않으면, 결과는 네트워크를 어떻게 지정했는지에 따라 달라져요.
- 기본 VPC (Default VPC) – Amazon EC2는 지정된 서브넷의 가용 영역을 사용합니다. 서브넷을 지정하지 않으면 가용 영역과 기본 서브넷을 선택하지만, 반드시 가장 저렴한 영역일 필요는 없어요. 가용 영역의 기본 서브넷을 삭제했다면 다른 서브넷을 지정해야 합니다.
- 비기본 VPC (Nondefault VPC) – Amazon EC2는 지정된 서브넷의 가용 영역을 사용합니다.
VPC에서 Spot Instances 실행하기 (Launch Spot Instances in a VPC)
On-Demand Instances에 서브넷을 지정하는 것과 같은 방식으로 Spot Instances에 서브넷을 지정해요.
- [기본 VPC] 특정 저가 가용 영역에서 Spot Instance를 실행하려면 Spot Instance 요청에 해당 서브넷을 지정해야 해요. 서브넷을 지정하지 않으면 Amazon EC2가 하나를 선택하며, 이 서브넷의 가용 영역이 가장 낮은 Spot 가격을 가진 영역이 아닐 수 있어요.
- [비기본 VPC] Spot Instance에 서브넷을 반드시 지정해야 합니다.
버스터블 성능 인스턴스 실행하기 (Launch burstable performance instances)
T 인스턴스 유형은 버스터블 성능 인스턴스예요. 버스터블 성능 인스턴스 유형으로 Spot Instances를 실행하고, CPU 크레딧을 적립할 유휴 시간 없이 즉시 짧은 기간 동안 사용할 계획이라면, 더 높은 비용을 피하기 위해 Standard 모드로 실행할 것을 권장해요. 버스터블 성능 Spot Instances를 Unlimited 모드로 실행하고 즉시 CPU를 버스트하면 버스팅에 잉여 크레딧(surplus credits)을 쓰게 돼요. 인스턴스를 짧은 기간 사용하면 인스턴스가 잉여 크레딧을 상쇄할 CPU 크레딧을 적립할 시간이 없어서, 인스턴스를 종료할 때 잉여 크레딧 요금이 부과됩니다.
Unlimited 모드는 버스터블 성능 Spot Instance가 버스팅용 CPU 크레딧을 적립할 만큼 충분히 오래 실행되는 경우에만 적합해요. 그렇지 않으면 잉여 크레딧 비용을 내는 것이 다른 인스턴스를 사용하는 것보다 버스터블 성능 Spot Instances를 더 비싸게 만들어요. 자세한 내용은 When to use unlimited mode versus fixed CPU 문서를 참고하세요.
T2 인스턴스는 Standard 모드로 구성하면 **실행 크레딧(launch credits)**을 받아요. T2 인스턴스는 실행 크레딧을 받는 유일한 버스터블 성능 인스턴스예요. 실행 크레딧은 인스턴스를 구성하기에 충분한 컴퓨트 리소스를 제공해 T2 인스턴스의 생산적인 초기 실행 경험을 제공하려는 목적이에요. 새 실행 크레딧에 접근하려고 T2 인스턴스를 반복 실행하는 것은 허용되지 않습니다. 지속적 CPU가 필요하다면 (일정 기간 유휴 상태로) 크레딧을 적립하거나, T2 Spot Instances에 Unlimited 모드를 쓰거나, 전용 CPU를 가진 인스턴스 유형을 사용하면 돼요.
단일 테넌트 하드웨어에서 실행하기 (Launch on single-tenant hardware)
단일 테넌트 하드웨어에서 Spot Instance를 실행할 수 있어요. Dedicated Spot Instances는 다른 AWS 계정에 속한 인스턴스와 물리적으로 격리됩니다. 자세한 내용은 Amazon EC2 Dedicated Instances 문서를 참고하세요.
Dedicated Spot Instance를 실행하려면 다음 중 하나를 수행합니다.
- Spot Instance 요청을 만들 때 테넌시(tenancy)를
dedicated로 지정합니다. 자세한 내용은 Manage your Spot Instances 문서를 참고하세요. - 인스턴스 테넌시가
dedicated인 VPC에서 Spot Instance를 요청합니다. 자세한 내용은 Launch Dedicated Instances into a VPC with default tenancy 문서를 참고하세요. 테넌시가dedicated인 VPC에서는 테넌시가default인 Spot Instance를 요청할 수 없어요.
T 인스턴스를 제외한 모든 인스턴스 패밀리가 Dedicated Spot Instances를 지원합니다. 각 지원 인스턴스 패밀리에서 가장 큰 인스턴스 크기나 metal 크기만 Dedicated Spot Instances를 지원해요.