【新機能】Amazon EC2 Spot FleetがAuto Scaling対応。より安いEC2がより使いやすく。

2016.09.02

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

こんにちは、せーのです。今日はEC2の賢い買い方「Spot Fleet」の新機能をご紹介します。

Spot Fleetってなんだっけ

Spot FleetとはSpotインスタンスの買い方の一種で、条件を指定(これくらいのメモリでこれくらいの大きさのインスタンスをいくらくらいの価格で)しておくとAWSがEC2のSpotインスタンスの価格を監視、条件に合ったEC2を見つけ出して起動、逆に使いたい価格より高くなったEC2は自動的に廃棄する、といったローテーションを自動で行ってくれる機能です。これで予算枠をはみ出すことなく必要なEC2を必要なだけ用意して使うといった事ができるようになります。

今まではこのSpot Fleet、指定したキャパシティを維持するような設定しか出来ませんでしたが今回のアップデートでCloudWatchのMetric値に合わせてその数を上下させる事ができるようになりました。

ここまで連動できる

今回はEC2、ECS、SQSのMetricに連動することができるので

  • ECSのCPU使用率に基づいてEC2の数を自動で上下させるアーキテクトをSpot Fleetで
  • SQSのキュー数によって処理バッチの数を上下させるアーキテクトをSpot Fleetで
  • Spot FleetのMaxPercentCapacityAllocation(スポットのキャパシティのうち最大のもの)をトリガーとしたSpot Fleet
  • 毎秒ごとのリクエスト数やレスポンス時間を元にサーバーの数を上下させるWebサービスをSpot Fleetで

のようなことが出来るようになります。今まで一般的に行われていたCloudWatchの監視項目の値をトリガーにしてAutoScalingの数を上下させる、という仕組みをそのままSpot Fleetに置き換えてコストを抑えることが出来るわけですね。

やってみた

ではやってみましょう。まずはSpot Fleetの作成です。EC2よりスポットインスタンスを選択します。

spotfleetas1

さくさくっとSpot Fleetを設定します。今回はm3系で4つのインスタンスを維持するように設定してみます。Auto Scalingに対応させるにはリクエストタイプを「リクエストと維持」に選択しておいて下さい。

spotfleetas2

インスタンスのセキュリティグループやHDDサイズを指定して

spotfleetas3

あとは作成ボタンを押せばもう完成です。

spotfleetas4

AWSがいい感じの価格のEC2を自動入札して取ってきてくれます。

spotfleetas5

次にトリガーとなるリソースを準備します。今回はSQSのキュー数によって上下させたいと思います。SQSのキューを一つつくり

spotfleetas7

spotfleetas8

適当にメッセージを4つほど入れておきます。

spotfleetas9

次はCloudWatchのアラームを作ります。CloudWatchの画面からアラームの作成を選択します。

spotfleetas6

先ほどのSQSが設定できていれば選択対象にSQSができているのでそれを選択します。

spotfleetas10

spotfleetas11

SQSのMetricの中から「ApproximateNumberOfMessageVisible(キューから利用可能になったメッセージの数)」を選択し、それぞれ上限と下限のアラームを一つづつ作ります。今回は10個以上キューが溜まったら発動するアラームとキューが2個以下になった場合に発動するキューをそれぞれ作りました。

spotfleetas13

spotfleetas14

最後にこのアラームをSpot Fleetのトリガーに設定します。EC2のスポットインスタンスのページに戻り、先程作ったSpotFleetを選択し、下部にある[autoscaling]リンクを押下するとconfigureボタンが出てきますのでそちらを押してトリガーを設定します。10個以上キューが溜まったら台数を増やす、2個以下なら台数を減らす、という設定にします。

spotfleetas16

これで設定は完了です。SQSからメッセージをクリアしてみます。

spotfleetas17

しばらく待つとCloudWatchのアラームが発動します。

spotfleetas18

それに合わせてEC2Spotの数が減っていってるのがわかります。

spotfleetas19

どうでしょう、簡単ですね。

まとめ

いかがでしたでしょうか。今回の機能を使うとよりコストを押さえて柔軟な対応が出来るようになります。みなさんも是非計画的にEC2を使ってみてください。

参考リンク