Amazon EC2 Auto Scaling のスケーリングのクールダウン - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 Auto Scaling のスケーリングのクールダウン

重要

ベストプラクティスとして、シンプルスケーリングポリシーとスケーリングクールダウンを使用しないことをお勧めします。ターゲット追跡スケーリングポリシーまたはステップスケーリングポリシーは、スケーリングパフォーマンスに適しています。スケーリングメトリクスの値が減少または増加するにつれて Auto Scaling グループのサイズを比例して変更するスケーリングポリシーの場合は、簡易スケーリングまたはステップスケーリングのいずれかでターゲットを追跡することをお勧めします。

Auto Scaling グループ用にシンプルなスケーリングポリシーを作成する場合は、スケーリングクールダウンを同時に設定することをお勧めします。

Auto Scaling グループは、インスタンスの起動または終了後、クールダウン期間が終了するのを待ってから、シンプルスケーリングポリシーによって開始される追加のスケーリングアクティビティを開始します。クールダウン期間の目的は、Auto Scaling グループを安定させ、以前のスケーリングアクティビティの影響が表示される前に追加のインスタンスを起動または終了しないようにすることです。

例えば、CPU使用率の単純なスケーリングポリシーで 2 つのインスタンスの起動が推奨されているとします。Amazon EC2 Auto Scaling は 2 つのインスタンスを起動し、クールダウン期間が終了するまでスケーリングアクティビティを一時停止します。シンプルスケーリングポリシーによって開始されたスケーリングアクティビティを再開できるのは、このクールダウン期間の終了後になります。CPU 使用率がアラームの上限しきい値を再度超過すると、Auto Scaling グループは再びスケールアウトし、クールダウン期間が有効になります。ただし、メトリクス値を低減させるためには 2 個のインスタンスで十分であった場合、グループは現行のサイズのままになります。

考慮事項

以下の考慮事項は、シンプルスケーリングポリシーとスケーリングクールダウンの使用時に適用されます。

  • ターゲット追跡ポリシーとステップスケーリングポリシーは、クールダウン期間の終了を待つことなく、ただちにスケールアウトアクティビティを開始できます。代わりに、Auto Scaling グループがインスタンスを起動するたびに、個々のインスタンスにはウォームアップ期間があります。詳細については、「Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する」を参照してください。

  • スケジュールされたアクションがスケジュールされた時刻に開始されるときも、クールダウン期間の終了を待つことなく、ただちにスケーリングアクティビティを開始できます。

  • インスタンスが異常になった場合、Amazon EC2 Auto Scaling はクールダウン期間が終了するのを待ってから、異常のあるインスタンスを置き換えます。

  • 複数のインスタンスが起動または終了される場合は、最後のインスタンスの起動または終了が完了した時点でクールダウン期間 (デフォルトのクールダウンまたはスケーリングポリシー固有のクールダウン) が実施されます。

  • Auto Scaling グループを手動でスケールするときは、クールダウンの終了を待たないことがデフォルトになります。ただし、 AWS CLI または を使用して手動でスケーリングする場合、この動作を上書きSDKしてデフォルトのクールダウンを適用できます。

  • デフォルトで、Elastic Load Balancing は登録解除 (Connection Draining) プロセスが完了するまで 300 秒間待機します。グループが Elastic Load Balancing ロードバランサーの背後にある場合は、クールダウン期間を開始する前に、終了されるインスタンスが登録解除されるのを待ちます。

追加の遅延を発生させる可能性のあるライフサイクルフック

ライフサイクルフックが呼び出される場合、クールダウン期間はライフサイクルアクションの完了後、またはタイムアウト期間の終了後に開始されます。例えば、インスタンス起動用のライフサイクルフックがある Auto Scaling グループについて考えてみましょう。アプリケーションで需要の増加が生じると、グループはキャパシティーを追加するためにインスタンスを起動します。ライフサイクルフックが存在することから、インスタンスは待機状態になり、シンプルスケーリングポリシーによるスケーリングアクティビティは一時停止されます。インスタンスが InService 状態になると、クールダウン期間が開始します。クールダウン期間が終了すると、シンプルなスケーリングポリシーのアクティビティが再開されます。

Elastic Load Balancing を有効にすると、スケールインの目的で、終了用に選択されたインスタンスが Connection Draining (登録解除の遅延) を開始したときにクールダウン期間が開始されます。クールダウン期間は、Connection Draining が完了したり、ライフサイクルフックがそのアクションを完了するのを待つことはありません。つまり、簡易スケーリングポリシーによるスケーリングアクティビティは、スケールインイベントの結果がグループの容量に反映されるとすぐに再開できます。これ以外の場合は、3 つのアクティビティ (Connection Draining、ライフサイクルフック、およびクールダウン期間) のすべてが完了するまで待機することになり、Auto Scaling グループがスケーリングを一時停止しなければならない時間が大幅に長くなります。

デフォルトのクールダウン期間を変更する

Amazon EC2 Auto Scaling Auto Scaling コンソールで Auto Scaling グループを最初に作成するときに、デフォルトのクールダウンを設定することはできません。デフォルトで、このクールダウン期間は 300 秒 (5 分) に設定されています。これは、グループの作成後に必要に応じて更新できます。

デフォルトのクールダウン期間を変更する (コンソール)

Auto Scaling グループの作成後、[Details] (詳細) タブの [Advanced configurations] (高度な設定) で [Edit] (編集) を選択します。[Default cooldown] (デフォルトのクールダウン) で、インスタンスの起動時間やその他のアプリケーションニーズに基づいて、希望する時間を選択します。

デフォルトのクールダウン期間を変更する (AWS CLI)

以下のコマンドを使用して、新しい、または既存の Auto Scaling グループのデフォルトのクールダウンを変更します。デフォルトのクールダウンが定義されていない場合は、デフォルト値の 300 秒が使用されます。

デフォルトのクールダウンの値を確認するには、 describe-auto-scaling-groups コマンドを使用します。

特定のシンプルスケーリングポリシーにクールダウン期間を設定する

デフォルトで、すべてのシンプルスケーリングポリシーは Auto Scaling グループに定義されているデフォルトのクールダウン期間を使用します。特定のシンプルスケーリングポリシーにクールダウン期間を設定するには、ポリシーを作成または更新するときに、オプションのクールダウンパラメータを使用します。ポリシーにクールダウン期間を指定すると、デフォルトのクールダウンが上書きされます。

スケーリングポリシー固有のクールダウン期間の一般的な用途の 1 つは、スケールインポリシーを使用することです。このポリシーはインスタンスを終了するため、Amazon EC2 Auto Scaling は追加のインスタンスを終了するかどうかを判断するのにより少ない時間を必要とします。インスタンスを終了するオペレーションは、インスタンスを起動するよりもはるかに高速です。したがって、デフォルトのクールダウン期間である 300 秒は長すぎます。この場合、スケールインポリシーの値が低いスケーリングポリシー固有のクールダウン期間は、グループのスケールインを高速化することでコストを削減するのに役立ちます。

コンソールでシンプルスケーリングポリシーを作成または更新するには、グループの作成後に [Automatic scaling] (自動スケーリング) タブを選択します。を使用してシンプルなスケーリングポリシーを作成または更新するには AWS CLI、 put-scaling-policy コマンドを使用します。詳細については、「ステップスケーリングポリシーおよび簡易スケーリングポリシー」を参照してください。