メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

スポット群 の詳細

スポット群 は、スポットインスタンス (オプションでは オンデマンドインスタンス) のコレクションまたはフリートです。

スポット群 は、スポット群 リクエストで指定した容量ターゲットを満たすような スポットインスタンス と オンデマンドインスタンス の数を起動しようと試みます。スポット料金が現在のスポット料金を超過し、利用可能な容量がある場合に、スポットインスタンス へのリクエストが実行されます。また、スポット群 は、スポット料金や可能な容量に変化が生じたことによって スポットインスタンス が中断した場合にフリートのターゲット容量を維持するよう試みます。

スポットインスタンス プールとは、同様のインスタンスタイプ、オペレーティングシステム、アベイラビリティーゾーン、ネットワークプラットフォーム(EC2-Classic あるいは EC2-VPC)の一連の使われていない EC2 インスタンスです。スポット群 のリクエストを行う場合に複数の起動条件を含めることができ、これにはインスタンスタイプ、AMI、アベイラビリティーゾーン、またはサブネットがあります。スポット群 は、スポット群 のリクエストとその スポット群 リクエストの設定を含む起動条件に基づいてリクエストを満たすために使用される スポットインスタンス プールを選択します。スポットインスタンス は選択されたプールから取得されます。

スポット群 でのオンデマンド

インスタンスのキャパシティーを常に確保するには、オンデマンドキャパシティーのリクエストを スポット群 リクエストに含めることができます。スポット群 リクエストでは、希望するターゲットキャパシティーとそのキャパシティーのうちどのくらいがオンデマンドであるかを指定します。このバランスは、利用可能な EC2 キャパシティーと可用性がある場合に起動されるスポットキャパシティーで構成されます。たとえば、スポット群 リクエストでターゲットキャパシティーを 10、オンデマンドキャパシティーを 8 と指定すると、Amazon EC2 は 8 キャパシティーユニットをオンデマンドとして、2 キャパシティーユニット (10-8=2) をスポットとして起動します。

スポット群 配分戦略

スポット群 の配分戦略は、起動条件による スポットインスタンス プールからどのように スポット群 リクエストを満たすかについて決定します。以下に、スポット群 リクエストで指定できる配分戦略を示します。

lowestPrice

スポットインスタンス は、最低価格のプールから取得されます。これはデフォルトの戦略です。

diversified

スポットインスタンス はすべてのプールに分散されます。

オンデマンドキャパシティーターゲットでは、スポットインスタンス の配分戦略 (低価格あるいは分散のどちらでも) を引き続き採用しながら、オンデマンド料金に基づく最低価格を常に選択します。

配分戦略を選択する

ユースケースに基づいて スポットフリート を最適化できます。

フリートが小さい場合、または短時間の実行である場合、すべてのインスタンスが単一の スポットインスタンス プールにあるとしても、スポットインスタンス が中断される可能性は低くなります。これより、lowestPrice 戦略は、低コストを提供している期間に条件に合いやすくなります。

フリートが大サイズ、または長期間実行される場合には、複数のプールに スポットインスタンス を分散することでフリートの可用性を改善できます。たとえば、スポット群 のリクエストの条件が 10 プールとして、ターゲット容量が 100 インスタンスとすると、スポット群 はプールごとに 10 個の スポットインスタンス を起動します。 1 つのプールのスポット料金がこのプールの上限料金を超える場合、フリートの 10% のみに影響がおよびます。この戦略を使用すると、いずれのプールにおいても経時的にフリートが受けるスポット料金の上昇の影響を減少させます。

diversified 戦略では、スポット群 は、オンデマンド価格以上のスポット料金のいずれのプールにも スポットインスタンス を起動しません。

ターゲット容量を維持する

スポット料金または スポットインスタンス プール容量の変動により スポットインスタンス が終了された後、スポット群 の代替 スポットインスタンス が起動されます。配分戦略が lowestPrice である場合、スポット群 は、スポット料金が現在最低値のプールに代替インスタンスを起動します。配分戦略が diversified である場合には、スポット群 は残りのプールに代替 スポットインスタンス を分散します。

スポット料金の優先

各 スポット群 リクエストには、グローバルな上限料金を含めることも、デフォルト (オンデマンド料金) を使用することもできます。スポット群 は、これを起動条件のデフォルト上限料金として使用します。

