On-DemandとSpot Instanceを併用したAutoScalingについて

去年のReInventで発表された下記の機能について。AutoScalingを構成するEC2のインスタンス購入オプションを、On-DemandとSpotで併用できる機能となります。今まで知らなかったので、調べたことまとめ。

AWS公式ブログの紹介。

複数のインスタンスタイプをサポートする新しい EC2 Auto Scaling グループ & 購入オプション

Launch Template vs Launch Configuration

本機能を利用するには、AutoScaling GroupをLaunch Templateから構成する必要があります。今回調べてわかったのですが、Launch Configurationが完全にいらない子になっていました。

起動テンプレートは、インスタンス設定情報を指定する起動設定と似ています。Amazon マシンイメージ (AMI) の ID、インスタンスタイプ、キーペア、セキュリティグループ、その他 EC2 インスタンスを起動するために使用するパラメータが含まれています。ただし、起動設定の代わりに起動テンプレートを定義すると、複数のバージョンのテンプレートを使用することができます。バージョニングを使用すれば、フルセットのパラメータのサブセットを作成し、それを再利用してその他のテンプレートやテンプレートバージョンを作成することができます。たとえば、タグやネットワーク設定などの一般的な設定パラメータを定義するデフォルトのテンプレートを作成し、他のパラメータを同じテンプレートの別のバージョンの一部として指定することができます。

T2 Unlimited インスタンスなど、Amazon EC2 の最新機能を使用できるようにするため、起動設定ではなく起動テンプレートを使用することをお勧めします。

Launch Templates

公式でもLaunch Templateをおすすめしており、Launch Configurationは完全に忘れてしまって良さげな感じ。今後、敢えてLaunch Configurationを利用する理由が見つからなかったです。

AutoScaling Groupの設定

上でのAWS公式ブログで紹介されている通りなのですが、 Optional On-Demand BaseOn-Demand Percentage Above Base に関する点のみ、理解しにくかったので記載します。

[Optional On-Demand Base (オプションのオンデマンドベース)] で、オンデマンドインスタンスが満たす必要がある Auto Scaling グループの初期容量となるインスタンス数を指定します。

このパラメータで指定したインスタンス数は、必ずオンデマンドインスタンスで起動します。

[On-Demand Percentage Above Base (ベースを超える場合のオンデマンドの割合)] で、オンデマンドベース数 (オプション) を超える場合の追加容量となるオンデマンドインスタンスとスポットインスタンスの割合を指定します。

Optional On-Demand Base で起動した後の残りインスタンスは、指定%を超過するようオンデマンドインスタンスが起動します。

例えば以下みたいな感じです。

AutoScaling構成

  • 必要インスタンス数: 4
  • Optional On-Demand Base: 1
  • On-Demand Percentage Above Base: 30%

f:id:goodbyegangster:20190726120829p:plain

On-Demand Percentage Above Base で起動したインスタンス1台を除いて、インスタンス3台のオンデマンド割合を30%超過するよう調整して起動してくれます。


尚、同様のことをSpot Fleetの機能でも利用できます。Lauch Templateを利用してSpot Fleetを作成すると、Fleet内のインスタンスをSpot InstanceとOn-Demand Instanceの混在構成とできます。