Spot Fleet 만들기
Spot Fleet 만들기
중요 — Spot Fleet은 투자 계획이 없는 레거시 API예요. 대신 EC2 Fleet 또는 Auto Scaling 그룹 사용을 권장해요. 자세한 내용은 어떤 플릿 방법이 가장 좋을까요? 문서를 참고하세요.
AWS Management Console을 사용하면 AMI와 원하는 총 대상 용량만 선택해 Spot Fleet 요청을 빠르게 만들 수 있어요. Amazon EC2가 요구 사항을 가장 잘 충족하고 Spot 모범 사례를 따르는 플릿을 구성해요. 또는 기본 설정을 수정할 수도 있어요.
출처: 문서
본문
플릿에 On-Demand 인스턴스를 포함하려면 요청에서 시작 템플릿(launch template)을 지정하고 원하는 On-Demand 용량을 지정해야 해요.
플릿은 용량을 사용할 수 있을 때 On-Demand 인스턴스를 실행하고, 최대 가격이 Spot 가격을 초과하고 용량을 사용할 수 있을 때 Spot 인스턴스를 실행해요.
플릿에 Spot 인스턴스가 포함되고 유형이 maintain이라면, Amazon EC2는 Spot 인스턴스가 중단될 때 플릿의 대상 용량을 유지하려 시도해요.
필수 권한
자세한 내용은 Spot Fleet permissions 문서를 참고하세요.
작업
- Spot Fleet 요청 빠르게 만들기
- 정의된 파라미터로 Spot Fleet 요청 만들기
- 비정상 Spot 인스턴스를 교체하는 Spot Fleet 만들기
Spot Fleet 요청 빠르게 만들기
다음 단계를 따라 Amazon EC2 콘솔로 Spot Fleet 요청을 빠르게 만들어 보세요.
권장 설정으로 Spot Fleet 요청 만들기
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Spot Requests를 선택합니다.
- Spot이 처음이라면 환영 페이지가 표시됩니다. Get started를 선택합니다. 그렇지 않으면 Create Spot Fleet Request를 선택합니다.
- Launch parameters에서 Manually configure launch parameters를 선택합니다.
- AMI에서 AMI를 선택합니다.
- Target capacity의 Total target capacity에서 요청할 단위 수를 지정합니다. 단위 유형은
Instances,vCPUs,Memory (GiB)중에서 선택할 수 있어요. - Your fleet request at a glance에서 플릿 구성을 검토하고 Launch를 선택합니다.
정의된 파라미터로 Spot Fleet 요청 만들기
여러분이 정의한 파라미터로 Spot Fleet을 만들 수 있어요.
Console
정의된 파라미터로 Spot Fleet 요청 만들기
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Spot Requests를 선택합니다.
- Spot이 처음이라면 환영 페이지가 표시됩니다. Get started를 선택합니다. 그렇지 않으면 Create Spot Fleet Request를 선택합니다.
- Launch parameters에서 시작 파라미터를 수동으로 구성하거나 시작 템플릿을 사용할 수 있습니다.
- [수동 구성] Amazon EC2 콘솔에서 시작 파라미터를 정의하려면 Manually configure launch parameters를 선택한 다음 다음을 수행합니다.
- AMI에서 AWS가 제공하는 기본 AMI 중 하나를 선택하거나, Search for AMI를 선택해 사용자 커뮤니티, AWS Marketplace, 또는 여러분의 AMI를 사용합니다.
- [수동 구성] Amazon EC2 콘솔에서 시작 파라미터를 정의하려면 Manually configure launch parameters를 선택한 다음 다음을 수행합니다.
참고 — 시작 파라미터에 지정된 AMI가 등록 해제되거나 비활성화되면 그 AMI에서 새 인스턴스를 실행할 수 없어요. 대상 용량 유지로 설정된 플릿은 대상 용량이 유지되지 않습니다.
- (선택) **Key pair name**에서 기존 키 페어를 선택하거나 새로 만듭니다.
- [기존 키 페어] 키 페어를 선택합니다.
- [새 키 페어] **Create new key pair**를 선택해 **Key pairs** 페이지로 이동합니다. 끝나면 **Spot Requests** 페이지로 돌아와 목록을 새로고침합니다.
- (선택) **Additional launch parameters**를 확장하고 다음을 수행합니다.
- (선택) Amazon EBS 최적화를 활성화하려면 **EBS-optimized**에 대해 **Launch EBS-optimized instances**를 선택합니다.
- (선택) 인스턴스에 임시 블록 수준 스토리지를 추가하려면 **Instance store**에 대해 **Attach at launch**를 선택합니다.
- (선택) 스토리지를 추가하려면 **Add new volume**을 선택하고 인스턴스 유형에 따라 추가 인스턴스 스토어 볼륨이나 Amazon EBS 볼륨을 지정합니다.
- (선택) 기본적으로 인스턴스에는 기본 모니터링이 활성화됩니다. 세부 모니터링을 활성화하려면 **Monitoring**에 대해 **Enable CloudWatch detailed monitoring**을 선택합니다.
- (선택) Dedicated Spot Instance를 실행하려면 **Tenancy**에 대해 **Dedicated - run a dedicated instance**를 선택합니다.
- (선택) **Security groups**에서 하나 이상의 보안 그룹을 선택하거나 새로 만듭니다.
- [기존 보안 그룹] 하나 이상의 보안 그룹을 선택합니다.
- [새 보안 그룹] **Create new security group**을 선택해 **Security Groups** 페이지로 이동합니다. 끝나면 **Spot Requests**로 돌아와 목록을 새로고침합니다.
- (선택) 인스턴스를 인터넷에서 연결할 수 있게 하려면 **Auto-assign IPv4 Public IP**에서 **Enable**을 선택합니다.
- (선택) IAM 역할로 Spot 인스턴스를 실행하려면 **IAM instance profile**에서 역할을 선택합니다.
- (선택) 시작 스크립트를 실행하려면 **User data**에 복사합니다.
- (선택) 태그를 추가하려면 **Create tag**를 선택하고 태그의 키와 값을 입력한 다음 **Create**를 선택합니다. 태그마다 반복합니다.
각 태그에 대해 인스턴스와 Spot Fleet 요청에 같은 태그를 지정하려면 `Instances`와 `Fleet`이 모두 선택되어 있는지 확인합니다. 플릿이 실행한 인스턴스만 태그하려면 `Fleet`을 선택 해제합니다. Spot Fleet 요청만 태그하려면 `Instances`를 선택 해제합니다.
- [시작 템플릿] 시작 템플릿에서 만든 구성을 사용하려면 Use a launch template을 선택하고, Launch template에서 시작 템플릿을 선택합니다.
참고 — Spot Fleet에 On-Demand 용량을 원한다면 시작 템플릿을 지정해야 해요.
- Additional request details에서 다음을 수행합니다.
- 추가 요청 세부 정보를 검토합니다. 변경하려면 Apply defaults를 선택 해제합니다.
- (선택) IAM fleet role에서 기본 역할을 사용하거나 다른 역할을 선택합니다. 역할을 변경한 뒤 기본 역할을 사용하려면 Use default role을 선택합니다.
- (선택) 특정 기간 동안만 유효한 요청을 만들려면 Request valid from과 Request valid until을 편집합니다.
- (선택) 기본적으로 Amazon EC2는 Spot Fleet 요청이 만료되면 Spot 인스턴스를 종료합니다. 요청 만료 후에도 실행을 유지하려면 Terminate the instances when the request expires를 선택 해제합니다.
- (선택) Spot 인스턴스를 로드 밸런서에 등록하려면 Receive traffic from one or more load balancers를 선택하고 하나 이상의 Classic Load Balancer나 대상 그룹을 선택합니다.
- Target capacity에서 다음을 수행합니다.
- Total target capacity에서 요청할 단위 수를 지정합니다. 단위 유형은
Instances,vCPUs,Memory (MiB)중에서 선택할 수 있어요. 나중에 용량을 추가할 수 있도록 대상 용량 0을 지정하려면 먼저 Maintain target capacity를 선택해야 해요. - (선택) Include On-Demand base capacity에서 요청할 On-Demand 단위 수를 지정합니다. 이 숫자는 Total target capacity보다 작아야 해요. Amazon EC2가 차이를 계산해 그 차이를 요청할 Spot 단위로 할당해요.
- Total target capacity에서 요청할 단위 수를 지정합니다. 단위 유형은
중요 — 선택적 On-Demand 용량을 지정하려면 먼저 시작 템플릿을 선택해야 해요.
- (선택) 기본적으로 Amazon EC2는 Spot 인스턴스가 중단되면 종료합니다. 대상 용량을 유지하려면 Maintain target capacity를 선택합니다. 그런 다음 Interruption behavior에서 해당 옵션을 선택해 Amazon EC2가 중단 시 Spot 인스턴스를 종료, 중지, 최대 절전하도록 지정할 수 있어요.
참고 — 시작 파라미터에 지정된 AMI가 등록 해제되거나 비활성화되면 그 AMI에서 새 인스턴스를 실행할 수 없어요. 이 경우 대상 용량 유지로 설정된 플릿은 대상 용량이 유지되지 않습니다.
- (선택) 플릿의 기존 Spot 인스턴스에 대해 인스턴스 리밸런싱 알림이 발행될 때 Spot Fleet이 대체 Spot 인스턴스를 실행하도록 허용하려면 Capacity rebalance를 선택한 다음 인스턴스 교체 전략을 선택합니다. Launch before terminate를 선택하면 Amazon EC2가 기존 인스턴스를 종료하기 전 지연 시간(초)을 지정합니다. 자세한 내용은 Use Capacity Rebalancing in EC2 Fleet and Spot Fleet to replace at-risk Spot Instances 문서를 참고하세요.
- (선택) 플릿의 모든 Spot 인스턴스에 대해 시간당 지불할 금액을 제어하려면 Set maximum cost for Spot Instances를 선택한 다음 시간당 지불하려는 최대 총액을 입력합니다. 최대 총액에 도달하면 대상 용량을 충족하지 못했더라도 Spot Fleet은 Spot 인스턴스 실행을 중지합니다. 자세한 내용은 EC2 Fleet 또는 Spot Fleet의 지출 한도 설정 문서를 참고하세요.
-
Network에서 다음을 수행합니다.
-
Network에서 기존 VPC를 선택하거나 새로 만듭니다.
- [기존 VPC] VPC를 선택합니다.
- [새 VPC] Create new VPC를 선택해 Amazon VPC 콘솔로 이동합니다. 끝나면 이 화면으로 돌아와 목록을 새로고침합니다.
-
(선택) Availability Zone에서 Amazon EC2가 Spot 인스턴스의 가용 영역을 선택하게 하거나, 하나 이상의 가용 영역을 지정합니다.
가용 영역에 서브넷이 두 개 이상 있다면 Subnet에서 적절한 서브넷을 선택합니다. 서브넷을 추가하려면 Create new subnet을 선택해 Amazon VPC 콘솔로 이동합니다. 끝나면 이 화면으로 돌아와 목록을 새로고침합니다.
-
-
Instance type requirements에서 인스턴스 속성을 지정하고 Amazon EC2가 이 속성을 가진 최적의 인스턴스 유형을 식별하게 하거나, 인스턴스 목록을 지정할 수 있습니다. 자세한 내용은 EC2 Fleet 또는 Spot Fleet의 인스턴스 유형 선택 속성 지정하기 문서를 참고하세요.
- Specify instance attributes that match your compute requirements를 선택했다면 인스턴스 속성을 다음과 같이 지정합니다.
- vCPUs에서 원하는 최소·최대 vCPU 수를 입력합니다. 제한 없음을 지정하려면
No minimum또는No maximum, 또는 둘 다를 선택합니다. - **Memory (GiB)**에서 원하는 최소·최대 메모리 양을 입력합니다. 제한 없음을 지정하려면
No minimum또는No maximum, 또는 둘 다를 선택합니다. - (선택) Additional instance attribute에서 컴퓨팅 요구 사항을 더 자세히 나타내는 하나 이상의 속성을 선택할 수 있습니다. 추가 속성마다 요청에 추가 제약이 더해집니다. 추가 속성을 생략할 수 있으며, 생략하면 기본값이 사용됩니다. 각 속성과 기본값에 대한 설명은
get-spot-placement-scores문서를 참고하세요. - (선택) 지정한 속성을 가진 인스턴스 유형을 보려면 Preview matching instance types를 확장합니다. 요청에서 인스턴스 유형을 제외하려면 인스턴스를 선택한 다음 Exclude selected instance types를 선택합니다.
- vCPUs에서 원하는 최소·최대 vCPU 수를 입력합니다. 제한 없음을 지정하려면
- Manually select instance types를 선택했다면 Spot Fleet이 기본 인스턴스 유형 목록을 제공합니다. 인스턴스 유형을 더 선택하려면 Add instance types를 선택하고 요청에 사용할 인스턴스 유형을 선택한 다음 Select를 선택합니다. 인스턴스 유형을 삭제하려면 인스턴스 유형을 선택하고 Delete를 선택합니다.
- Specify instance attributes that match your compute requirements를 선택했다면 인스턴스 속성을 다음과 같이 지정합니다.
-
Allocation strategy에서 요구 사항을 충족하는 Spot 할당 전략과 On-Demand 할당 전략을 선택합니다. 자세한 내용은 EC2 Fleet 또는 Spot Fleet이 Spot·On-Demand 용량을 충족하는 방식을 결정하는 할당 전략 사용하기 문서를 참고하세요.
-
Your fleet request at a glance에서 플릿 구성을 검토하고 필요하면 조정합니다.
-
(선택) AWS CLI와 함께 사용할 실행 구성의 복사본을 다운로드하려면 JSON config를 선택합니다.
-
Spot Fleet을 실행할 준비가 되면 Launch를 선택합니다.
Spot Fleet 요청 유형은 fleet이에요. 요청이 충족되면 상태가 active이고 상태 코드가 fulfilled인 instance 유형의 요청이 추가돼요.
AWS CLI
Spot Fleet 요청 만들기
request-spot-fleet 명령을 사용합니다.
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
예시 구성 파일은 Example CLI configurations Spot Fleet 문서를 참고하세요.
PowerShell
Spot Fleet 요청 만들기
Request-EC2SpotFleet cmdlet을 사용합니다. 다음 예시는 용량 최적화(capacity-optimized) 플릿에서 Spot 인스턴스를 실행해요.
Request-EC2SpotFleet `
-SpotFleetRequestConfig_TargetCapacity 50 `
-SpotFleetRequestConfig_AllocationStrategy "CapacityOptimized" `
-SpotFleetRequestConfig_IamFleetRole "arn:aws:iam::123456789012:role/my-spot-fleet-role" `
-SpotFleetRequestConfig_LaunchTemplateConfig @($launchConfig)
실행 구성을 다음과 같이 정의하고 필요한 시작 템플릿과 오버라이드 속성을 설정합니다. 예시 구성을 보려면 Example CLI configurations Spot Fleet 문서를 참고하세요.
$lcSpec = Amazon.EC2.Model.FleetLaunchTemplateSpecification
# To do - Set FleetLaunchTemplateSpecification properties
$lcOverrides = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
# To do - Set LaunchTemplateOverrides properties
$launchConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchConfig.LaunchTemplateSpecification $lcSpec
$launchConfig.Overrides @($lcOverrides)
비정상 Spot 인스턴스를 교체하는 Spot Fleet 만들기
Spot Fleet은 플릿 안의 Spot 인스턴스의 상태를 2분마다 확인해요. 인스턴스의 상태는 healthy 또는 unhealthy 중 하나예요.
Spot Fleet은 Amazon EC2가 제공하는 상태 검사(status checks)를 사용해 인스턴스의 상태를 결정해요. 인스턴스 상태 검사 또는 시스템 상태 검사의 상태가 3회 연속 상태 검사에서 impaired면 인스턴스는 unhealthy로 결정돼요. 자세한 내용은 Amazon EC2 인스턴스의 상태 검사 문서를 참고하세요.
플릿이 비정상 Spot 인스턴스를 교체하도록 구성할 수 있어요. 상태 검사 교체(health check replacement)를 활성화하면 Spot 인스턴스가 unhealthy로 보고될 때 교체돼요. 비정상 Spot 인스턴스가 교체되는 동안 플릿이 몇 분 동안 대상 용량 아래로 내려갈 수 있어요.
요구 사항
- 상태 검사 교체는 대상 용량을 유지하는 Spot Fleet(유형이
maintain인 플릿)에서만 지원되며, 일회성 Spot Fleet(유형이request인 플릿)에서는 지원되지 않아요. - 상태 검사 교체는 Spot 인스턴스에서만 지원돼요. On-Demand 인스턴스에는 이 기능이 지원되지 않아요.
- 비정상 인스턴스를 교체하도록 Spot Fleet을 구성할 수 있는 것은 만들 때뿐이에요.
- 사용자는
ec2:DescribeInstanceStatus작업을 호출할 권한이 있을 때만 상태 검사 교체를 사용할 수 있어요.
Console
비정상 Spot 인스턴스를 교체하도록 Spot Fleet 구성하기
- 정의된 파라미터로 Spot Fleet 요청 만들기의 Spot Fleet 생성 단계를 따릅니다.
- 비정상 Spot 인스턴스를 교체하도록 플릿을 구성하려면 Additional launch parameters를 확장하고 Health check 아래에서 Replace unhealthy instances를 선택합니다. 이 옵션을 활성화하려면 먼저 Maintain target capacity를 선택해야 해요.
AWS CLI
비정상 Spot 인스턴스를 교체하도록 Spot Fleet 구성하기
request-spot-fleet 명령을 SpotFleetRequestConfig의 ReplaceUnhealthyInstances 속성과 함께 사용합니다.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "lowestPrice",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"TargetCapacity": 10,
"ReplaceUnhealthyInstances": true
}
}
PowerShell
비정상 Spot 인스턴스를 교체하도록 Spot Fleet 요청 구성하기
Request-EC2SpotFleet cmdlet을 -SpotFleetRequestConfig_ReplaceUnhealthyInstance 파라미터와 함께 사용합니다.
-SpotFleetRequestConfig_ReplaceUnhealthyInstance $true
더 알아보기
- Spot Fleet 권한
- Spot Fleet 태그 지정하기