翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2 Auto Scaling のスケーリングのクールダウン
重要
ベストプラクティスとして、シンプルスケーリングポリシーとスケーリングクールダウンを使用しないことをお勧めします。スケーリングパフォーマンスにより適しているのは、ターゲット追跡スケーリングポリシーまたはステップスケーリングポリシーです。スケーリングメトリクスの値が減少または増加するにつれて Auto Scaling グループのサイズを比例して変更するスケーリングポリシーの場合は、簡易スケーリングまたはステップスケーリングのいずれかでターゲットを追跡することをお勧めします。
Auto Scaling グループにシンプルスケーリングポリシーを作成するときは、スケーリングのクールダウンを同時に設定することをお勧めします。
Auto Scaling グループは、インスタンスの起動または終了後、クールダウン期間が終了するのを待ってから、シンプルスケーリングポリシーによって開始される追加のスケーリングアクティビティを開始します。クールダウン期間の目的は、Auto Scaling グループを安定させ、1 つ前のスケーリングアクティビティの効果を確認できるようになる前に追加のインスタンスを起動または終了しないようにすることです。
例えば、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 グループを最初に作成するときに、デフォルトのクールダウンを設定することはできません。デフォルトで、このクールダウン期間は 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 コマンドを使用します。詳細については、「ステップスケーリングポリシーおよび簡易スケーリングポリシー」を参照してください。