期待されるインスタンス数機能は、Auto Scaling がスケーリンググループ内のインスタンス数を指定値に自動調整する機能です。この機能により、並列スケーリングアクティビティを柔軟に実行することもできます。
概要
スケーリンググループ内の現在のインスタンス数が、設定された期待されるインスタンス数から逸脱した場合、Auto Scaling はターゲット値に合わせるためにスケーリングアクティビティを自動的に開始します。
メリット
期待されるインスタンス数機能を使用しないスケーリンググループと比較して、この機能を有効にすると、スケーリンググループの使用率が向上し、スケーリングアクティビティの実行が自動化されます。これにより、以下の問題を解決できます。
期待されるインスタンス数機能が有効なスケーリンググループと無効なスケーリンググループの違いの詳細については、「期待されるインスタンス数機能の有無による比較」をご参照ください。
この機能がないスケーリンググループでは、別のスケーリングアクティビティが進行中に新しいスケーリングアクティビティを開始することはできません。
たとえば、スケーリングアクティビティが進行中の場合、ヘルスチェックによってトリガーされたスケーリングアクティビティは実行できません。
期待されるインスタンス数機能を使用しないスケーリンググループでは、スケーリングアクティビティが失敗した場合、手動で再試行する必要があります。
期待されるインスタンス数機能の有効化または無効化
期待されるインスタンス数機能は、以下の方法で有効化または無効化できます。
スケーリンググループを作成または変更するときに、想定インスタンス数 パラメーターを設定することで、期待されるインスタンス数機能を有効にできます。 詳細については、「スケーリンググループの設定」をご参照ください。
説明スケーリンググループに対して期待されるインスタンス数機能を有効にした後、ビジネス要件に基づいて現在の期待されるインスタンス数を変更できます。
期待されるインスタンス数が有効になっているスケーリンググループでは、API を使用してこの機能を無効にできます。 詳細については、「ModifyScalingGroup - スケーリンググループの変更」をご参照ください。
主要な概念
期待されるインスタンス数機能を使用する前に、以下の概念をよく理解してください。
概念 | 説明 |
定常状態のインスタンス | スケーリンググループ内のインスタンスで、サービス中、保護中、または スタンバイ 状態にあるインスタンス。 |
並列スケーリングアクティビティ | 他の並列スケーリングアクティビティと同時に実行できるスケーリングアクティビティ。以下の操作が並列スケーリングアクティビティをトリガーします。
|
非並列スケーリングアクティビティ | 排他的なスケーリングアクティビティ。非並列スケーリングアクティビティの進行中は、他のスケーリングアクティビティは実行できません。並列として明示的に定義されていないアクティビティは、非並列と見なします。
|
制限事項
この機能が有効になっているスケーリンググループでは、並列スケーリングアクティビティと非並列スケーリングアクティビティを同時に実行することはできません。
期待されるインスタンス数は、スケーリンググループの最小インスタンス数以上、最大インスタンス数以下に設定する必要があります。
インスタンス数の変更ルール
手動調整に加えて、スケーリングアクティビティによっても期待されるインスタンス数は変更される場合があります。具体的な変更内容は、スケーリングアクティビティがどのようにトリガーされたかによって異なります。
スケーリングアクティビティのタイプ | トリガー | 効果 | 期待されるインスタンス数の変更 | 例 |
並列スケーリングアクティビティ | スケーリングルールの手動実行 | 期待されるインスタンス数のみを変更します。Auto Scaling は、期待されるインスタンス数チェックタスクがスケーリングをトリガーするのを待ちます。 | 定常状態のインスタンス数 ± スケーリングするインスタンス数 | ユースケース:
結果: 期待されるインスタンス数は 6 に変更されますが、ECS インスタンスはすぐには作成されません。Auto Scaling は、期待されるインスタンス数チェックタスクがスケーリングをトリガーするのを待ちます。 |
スケジュールされたタスクによるスケーリングルールの実行 | 期待されるインスタンス数のみを変更します。Auto Scaling は、期待されるインスタンス数チェックタスクがスケーリングをトリガーするのを待ちます。 | 定常状態のインスタンス数 ± スケーリングするインスタンス数 | ユースケース:
結果: 期待されるインスタンス数は 6 に変更されますが、ECS インスタンスはすぐには作成されません。Auto Scaling は、期待されるインスタンス数チェックタスクがスケーリングをトリガーするのを待ちます。 | |
インスタンスの手動追加 | スケーリングを直ちにトリガーし、その後、期待されるインスタンス数を変更します。 | 現在の期待されるインスタンス数 + 追加するインスタンス数 | ユースケース:
結果: 4 つの ECS インスタンスがスケーリンググループに追加され、定常状態のインスタンス数は 6 になります。その後、期待されるインスタンス数は 7 に変更されます。 | |
インスタンスの手動削除 | スケーリングを直ちにトリガーし、その後、期待されるインスタンス数を変更します。 | 現在の期待されるインスタンス数 - 削除するインスタンス数 | ユースケース:
結果: 1 つの ECS インスタンスがスケーリンググループから削除され、定常状態のインスタンス数は 1 になります。その後、期待されるインスタンス数は 2 に変更されます。 | |
最小/最大インスタンス数チェック | - | 期待されるインスタンス数を手動で設定する必要があります。 | ユースケース:
結果: 現在の期待されるインスタンス数 (3) が新しい最大値 1 に違反するため、変更は失敗します。 | |
インスタンスのヘルスチェック | スケーリングを直ちにトリガーします。 | 変更なし | ユースケース:
結果: 期待されるインスタンス数は変更されません。異常な ECS インスタンスはスケーリンググループから削除され、定常状態のインスタンス数は 1 になります。スケーリンググループは、期待されるインスタンス数と定常状態のインスタンス数の不一致を検出し、期待されるインスタンス数チェックタスクを自動的に実行します。これにより、2 つの ECS インスタンスを作成するスケーリングアクティビティがトリガーされます。 | |
期待されるインスタンス数チェック | スケーリングを直ちにトリガーします。 | 変更なし | ユースケース:
結果: 期待されるインスタンス数は変更されません。スケーリンググループは、期待されるインスタンス数と定常状態のインスタンス数の不一致を検出し、期待されるインスタンス数チェックタスクを自動的に実行します。これにより、1 つの ECS インスタンスを作成するスケーリングアクティビティがトリガーされます。 | |
非並列スケーリングアクティビティ | イベント起動タスクによるスケーリングルールの実行 | スケーリングを直ちにトリガーし、その後、期待されるインスタンス数を変更します。 | 定常状態のインスタンス数 ± スケーリングするインスタンス数 | ユースケース:
結果: 4 つの ECS インスタンスを作成するスケーリングアクティビティがトリガーされ、その後、期待されるインスタンス数は 6 に変更されます。 |
同時スケーリングアクティビティが実行されたときに期待されるインスタンス数がどのように変化するかの詳細については、「並列スケーリングアクティビティ」および「非並列スケーリングアクティビティ」をご参照ください。
期待されるインスタンス数機能の有無による比較
次の表に、期待されるインスタンス数機能が有効なスケーリンググループと無効なスケーリンググループの主な違いを示します。
項目 | 期待されるインスタンス数機能が有効な場合 | 期待されるインスタンス数機能が無効な場合 |
メンテナンス | 自動メンテナンス:スケーリンググループは、期待されるインスタンス数を満たすように自動的にスケーリングします。スケーリングアクティビティが失敗した場合、システムは自動的に再試行します。 | 手動メンテナンス:スケーリンググループ内のインスタンス数を手動で維持する必要があります。スケーリングアクティビティが失敗した場合も、手動で再試行する必要があります。 |
スケーリングアクティビティの結果 | スケーリングアクティビティの結果は、アクティビティのトリガー方法によって異なります。
| スケーリングルールを手動で実行する場合、スケジュールされたタスクがスケーリングルールを実行する場合、インスタンスを手動で追加、除去、または削除する場合、またはイベント起動タスクがスケーリングルールを実行する場合、スケーリンググループは直ちにインスタンスを追加または削除するスケーリングアクティビティをトリガーします。 |
並列実行 | スケーリンググループは並列スケーリングアクティビティをサポートします。詳細については、「並列スケーリングアクティビティ」をご参照ください。 | スケーリンググループは、一度に 1 つのスケーリングアクティビティのみをサポートします。スケーリングアクティビティには時間がかかることがあります。この期間中、スケーリンググループ内のインスタンス数を調整することはできません。 |
並列スケーリングアクティビティ
期待されるインスタンス数を指定すると、スケーリンググループは互換性のあるスケーリングアクティビティを並行して実行できます。以下の例で、この動作を説明します。
例 1:2つのスケーリングルールを連続して実行する
ユースケース:
期待されるインスタンス数:3
定常状態のインスタンス数:3
スケーリングルール
add3は、3 つの ECS インスタンスを作成するように設定されています。スケーリングルール
add1は、1 つの ECS インスタンスを作成するように設定されています。手動で
add3を実行し、すぐにadd1を実行します。
結果:
add3が実行されると、期待されるインスタンス数は 3 から 6 (定常状態のインスタンス 3 + 3) に変更されます。直後にadd1を実行すると、期待されるインスタンス数が再計算されて 4 (定常状態のインスタンス 3 + 1) に設定され、前の値が上書きされます。これらの並列スケーリングアクティビティの結果、最終的な期待インスタンス数である 4 を満たすために ECS インスタンスが 1 つ作成されます。スケーリングアクティビティが完了した後、スケーリンググループ内の定常状態のインスタンス数は 4 になります。スケーリンググループは、すべてステータスが [成功] の 3 つのスケーリングアクティビティレコードを生成します。最初のアクティビティ (「ECS インスタンス "1" 個の追加...」という記述のある) の詳細を展開すると、ユーザーが希望キャパシティを
3から4に変更したためにアクティビティがトリガーされ、1 つの ECS インスタンスの作成に成功し、総キャパシティが 4 になったことが表示されます。例 2:スケーリングルールの実行中にインスタンスを手動で追加する
ユースケース:
期待されるインスタンス数:3
定常状態のインスタンス数:3
スケーリングルール
add1は、1 つの ECS インスタンスを作成するように設定されています。手動で
add1を実行し、すぐに既存の ECS インスタンスを 1 つ追加します。
結果:
add1が実行されると、期待されるインスタンス数は 3 から 4 (定常状態のインスタンス 3 + 1) に変更されます。既存の ECS インスタンスをすぐに追加できます。この手動追加により、定常状態のインスタンス数は 4 に増加し、期待されるインスタンス数は 4 から 5 (現在の期待されるインスタンス数 4 + 1) に変更されます。これらの結果として、ECS インスタンスが 1 つ作成され、既存の ECS インスタンスが 1 つ手動で追加されます。スケーリングアクティビティが完了した後、スケーリンググループ内の定常状態のインスタンス数は 5 になります。add1の実行とインスタンスの手動追加の後、スケーリングアクティビティリストには複数の並列スケーリングアクティビティレコードが表示され、すべてステータスが [成功] となります。手動でのインスタンス追加のアクティビティ詳細には、指定されたインスタンスをスケーリンググループにアタッチするリクエストによってアクティビティがトリガーされ、希望キャパシティが 4 から 5 に変更され、1 つの ECS インスタンスの追加に成功したことが表示されます。
非並列スケーリングアクティビティ
期待されるインスタンス数を指定した後、スケーリンググループは並列スケーリングアクティビティと非並列スケーリングアクティビティの同時実行はサポートしていません。以下の例で、この動作を説明します。
ユースケース:
期待されるインスタンス数:1
定常状態のインスタンス数:1
イベント起動タスクのスケーリングルールは、3 つの ECS インスタンスを作成するように設定されています。
スケーリングルール
add1は、1 つの ECS インスタンスを作成するように設定されています。イベント起動タスクがトリガーされ、その直後に手動で
add1を実行します。
結果:イベント起動タスクがスケーリングアクティビティをトリガーし、期待されるインスタンス数は 1 から 4 に変更されます。これは非並列スケーリングアクティビティであるため、他のスケーリングアクティビティはブロックされます。したがって、add1 ルールの手動実行は拒否され、期待されるインスタンス数は 4 のままです。非並列スケーリングアクティビティにより、ECS インスタンスが 3 つ作成されます。アクティビティが完了した後、スケーリンググループ内の定常状態のインスタンス数は 4 になります。
イベント起動タスクによってトリガーされたスケーリングアクティビティ (ECS インスタンスを 3 つ追加) は正常に実行されましたが、手動で実行された add1 スケーリングアクティビティ (ECS インスタンスを 1 つ追加) は、メッセージ The current status of the specified scaling group does not support this action. が表示され、[拒否] されました。これは、別のスケーリングアクティビティが進行中に、スケーリンググループが非並列スケーリングアクティビティの実行をサポートしていないことを示します。