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 グループの作成時に有効化できます。既存のグループに対して有効化することも可能です。
グループに対するインスタンスのデフォルトウォームアップを検証する
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
}
]
}