チュートリアル: スポットフリートを使ったインスタンスの分量の指定 - Amazon Elastic Compute Cloud

チュートリアル: スポットフリートを使ったインスタンスの分量の指定

このチュートリアルでは、サンプル株式会社という名前の架空の会社を使用して、インスタンス分量指定を使ったスポットフリートリクエストのプロセスを説明します。

目的

製薬会社であるサンプル株式会社は、癌と闘うために使用される可能性のある化合物を選別するために Amazon EC2 の計算処理能力を利用したいと考えています。

計画

サンプル株式会社はまず、「Spot Best Practices」を確認します。次に、サンプル株式会社はスポットフリートに関する以下の要件を確認します。

インスタンスタイプ

サンプル株式会社には、60 GB 以上のメモリと 8 つの仮想 CPU (vCPU) で最適に実行される、計算能力とメモリに負担がかかるアプリケーションがあります。同社は、できるだけ低価格でアプリケーション用のこれらのリソースを最大化したいと考えています。サンプル株式会社は、以下のいずれかの EC2 インスタンスタイプがそのニーズを満たすと判断します。

インスタンスタイプ メモリ (GiB) vCPU

r3.2xlarge

61

8

r3.4xlarge

122

16

r3.8xlarge

244

32

ユニット単位のターゲット容量

インスタンスの分量指定を使用すると、ターゲット容量はインスタンスの数 (デフォルト)、またはコア (vCPU)、メモリ (GiB) とストレージ (GB) との要素の組み合わせで表すことができます。アプリケーションのベース (60 GB の RAM と 8 個の vCPU) を 1 ユニットとして考えることで、サンプル株式会社はこの量の 20 倍で十分ニーズに合うと決定します。これにより、会社はスポットフリートリクエストのターゲット容量を 20 に設定します。

インスタンスの分量

ターゲット容量の決定後、サンプル株式会社はインスタンスの分量を計算します。各インスタンスタイプのインスタンスの分量を計算することは、以下のように、ターゲット容量に達するために必要な各インスタンスタイプのユニットの数を決定することです。

  • r3.2xlarge (61.0 GB、8 個の vCPU) = 1/20 ユニット

  • r3.4xlarge (122.0 GB、16 個の vCPU) = 2/20 ユニット

  • r3.8xlarge (244.0 GB、32 個の vCPU) = 4/20 ユニット

その結果、サンプル株式会社は、1、2、4 のインスタンス分量をスポットフリートリクエストの各起動設定に割り当てます。

ユニット時間あたりの価格

サンプル株式会社は、料金の出発点としてインスタンス時間あたりの「オンデマンド料金」を使用します。最近のスポット料金または 2 つの組み合わせを使用することもできます。ユニット時間あたりの料金を計算するために、インスタンス時間あたりの出発点の料金を分量で割ります。次に例を示します。

インスタンスタイプ オンデマンド価格 インスタンスの分量 ユニット時間あたりの価格

r3.2xLarge

$0.7

1

$0.7

r3.4xLarge

$1.4

2

$0.7

r3.8xLarge

$2.8

4

$0.7

サンプル株式会社は、ユニット時間あたりのグローバルな料金として 0.7 USD を使用し、3 つのインスタンスタイプすべてで競争力を高めることもできます。また、r3.8xlarge の起動条件のなかで、1 ユニット時間あたりの全体料金を 0.7 USD、そして 1 ユニット時間あたりの指定入力料金を 0.9 USD とすることもできます。

アクセス許可の確認

スポットフリートのリクエストを作成する前に、サンプル株式会社は必要アクセス許可の IAM ロールがあることを確認します。詳細については、「スポットフリートアクセス許可」を参照してください。

リクエストの作成

サンプル株式会社は、スポットフリートリクエスト用に次の設定を使用して 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 } ] }

サンプル株式会社は、request-spot-fleet コマンドを使用してスポットフリートリクエストを作成します。https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html

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

詳細については、「スポットフリートのリクエストタイプ」を参照してください。

フルフィルメント

配分戦略では、スポットインスタンスの提供元となるスポットキャパシティプールが決定されます。

lowestPrice 戦略 (デフォルトの戦略) では、受理時にユニットあたりの料金が最低値であるプールから スポットインスタンス が取得されます。20 ユニットの容量を提供するために、スポットフリートは、20 個の r3.2xlarge インスタンス (20 ÷ 1)、10 個の r3.4xlarge インスタンス (20 ÷ 2)、または 5 個の r3.8xlarge インスタンス (20 ÷ 4) を起動します。

サンプル株式会社が diversified 戦略を採用する場合、スポットインスタンス は 3 つのすべてのプールから取得されます。スポットフリートは、6 個の r3.2xlarge インスタンス (6 ユニットを提供)、3 個の r3.4xlarge インスタンス (6 ユニットを提供)、2 個の r3.8xlarge インスタンス (8 ユニットを提供)、合計 20 ユニットを起動します。