AWS Auto Scaling のスポットインスタンスの配分戦略にスポット価格と中断率の両方を考慮するいい塩梅の戦略が追加されました

2022.11.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Auto Scaling で複数のインスタンスタイプの中からスポットインスタンスを利用する際にスポット価格と、中断率の両方を考慮してインスタンスタイプを自動選択する配分戦略が追加されました。Auto Scaling の他には EC2 Fleet, Spot Fleet でも利用できます。

従来の配分戦略は「スポット価格の安いインスタンスタイプを優先(lowest-price)」するか、「中断確率の低いインスタンスタイプ(capacity-optimized)」を優先するかのどちらかをユースケースに応じて使い分けくださいというスタンスでした。

今回のアップデートで中断確率がもっとも低く、スポット価格がもっとも安いインスタンスタイプをスポットインスタンスプールの中から決定するprice-capacity-optimizedが追加され、配分戦略の推奨値となりました。中断率の考慮はcapacity-optimizedと同等を維持ということですので申し分ないですね。

Auto Scaling group で試してみた

複数インスタンスタイプの中からいい塩梅のインスタンスタイプを選んでくれる配分戦略ということですので意地悪な条件を用意してみます。

スポットインスタンスアドバイザーで中断率がそこそこ高く、スポット価格にバラつきのあるインスタンスタイプを4つチョイスしました。

順当に考えればc6id.12xlargeの中断率が一番低いのでファーストチョイスと思われます。次点をユーザー側で予想するのは難しいです。中断確率が20%を超えるというざっくりとした情報しか確認できません。スポット価格を考えればm1.meduimが他に比べるとオンデマンド価格が安価な上、90%割引なので優先されそうですが、なにぶん古いインスタンスタイプですが在庫があるのかあやしいです。

※中断率、割引率は検証時の情報です。需要と供給のバランスで変動します。

Auto Scaling group の設定値

インスタンスタイプのプールはスポットインスタンスアドバイザーで確認して決めた4つのインスタンスタイプを指定しました。

ここがアップデート箇所です。配分戦略に「料金キャパシティ最適化(推奨)」が追加されています。マネージメントコンソールから設定するとデフォルト値となっていました。

設定は以上です。

なにが起動するのかな?

ALB のターゲットグループに紐付けた Auto Scaling group の環境で検証してみます。

1台起動してみる

Auto Scaling group 要求台数と最小台数を1にしてなんのインスタンスタイプが起動してくるのか見守ってみます。

c6id.12xlargeが起動してきました。予想どおり中断率がもっと低いものから選ばれたようです。

10台起動してみる

10台同時に要求してみます。1台起動中ですので9台追加されることになります。

4種類すべて起動してきました。c6id.12xlargeのみを選択すると急激な利用率増加でキャパシティ不足から中断率が高まったりするとリスク高いでしょうから分散されたのでしょうか。もっと安いm1.mediumが半数の5台ある点はお財布に優しくて助かります、スポット料金も考慮されている感じがします。

CloudFomration 対応状況

CloudFormation テンプレートは対応済みでした。SpotAllocationStrategyの項目にprice-capacity-optimizedが追加されています。

おわりに

いい塩梅の配分戦略(price-capacity-optimized)が追加され推奨値となったというアップデートでした。大量にスポットインスタンスを起動する際はスポットインスタンスの vCPU 数制限のサービスクォータにお気をつけください。

普段は ParallelCluster で頻繁にスポットインスタンスを利用しているのですが、つい2週間前のアップデートで最低価格優先か、中断率低いの優先の2つに対応したばかりでした。スポットインスタンスで大規模な計算するユーザーが求めている配分戦略はprice-capacity-optimizedではないかと思いますので ParallelCluster の追加アップデートにも期待しています。