Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する - Amazon EC2 Auto Scaling

Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する

インスタンスのデフォルトウォームアップ機能を使用して、動的スケーリングに使用される Amazon CloudWatch メトリクスを改善することができます。CloudWatch は、Auto Scaling インスタンス全体で CPU やネットワーク I/O などの使用状況データを収集し、集計します。これらのメトリクスを使用して、選択したメトリクスの値の増減に応じて Auto Scaling グループ内にあるインスタンスの数を調整するスケーリングポリシーを作成します。

インスタンスのデフォルトウォームアップが有効化されていない場合、各インスタンスは、その状態が InService になると同時に、集計されたメトリクスへの使用状況データの提供を開始しますが、インスタンスのデフォルトウォームアップを有効にすると、インスタンスは、使用状況データを提供する前にウォームアップを完了できるようになります。これは、アプリケーショントラフィックの処理をまだ行っておらず、コンピューティングリソースの使用率が一時的に高くなっている可能性がある個々のインスタンスのメトリクスが、動的スケーリングに影響しないようにします。

インスタンスのデフォルトウォームアップは、デフォルトで設定および有効化されていません。ターゲット追跡ポリシーやステップスケーリングポリシーなどの継続的にスケールするスケーリングポリシーのパフォーマンスを最適化するため、その値が 0 秒に設定されている場合でも、インスタンスのデフォルトウォームアップを有効にすることを強くお勧めします。インスタンスのデフォルトウォームアップが有効化されていない場合は、インスタンスの起動時にデフォルトクールダウンが適用されることがあり、デフォルトクールダウンの期間が終了するまで動的スケーリングのスケールインアクティビティがブロックされます。

デフォルトのインスタンスのウォームアップは、複数の機能のウォームアップパラメータをグループレベルで単一のパラメータに統合します。デフォルトのインスタンスのウォームアップ機能を有効にすることにより、デフォルトをオーバーライドしない限り、次の機能にウォームアップパラメータの値を指定する必要がなくなります。

スケーリングパフォーマンスに影響するだけでなく、デフォルトのインスタンスのウォームアップは、インスタンスの更新中にインスタンスを置き換えるために必要な合計時間にも影響します。

インスタンスのデフォルトウォームアップの時間値を選択する

ウォームアップ時間値を選択するときは、正当なトラフィックの使用状況データの収集と、起動時における一時的な使用率の急増に関連するデータ収集の最小限化の両者間におけるバランスの適正化を目指します。

インスタンスの起動が終了すると、インスタンスは、Auto Scaling グループにアタッチされ、Elastic Load Balancing ロードバランサーに登録されてから (使用される場合)、InService 状態になります。インスタンスが InService 状態になった後も、リソースの消費は引き続き一時的に急増する場合があり、安定化する時間が必要です。例えば、大量のアセットをダウンロードしてキャッシュする必要があるアプリケーションサーバーのリソース消費が安定するまでにかかる時間は、ダウンロードする大量のアセットがない軽量のウェブサーバーよりも長くなります。インスタンスのデフォルトウォームアップは、リソース消費の安定化に必要な遅延時間を提供します。

重要

起動時に実行される設定タスクやスクリプトを伴うユースケースにライフサイクルフックを使用することも検討する必要があります。ライフサイクルフックは、インスタンスが初期化を終了するまで、スケールアウトイベントでのそれらの運用を遅らせることができます。ライフサイクルフックは特に、完了に時間がかかるブートストラップスクリプトがある場合に便利です。このため、ライフサイクルフックを追加すると、インスタンスのデフォルトウォームアップの値を減らすことができます。インスタンスのデフォルトウォームアップを 0 秒に設定する場合、ライフサイクルフックに必要な時間を超える追加の待機期間は課されません。ライフサイクルフック使用の詳細については、「Amazon EC2 Auto Scaling のライフサイクルフック」を参照してください。

インスタンスのデフォルトウォームアップがスケーリングに与える影響について

インスタンスのデフォルトウォームアップを有効にすると、Auto Scaling グループで新しく起動される各インスタンスにウォームアップ期間が設定されます。

インスタンスのウォームアップ期間中、スケーリングポリシーは、ウォームアップしていないインスタンスからのメトリクス値がポリシーのアラーム上限しきい値 (ターゲット追跡スケーリングポリシーのターゲット使用率と同じ) を超える場合にのみスケールアウトします。

インスタンスがまだウォームアップしているときにグループが再度スケールアウトすると、それらのインスタンスは次のスケールアウトアクティビティの希望容量の一部として計上されます。したがって、複数のアラーム超過によってもステップ調整値の範囲は変わらず、1 つのスケーリングアクティビティという結果になります。その目的は、スケールアウトを継続的に (ただし過剰になることなく) 行うことです。

需要が高くなる場合は、アプリケーションの可用性を保護するためにスケールインを控えめに実行することがその目的になります。これは、インスタンスがウォーミングアップが完了するまで、スケーリングポリシーによって開始されるスケールインアクティビティをブロックします。

グループに対するインスタンスのデフォルトウォームアップを有効にする

インスタンスのデフォルトウォームアップは、Auto Scaling グループの作成時に有効化できます。既存のグループに対して有効化することも可能です。

Console
新しいグループに対してインスタンスのデフォルトウォームアップを有効にする (コンソール)

Auto Scaling グループを作成するときに、[Configure advanced options] (詳細オプションを設定) ページの [Additional settings] (追加設定)で、[Enable default instance warmup] (インスタンスのデフォルトウォームアップを有効にする) オプションを選択します。アプリケーションに必要なウォームアップ時間を選択します。

AWS CLI
新しいグループに対してインスタンスのデフォルトウォームアップを有効にする (AWS CLI)

Auto Scaling グループに対してインスタンスのデフォルトウォームアップを有効にするには、--default-instance-warmup オプションを追加して、0 から 3600 までの値 (秒単位) を指定します。-1 の値は、有効化後にこの設定をオフにします。

以下の create-auto-scaling-group コマンドは、my-asg という名前の Auto Scaling グループを作成し、120 秒の値でインスタンスのデフォルトウォームアップを有効にします。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120 ...
ヒント

このコマンドでエラーが発生する場合は、AWS CLI がローカルで最新バージョンに更新されていることを確認してください。

Console
既存のグループに対してインスタンスのデフォルトウォームアップを有効にする (コンソール)
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. 画面の上部のナビゲーションバーで、Auto Scaling グループを作した AWS リージョン を選択します。

  3. Auto Scaling グループの横にあるチェックボックスを選択します。

    [Auto Scaling groups] (Auto Scaling グループ) ページの下部にスプリットペインが開きます。

  4. [詳細] タブで、[高度な設定]、[編集] の順に選択します。

  5. [Default instance warmup] (インスタンスのデフォルトウォームアップ) で、アプリケーションに必要なウォームアップ時間を選択します。

  6. [Update] (更新) を選択します。

AWS CLI
既存のグループに対してインスタンスのデフォルトウォームアップを有効にする (AWS CLI)

以下の例は、update-auto-scaling-group コマンドを使用して、my-asg という名前の既存の Auto Scaling グループに対し、120 秒の値でインスタンスのデフォルトウォームアップを有効にします。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120
ヒント

このコマンドでエラーが発生する場合は、AWS CLI がローカルで最新バージョンに更新されていることを確認してください。

グループに対するインスタンスのデフォルトウォームアップを検証する

Auto Scaling グループに対するインスタンスのデフォルトウォームアップを検証する (AWS CLI)

describe Auto Scaling グループコマンドを実行します。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

以下に、応答の例を示します。

{ "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "DefaultInstanceWarmup": 120 } ] }