튜토리얼: EC2 Fleet이 인스턴스 가중치를 사용하도록 구성하기

튜토리얼: EC2 Fleet이 인스턴스 가중치를 사용하도록 구성하기

이 튜토리얼은 가상의 회사 Example Corp를 예로 들어 **인스턴스 가중치(instance weighting)**를 사용한 EC2 Fleet 요청 과정을 설명해요.

출처: 문서

본문

목표 (Objective)

Example Corp은 제약 회사로, 암과 싸우는 데 사용할 수 있는 화학 화합물을 스크리닝하기 위해 Amazon EC2의 컴퓨팅 파워를 사용하려고 합니다.

계획 (Planning)

Example Corp은 먼저 Spot Best Practices를 검토합니다. 다음으로 Example Corp은 EC2 Fleet의 요구사항을 결정합니다.

인스턴스 유형 (Instance types)

Example Corp은 최소 60GB 메모리와 8개 vCPU에서 가장 잘 작동하는 컴퓨팅 및 메모리 집약적 애플리케이션을 가지고 있어요. 이들은 가능한 가장 낮은 가격으로 애플리케이션의 이 리소스를 극대화하려고 합니다. Example Corp은 다음 EC2 인스턴스 유형 중 어떤 것이든 필요를 충족할 것이라고 결정합니다.

인스턴스 유형 메모리 (GiB) vCPUs
r3.2xlarge 61 8
r3.4xlarge 122 16
r3.8xlarge 244 32

단위의 대상 용량 (Target capacity in units)

인스턴스 가중치를 사용하면 대상 용량이 인스턴스 수(기본값)이거나 코어(vCPU), 메모리(GiB), 스토리지(GB) 같은 요인의 조합이 될 수 있어요. 애플리케이션의 베이스(60GB RAM과 8개 vCPU)를 한 단위로 간주함으로써, Example Corp은 이 양의 20배면 필요를 충족할 것이라고 결정합니다. 그래서 회사는 EC2 Fleet 요청의 대상 용량을 20단위로 설정합니다.

인스턴스 가중치 (Instance weights)

대상 용량을 결정한 후 Example Corp은 인스턴스 가중치를 계산합니다. 각 인스턴스 유형의 인스턴스 가중치를 계산하려면 대상 용량에 도달하는 데 필요한 각 인스턴스 유형의 단위 수를 다음과 같이 결정합니다.

  • r3.2xlarge (61.0 GB, 8 vCPUs) = 20 중 1단위
  • r3.4xlarge (122.0 GB, 16 vCPUs) = 20 중 2단위
  • r3.8xlarge (244.0 GB, 32 vCPUs) = 20 중 4단위

따라서 Example Corp은 EC2 Fleet 요청의 각 실행 구성에 인스턴스 가중치 1, 2, 4를 할당합니다.

단위 시간당 가격 (Price per unit hour)

Example Corp은 가격의 출발점으로 인스턴스 시간당 On-Demand 가격을 사용합니다. 최근 Spot 가격이나 둘의 조합을 사용할 수도 있어요. 단위 시간당 가격을 계산하려면 인스턴스 시간당 출발 가격을 가중치로 나눕니다. 예를 들어:

인스턴스 유형 On-Demand 가격 인스턴스 가중치 단위 시간당 가격
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의 전역 단위 시간당 가격을 사용할 수 있어요. 또는 $0.7 전역 단위 시간당 가격과 r3.8xlarge 실행 사양에 $0.9의 특정 단위 시간당 가격을 사용할 수도 있습니다.

권한 확인 (Verify permissions)

EC2 Fleet을 만들기 전에 Example Corp은 필수 권한이 있는 IAM 역할을 보유하고 있는지 확인합니다. 자세한 내용은 EC2 Fleet prerequisites 문서를 참고하세요.

실행 템플릿 만들기 (Create a launch template)

다음으로 Example Corp은 실행 템플릿(launch template)을 만듭니다. 실행 템플릿 ID는 다음 단계에서 사용됩니다. 자세한 내용은 Create an Amazon EC2 launch template 문서를 참고하세요.

EC2 Fleet 만들기 (Create the EC2 Fleet)

Example Corp은 EC2 Fleet에 대해 다음 구성을 가진 config.json 파일을 만듭니다. 다음 예시에서는 리소스 식별자를 본인의 리소스 식별자로 바꾸세요.

{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "r3.2xlarge",
                    "SubnetId": "subnet-482e4972",
                    "WeightedCapacity": 1
                },
                {
                    "InstanceType": "r3.4xlarge",
                    "SubnetId": "subnet-482e4972",
                    "WeightedCapacity": 2
                },
                {
                    "InstanceType": "r3.8xlarge",
                    "MaxPrice": "0.90",
                    "SubnetId": "subnet-482e4972",
                    "WeightedCapacity": 4
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    }
}

Example Corp은 다음 create-fleet 명령을 사용해 EC2 Fleet을 만듭니다.

aws ec2 create-fleet --cli-input-json file://config.json

자세한 내용은 Create an EC2 Fleet 문서를 참고하세요.

충족 (Fulfillment)

할당 전략은 Spot Instance가 어느 Spot 용량 풀에서 오는지 결정해요.

lowest-price 전략(기본 전략)을 사용하면 Spot Instance는 충족 시점에 단위당 가격이 가장 낮은 풀에서 옵니다. 20단위의 용량을 제공하기 위해 EC2 Fleet은 20개 r3.2xlarge 인스턴스(20÷1), 10개 r3.4xlarge 인스턴스(20÷2), 또는 5개 r3.8xlarge 인스턴스(20÷4)를 실행합니다.

Example Corp이 diversified 전략을 사용했다면 Spot Instance는 세 풀 모두에서 왔을 거예요. EC2 Fleet은 6개 r3.2xlarge 인스턴스(6단위 제공), 3개 r3.4xlarge 인스턴스(6단위 제공), 2개 r3.8xlarge 인스턴스(8단위 제공)를 실행해 총 20단위가 됩니다.

더 알아보기 (Learn more)