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 を有効にすると、スケールインを目的として、終了対象として選択されたインスタンスがコネクションドレインを開始した時点でクールダウン期間が開始されます(登録解除の遅延)。クールダウン期間は、コネクションドレインが終了したり、ライフサイクルフックがアクションを完了したりするのを待つことはありません。つまり、シンプルスケーリングポリシーによるスケーリングアクティビティは、スケールインイベントの結果がグループのキャパシティーに反映され次第再開できることになります。これ以外の場合は、3 つのアクティビティ (Connection Draining、ライフサイクルフック、およびクールダウン期間) のすべてが完了するまで待機することになり、Auto Scaling グループがスケーリングを一時停止しなければならない時間が大幅に長くなります。

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

Amazon EC2 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コマンドを使用します。詳細については、「ステップスケーリングポリシーおよび簡易スケーリングポリシー」を参照してください。