ビジネスワークロードのリソース需要が減少すると、スケーリンググループはポリシーに基づいてスケールインイベントをトリガーし、インスタンス数を自動的に削減してリソースの無駄を回避します。このガイドでは、グレースフルスケールインの実践方法について説明します。
スケールインのプロセス
スケールインイベントが発生すると、スケーリンググループは設定されたポリシーに基づいて削除対象のインスタンスを選択し、インスタンスの回収モードに従ってそれらを回収します。以下の図に示すように、スケールインプロセスのさまざまな段階でアクションを設定できます。
スケールインのトリガー
スケールイン境界の制御
-
方法:スケーリンググループの 最小インスタンス数 を設定します。
インスタンスの最小数は、スケールインの下限です。スケールインによってインスタンス数がこの最小値を下回る場合、アクティビティは拒否され、スケーリンググループがベースラインワークロードに対して十分なキャパシティを維持することが保証されます。
-
手順:詳細については、「スケーリンググループの管理」をご参照ください。
ワークロード階層ごとのスケールイン
-
方法:スケーリンググループにステップスケーリングルールを作成します。
ステップスケーリングルールを使用すると、ワークロード階層に基づいて段階的にスケールインでき、一度に多くのインスタンスを削除することによるサービス中断を防ぐことができます。たとえば、スケーリンググループクラスターの平均 CPU 使用率に基づいて、次のようなスケールイン計画を設計できます。
-
平均 CPU 使用率が 20% 未満の場合、5 台のインスタンスを削除します。
-
平均 CPU 使用率が 30% 未満の場合、3 台のインスタンスを削除します。
-
平均 CPU 使用率が 50% 未満の場合、1 台のインスタンスを削除します。
-
これを実装するには、次のステップスケーリングルールを設定します。[スケーリングルールの作成] ダイアログボックスで、[モニタリングタイプ] を [システムモニタリング] に設定します。[実行時間] には、アラームタスク [低い CPU 使用率] (平均 (エージェント) CPU 使用率が 3 回連続で 50% 以下) を選択します。CPU 使用率が 30% から 50% の場合は 1 台、20% から 30% の場合は 3 台、20% 未満の場合は 5 台のインスタンスを段階的に削除するようにルールを設定します。[インスタンスのウォームアップ] を 300 秒に設定します。
-
-
手順:詳細については、「スケーリングルールの設定」をご参照ください。
スケールインの速度と頻度の制御
急激なスケールインアクティビティによるビジネスへの影響を防ぐために、クールダウン期間とアラームタスクのトリガー頻度を設定します。
スケールインのトリガーのカスタマイズ
ビジネス要件に合わせて、スケールインをトリガーするタイミングをカスタマイズします。以下の方法が利用できます。
スケールイン対象インスタンスの選択
デフォルトでは、スケーリンググループは設定した vSwitch の優先度に基づいてインスタンスを削除します。ビジネスニーズに合わせてインスタンス削除ポリシーを変更し、削除対象のインスタンスを選択できます。
-
重要なインスタンスがスケールインされないようにしたい場合は、そのインスタンスの保護状態を有効にすることで、誤ってスケールインされて通常のビジネス運用に影響が及ぶのを防ぐことができます。詳細な手順については、「インスタンスを手動で保護状態に追加または保護状態から削除」をご参照ください。
-
Elastic Container Instance (ECI) のスケーリンググループは、拡張および縮小戦略 や インスタンス削除ポリシー の設定をサポートしていません。デフォルトでは、ECI スケーリンググループは、最も古いスケーリング設定によって作成されたインスタンスのセットを最初に選択し、そのセットの中から最も古いインスタンスを削除します。
ソリューション 1:均等分散ポリシー
このソリューションはディザスタリカバリを優先し、スケールイン後もインスタンスがゾーン間で均等に分散されるように維持することで、マルチゾーンでの高可用性の実現を支援します。
-
方法:拡張および縮小戦略 を 均衡分散ポリシー に設定します。
このポリシーでは、スケーリンググループは最も多くのインスタンスを持つゾーンからインスタンスを削除することを優先します。複数のインスタンスが削除対象となる場合、グループは設定された インスタンス削除ポリシー を使用して最終的な選択を行います。たとえば、最も古いインスタンス、最も新しいインスタンス、または最も古いスケーリング設定のインスタンスを削除します。
-
手順:詳細については、「シナリオ 2:スケーリングポリシー (均等分散ポリシー) + 削除ポリシー」をご参照ください。
ソリューション 2:コスト最適化ポリシー
このソリューションはコスト管理を優先し、単価が最も高いインスタンスから先に削除します。
-
方法:拡張および縮小戦略 を コスト最適化ポリシー に設定します。
このポリシーでは、スケーリンググループは vCPU 単価が最も高いインスタンスを優先的に削除します。複数のインスタンスが同じ最高価格である場合、グループは設定された インスタンス削除ポリシー を使用して最終的な選択を行います。たとえば、最も古いインスタンス、最も新しいインスタンス、または最も古いスケーリング設定のインスタンスを削除します。
-
手順:詳細については、「シナリオ 3:スケーリングポリシー (コスト最適化ポリシー) + 削除ポリシー」をご参照ください。
このソリューションでは、コストのバランスを取るために、スケーリンググループ内のプリエンプティブルインスタンスと従量課金インスタンスの比率を設定することもできます。
ソリューション 3:カスタム組み合わせポリシー
ビジネス要件に基づいて、ソリューション 1 とソリューション 2 の戦略を組み合わせることができます。
-
方法:拡張および縮小戦略 を カスタム組み合わせポリシー に設定します。
このポリシーにより、従量課金インスタンスとプリエンプティブルインスタンスの比率を調整し、ゾーン間でキャパシティのバランスを取り、インスタンスタイプごとに個別のキャパシティ分散戦略を定義できます。
-
手順:詳細については、「スケーリンググループのインスタンス終了ポリシーの設定」をご参照ください。
ソリューション 4:カスタムスケールインポリシー
組み込みのスケールインポリシーがニーズを満たさない場合は、Function Compute を使用してカスタムポリシーを作成できます。
-
方法:インスタンス削除ポリシー を カスタムポリシー に設定します。
Function Compute でカスタムのスケールインロジックを定義します。スケールインイベントがトリガーされるたびに関数が呼び出され、どのインスタンスを削除し、どのインスタンスを保持するかを指定できます。
-
手順:詳細については、「関数を使用した ECS インスタンス削除ポリシーのカスタマイズ」をご参照ください。
グレースフルスケールイン
グレースフルスケールインでは、まだタスクを処理中のインスタンスの削除を一時停止し、リリースされる前にタスクを完了させることができます。これにより、サービスの中断を防ぎます。
-
方法:ライフサイクルフック を設定します。
ライフサイクルフックは、スケールイン中にインスタンスの削除を一時停止し、カスタムアクションを実行できるようにします。また、API を呼び出してフックの待機時間を延長し、インスタンスが終了する前にタスクを完了させることもできます。
-
手順:詳細については、「ライフサイクルフックの概要」および「ライフサイクルフックの待機時間の延長」をご参照ください。
インスタンスを直接削除、削除、または停止しても、ライフサイクルフックはトリガーされません。これらの場合、この方法は適用されません。
削除されたインスタンスの回収
デフォルトでは、スケーリンググループは 強制リリースモード モードを使用してインスタンスを回収し、削除されたインスタンスを即座にリリースします。インスタンス再利用モード を変更するには、「スケーリンググループの管理」をご参照ください。