任意で 1 つまたは複数の起動条件に上限料金を指定することができます。 これは、起動条件に指定された料金です。起動条件に特定の料金が含まれる場合、スポット群 は起動条件の上限料金としてこの料金を使用し、全体の上限料金に優先することになります。特定の上限料金を含まないそのほかの起動条件は、全体の上限料金を引き続き使用することにご注意ください。

スポット群 インスタンスの分量指定

スポットインスタンス のフリートをリクエストするとき、それぞれのインスタンスタイプがアプリケーションのパフォーマンスに応じるように容量ユニットを定義し、また、インスタンス分量指定 を利用して スポットインスタンス プールごとに上限価格を調整できます。

デフォルトでは、指定したスポット料金は 1 インスタンス時間当たりの入札料金を表します。インスタンスの分量指定機能を使用すると、指定した料金は ユニット時間ごとの料金となります。ユニット時間あたりの料金は、インスタンスタイプの料金をそのユニットの数で割って計算できます。スポット群 では、ターゲット容量をインスタンス分量で割ることで起動する スポットインスタンス の数を計算します。その結果が整数でなければ、スポット群 はその数を次の整数に切り上げ、これによりフリートのサイズがターゲット容量以上になります。起動されたインスタンスの容量がリクエストされたターゲット容量を超えた場合でも、スポット群 は起動仕様で指定したどのプールでも選択できます。

次の表には、10 のターゲット容量の スポット群 リクエストのユニット当たり入札価格を特定するために計算の例が含まれています。

インスタンスタイプ インスタンスの分量 インスタンス時間あたりのスポット料金 ユニット時間あたりの価格 起動されたインスタンスの数

r3.xlarge

2

0.05 USD

.025

(.05 ÷ 2)

5

(10 ÷ 2)

r3.8xlarge

8

0.10 USD

.0125

(.10 ÷ 8)

2

(10 ÷ 8、結果切り上げ)

次に示すように、スポット群 を使用して、受理時のユニットごとの最低価格のプールに指定するターゲット容量をプロビジョニングします。

  1. スポット群 のターゲット容量を、インスタンス (デフォルト) あるいは仮想 CPU、メモリ、ストレージまたはスループットからご希望のユニットで設定します。

  2. ユニットあたりの料金を設定します。

  3. 各起動設定で、インスタンスタイプがターゲット容量に対して必要なユニット数である分量を指定します。

インスタンスの分量指定例

次の設定の スポット群 を検討します。

  • ターゲット容量 24

  • r3.2xlarge のインスタンスタイプの起動条件と分量 6

  • c3.xlarge のインスタンスタイプの起動条件と分量 5

分量とは、インスタンスタイプがターゲット容量に対して必要なユニット数を表します。 最初の起動条件がユニットあたりの料金を最低値で提供する場合 (インスタンス時間あたりの r3.2xlarge の料金を 6 で割ったもの)、スポットフリートはこれらのインスタンスから 4 つを起動します (24 を 6 で割ったもの)。

2 番目の起動条件がユニットあたりの料金を最低値で提供する場合 (インスタンス時間あたりの c3.xlarge の料金を 5 で割ったもの)、スポット群 はこれらのインスタンスから 5 つを起動します (24 を 5 で割ったもの、結果が切り上げられる)。

インスタンスの分量指定と配分戦略

次の設定の スポット群 を検討します。

  • ターゲット容量 30

  • c3.2xlarge のインスタンスタイプの起動条件と分量 8

  • m3.xlarge のインスタンスタイプの起動条件と分量 8

  • r3.xlarge のインスタンスタイプの起動条件と分量 8

スポット群 は、4 つのインスタンスを起動します (30 を 8 出割ったもの、結果を切り上げ)。lowestPrice 戦略では、すべての 4 つのインスタンスはユニットあたりの最低料金を提供するプールから取得されます。diversified 戦略では、スポット群 は 3 プールごとに 1 つのインスタンスを起動し、そしてこの 3 つのプールのいずれかから取得された 4 つ目のインスタンスがユニットあたりの最低スポット料金を提供することになります。

チュートリアル: スポット群 を使ってインスタンスの分量を指定する

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

目的

製薬会社であるサンプル株式会社は、癌と闘うために使用される可能性のある化合物を選別するために 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 コマンドを使用して スポット群 リクエストを作成します。

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 ユニットを起動します。