Amazon Web Services ブログ

新機能 – EC2 スポットフリートの Auto Scaling

EC2 スポットフリートモデル(詳しくは「Amazon EC2 スポットフリート API – 1 回のリクエストで数千台のスポットインスタンスを制御」をご覧ください)では、1 回のリクエストで EC2 インスタンスのフリートを作成できます。お客様はフリートのターゲットキャパシティーを指定し、1 時間あたりの入札価格を入力して、フリートに含めるインスタンスタイプを選択するだけです。

バックグランドで、AWS は最安値のスポットインスタンスを起動することにより、必要なターゲットキャパシティー(インスタンスまたは仮想 vCPU の数で表記)を維持します。やがて、フリート内のインスタンスが価格上昇により終了されると、その時点で最安値の交換用のインスタンスが起動されます。

新しい Auto Scaling
今回、Auto Scaling の追加により、スポットフリートモデルが強化されました。Amazon CloudWatch メトリックスに基づいて、フリートをスケールアップ/ダウンできるようになりました。メトリックスには、EC2、Amazon EC2 Container ServiceAmazon Simple Queue Service (SQS) などの AWS サービスのものを使用できます。代わりに、アプリケーションからパブリッシュしたカスタムメトリックスを使用して、Auto Scaling が開始されるようにもできます。いずれにせよ、これらのメトリックスを使用してフリートのサイズを制御することで、条件や負荷が変わったとしてもアプリケーションの可用性、パフォーマンス、コストをきめ細かく制御できます。以下に示しているのは、この機能の使用開始に必要ないくつかの概念です。

  • コンテナCPU やメモリの使用率メトリックスを使用して、Amazon ECS で動作しているコンテナベースのアプリケーションをスケーリングします。
  • バッチジョブSQS キュー内のメッセージ数に基づいて、キューベースのバッチジョブをスケーリングします。
  • スポットフリート – スポットフリートメトリックス( MaxPercentCapacityAllocation など)に基づいて、フリートをスケーリングします
  • ウェブサービス – 測定された応答時間と 1 秒あたりの平均リクエスト数に基づいて、ウェブサービスをスケーリングします。

スポットフリートコンソール、AWS Command Line Interface (CLI)、または AWS CloudFormation を使用するか、AWS SDKs のいずれかにより API 呼び出しを行うことで、Auto Scaling を設定できます。

私はフリートの起動から始めました。フリートをスケールアップ/ダウンできるようにするために、リクエストタイプとして [Request and Maintain] を使用しました。

フリートは 1 分ほどで稼働状態になりました。

続いて、例示用に SQS キューを作成し、いくつかのメッセージをそのキューに入れて、CloudWatch アラーム(AppQueueBackingUp)を定義しました。このアラームは、キューに 10 件以上のメッセージが入ると起動されます。

また、アラーム(AppQueueNearlyEmpty)も定義しました。このアラームは、キューが空になりそう(メッセージが 2 件以下)になると起動されます。

最後に、このアラームをフリートの ScaleUpScaleDown のポリシーにアタッチしました。

この記事を書き始める前に、SQS キューに 5 件のメッセージを入れました。フリートを起動して、スケーリングポリシーを設定してから、さらに 5 件のメッセージを追加して、アラームが起動されるのを待ちました。

その後、フリートにチェックインすると、キャパシティーが想定どおりに増加したことがわかりました。この結果は [History] タブに表示されました(”New targetCapacity: 5″)。

仕上げとして、キューからすべてのメッセージを消去し、植物の水やりをして戻ると、フリートが想定どおりスケールダウンされたことがわかりました(”New targetCapacity: 2″)。

今すぐ利用可能
この新機能は、スポットインスタンスがサポートされているすべてのリージョンで、今すぐ利用し始めることができます。

Jeff;