EC2のオートスケールが複数インスタンスタイプの混在指定に対応、廉価なスポット利用が実現しやすくなりました。

EC2のオートスケーリンググループで複数のインスタンスを簡単に組み合わせて利用出来るようになりました。M5系のインスタンスファミリーで廉価なスポットとオンデマンドの混在を試してみました。
2018.11.16

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

はじめに

AWSチームのすずきです。

2018年11月14日のアップデートで、1つのオートスケーリンググループ設定内で複数のインスタンスタイプや購入モデル(オンデマンド/スポット)を組み合わせた設定が可能になりました。

早速試す機会がありましたので、紹介させて頂きます。

New – EC2 Auto Scaling Groups With Multiple Instance Types & Purchase Options

環境

  • リージョンはオレゴン(us-west2)を利用しました。
  • 「M5#」のバリエーションが多く、AZ間のスポット価格に差異があるリージョンとしてオレゴンを利用しました。
  • 今回のオートスケールのアップデート、東京リージョンを含むAWSの各国リージョンで利用可能です。

  • 複数のインスタンスタイプと購入モデルを組み合わせたオートスケーリンググループ設定は、起動テンプレート(LaunchTemplate)を必要とします。

  • 下記の記事で紹介したCloudFormationテンプレートを流用しました。
  • ec2-launchtemplate-autoscaling.yaml
  • CloudFormationがオートスケールのフリート設定に対応後、改めて紹介予定です。

https://dev.classmethod.jp/cloud/aws/cfn-launch-template-ec2/

設定

オートスケーリンググループ設定

  • CloudFormationで設置済みの「Auto Scaling グループ」を、EC2ダッシュボードを利用して変更しました。

フリートの構築

  • 起動テンプレートを利用したオートスケーリンググループ設定では、フリートの構築として「購入モデルとインスタンスの組み合わせ」が指定可能になりました。

フリートの設定

インスタンスタイプ

  • m5.large (Intel)、m5d.large(SSD有)、m5a.large(AMD) 3つのインスタンスタイプを混在させる設定としました。

オプションのオンデマンドベース

  • 1台はオンデマンドインスタンスで起動する指定としました。

オンデマンド割合

  • 20%をオンデマンドとする設定としました。

結果

オートスケールの希望起動数10に対し、起動したインスタンスの内訳は以下の通りでした。

オンデマンド

  • オンデマンドベースで1台、20%のオンデマンド指定により3台のインスタンスがオンデマンド(ノーマル)で起動しました。

スポット

  • 7台のスポットインスタンスが起動しました。

「us-west2c」はスポット相場が上昇していた「m5.large」ではなく、「m5d.large」が利用されていました。

スポット相場

m5.large
  • us-west-2a : $0.0339
  • us-west-2b : $0.0338
  • us-west-2c : $0.0343

m5a.large
  • us-west-2a : $0.0338
  • us-west-2b : $0.0338
  • us-west-2c : $0.0338

m5d.large
  • us-west-2a : $0.0338
  • us-west-2b : $0.0338
  • us-west-2c : $0.0338

コスト比較

月額コスト比較

  • 「m5.large」 インスタンス1台連続稼働させた月額コストを AWSカリキュレータを用いて求めました
  • 本日時点のスポット価格はオンデマンドの約1/3。為替やスポット相場が変化しない前提であれば、3年RIを按分して求めた月額コストと比較しても廉価な利用できる状態でした。
インスタンス区分 月額コスト
オンデマンド(契約不要) $70.3
1 年間、すべて前払い、リザーブド $41.8
3 年間、すべて前払い、リザーブド $26.9
スポット(2018/11/15時点) $24.7

オンデマンド+スポット

  • 「m5.large」 10台を連続稼働させた場合の月額コストを求めました。
スポット利用割合 0% 20% 40% 60% 80% 100%
オンデマンド $702.8 $562.2 $421.7 $281.1 $140.6 $0.0
スポット $0.0 $49.3 $98.7 $148.0 $197.4 $246.7
合計 $702.8 $611.6 $520.4 $429.2 $338.0 $246.7

RI + スポット

  • オンデマンド稼働分のリザーブドインスタンスを手配する事で、より最適化が実現できる可能性があります。
スポット利用割合 0% 20% 40% 60% 80%
1年RI(前払なし) $445.3 $356.2 $267.2 $178.1 $89.1
スポット $0.0 $49.3 $98.7 $148.0 $197.4
合計 $445.3 $405.6 $365.9 $326.2 $286.5

まとめ

オートスケールで複数のインスタンスタイプや、オンデマンド/スポットの混在が可能になった事で、 オートスケール環境で常時稼働する台数分はリザーブドインスタンス、 スケジュールや負荷などに応じた短期間の増強は、廉価に利用できるスポットインスタンスといった利用も実現しやすくなりました。

昨年(2017年12月)より、スポットインスタンスの価格変動が穏やかになった事で強制終了するケースは少なくなっています。

Amazon EC2のスポットインスタンスの価格変動が穏やかになりました

もしスポットインスタンスの強制終了に備える必要がある場合は、以下のアップデートなども活用頂ければと思います。

Amazon EC2 Spot の 2 分警告が、Amazon CloudWatch イベントで利用可能になりました

また、在庫不足に起因するInsufficientInstanceCapacityエラーについては、オンデマンドインスタンスでも 発生することがあります。その対策の一つとして今回のアップデートをお試しください。

インスタンス容量の不足