スポットインスタンス

スポットインスタンスは、需要に応じて時間単価が変動するEC2インスタンスです。スポットインスタンスの時間単価は、通常オンデマンドインスタンスの時間単価よりもかなり低くなります。ただし、スポットインスタンスがいつクラスターで使えるようになるのかをユーザーがコントロールすることはできません。スポットインスタンスの価格を入札したあと、その入札価格が市場価格を上回った時にのみスポットインスタンスは動作し、入札価格が市場価格を下回れば終了させられます。

クラスターのノード数を増やすことで、ジョブのパフォーマンスを上げられるかもしれないので、スポットインスタンスをクラスターのワーカーノードとして使いたいこともあるでしょう。スポットインスタンスが終了させられてもジョブが継続されるようにするために、Altusではスポットインスタンスはコンピュートワーカーノードとしてしか利用できないようになっています。コンピュートワーカーノードは演算プロセスのみを実行し、ステートレスであり、終了や再起動してもジョブの実行に問題は生じません。

Altusは、クラスター内でのスポットインスタンスの利用状況を管理します。ジョブを実行中のスポットインスタンスが終了すると、Altusは15分間隔で新しいインスタンスの起動を試みます。Altusは、起動された新しいインスタンスを使って実行中のジョブの速度を高めようとします。

クラスターのコンピュートワーカーノードとしてスポットインスタンスを利用するかどうかを判断する際には、以下のガイドラインを利用してください。
  • スポットインスタンスはコンピュートワーカーノードとしてのみ利用できます。

    コンピュートワーカーノードにオンデマンドインスタンスを使うか、スポットインスタンスを使うかは指定できます。コンピュートワーカーノードにスポットインスタンスを使うように設定したものの、利用できるスポットインスタンスがない場合には、ジョブはワーカーノード上で実行されます。

    ジョブを完了させるのに必要なプロセスを実行するワーカーノードをクラスター内で確保するため、ワーカーノードにはオンデマンドインスタンスを使わなければなりません。ワーカーノードにスポットインスタンスを使うよう設定することはできません。

  • スポットインスタンスの入札価格には、市場価格を上回る可能性が十分あるだけの価格を設定してください。

    通常、オンデマンドインスタンスの価格の75%はいい目安になるでしょう。スポットインスタンスを頻繁に使うようになれば、妥当な安さでありながら市場価格を上回る可能性が十分にあるような入札価格を設定するための基準をうまく定められるようになるでしょう。

  • 必要なインスタンス数よりオンデマンドインスタンスの数を少なくして、不足分はスポットインスタンスを多めに取りましょう。

    たとえばサービスレベルアグリーメントを満たすには10個のオンデマンドインスタンスがジョブに必要なことが分かっているとします。この場合、オンデマンドインスタンスは5つにして、スポットインスタンスを15に設定すれば、ジョブを実行するインスタンス数を多くしながら、コストは同等もしくは低くすることができます。

    この戦略を採れば、ほとんどのジョブのプロセスは安価なインスタンス上で実行されることになります。これは、SLAを満たすうえでコスト効率の良いやり方です。

AWSのスポットインスタンスに関する詳しい情報については、AWSのドキュメントスポットインスタンスを参照してください。