ビジネスのワークロードが減少すると、Auto Scaling はスケーリンググループでスケールインイベントをトリガーします。これにより、リソースの調整が自動化され、リソースコストが最小限に抑えられます。このトピックでは、グレースフルスケールイン操作を実行する方法について説明します。
スケールインプロセスの概要
スケーリンググループでスケールインプロセスがトリガーされると、Auto Scaling は設定された削除ポリシーに基づいて、スケーリンググループから削除するインスタンスを選択します。インスタンスが削除された後、事前に定義されたインスタンス回収モードに基づいて回収されます。設定は、次の図に示すように、スケールインプロセスのさまざまなフェーズによって異なります。
スケールインイベントのトリガー
日々のビジネス要件を満たすためのスケールイン境界の制御
実装方法:スケーリンググループの [最小インスタンス数] パラメーターを設定します。
[最小インスタンス数] パラメーターは、スケーリンググループ内のインスタンス数の下限を指定します。スケールインリクエストが開始された場合、スケールインプロセス完了後にスケーリンググループ内のインスタンス数がこの下限を下回ると、Auto Scaling はそのリクエストを拒否します。これにより、スケーリンググループのリソースが不足し、日々のビジネス要件を満たせなくなる事態を防ぎます。
操作手順:詳細については、「スケーリンググループの管理」をご参照ください。
ワークロード階層に基づくインスタンスのスケールイン (ステップスケーリングルール)
実装方法:スケーリンググループにステップスケーリングルールを作成します。
ステップスケーリングルールを作成することで、ワークロードの階層に基づいたスケールインが可能になります。この方法は、多数のインスタンスが急激に削除されることによるシステムの過負荷や中断を効果的に防ぎ、グレースフルなスケールインイベントを保証します。たとえば、スケーリンググループ内の以下の CPU 使用率の階層に基づいて、カスタムのスケールインソリューションを設計したいとします。
平均 CPU 使用率が 20% を下回った場合、5 台のインスタンスをスケールインします。
平均 CPU 使用率が 20% から 30% の範囲にある場合、3 台の ECS インスタンスをスケールインします。
平均 CPU 使用率が 30% から 50% の範囲にある場合、1 台の ECS インスタンスをスケールインします。
この場合、次の図に示すようにステップスケーリングルールを作成できます。
操作手順:詳細については、「スケーリングルールの設定」をご参照ください。
冷却期間と監視タスクによるスケールイン率と頻度の制御
冷却期間と監視タスクを設定することで、頻繁なスケールイン操作によるビジネスの不安定化を防ぎ、グレースフルなスケールインイベントを保証できます。
スケールインイベントのトリガー時間の指定
ビジネス要件に基づいて、スケールインイベントがトリガーされる時間を指定できます。これにより、グレースフルなスケールインイベントが実装されます。次のいずれかの方法を使用できます。
スケールイン対象インスタンスの選択
デフォルトでは、Auto Scaling はスケーリンググループに指定された vSwitch の順序 (優先ポリシー) に基づいてインスタンスをスケールインします。削除ポリシーを変更して、ビジネス要件に基づいてスケールインするインスタンスを選択できます。
ミッションクリティカルなインスタンスをスケールインしたくない場合は、このインスタンスを保護状態に設定することで、予期しないインスタンスのスケールインによるビジネスの中断を防ぐことができます。詳細については、「インスタンスの保護状態への手動設定または保護状態からの手動解除」をご参照ください。
Elastic Container Instance (ECI) タイプのスケーリンググループは、[削除ポリシー] および [スケーリングポリシー] パラメーターをサポートしていません。デフォルトでは、Auto Scaling は最も古いスケーリング設定から作成された Elastic Container Instance を優先的にスケーリンググループから削除し、次に最も古い Elastic Container Instance をスケーリンググループから削除します。
ソリューション 1:スケールイン完了後のゾーン間におけるインスタンスの分散の均等化
このソリューションは、ディザスタリカバリを保証します。このソリューションを使用すると、スケールインプロセス完了後にインスタンスが複数のゾーンに均等に分散され、ディザスタリカバリが実装されます。
実装方法:[スケーリングポリシー] パラメーターを [均等配置ポリシー] に設定します。
均等配置ポリシーを有効にすると、Auto Scaling はインスタンス数が最も多いゾーンから優先的にインスタンスをスケールインします。均等配置ポリシーが有効になった後もスケールインプロセスを継続したい場合は、[削除ポリシー] パラメーターを [最も古いスケーリング設定から作成されたインスタンス]、[最も古いインスタンス]、または [最新のインスタンス] に設定します。
操作手順:詳細については、「シナリオ 2:スケーリングポリシー (均等配置ポリシー) + 削除ポリシー」をご参照ください。
ソリューション 2:単価が最も高いインスタンスの優先的なスケールイン (コスト最適化ポリシー)
このソリューションは、コスト効率を保証します。コスト最適化ポリシーを有効にすることで、コスト効率が最も低いインスタンスをスケールインできます。これにより、リソースの利用率が向上します。
実装方法:[スケーリングポリシー] ポリシーを [コスト最適化ポリシー] に設定します。
コスト最適化ポリシーを有効にすると、Auto Scaling はスケーリンググループから単価が最も高いインスタンスを優先的にスケールインします。コスト最適化ポリシーが有効になった後もスケールインプロセスを継続したい場合は、[削除ポリシー] パラメーターを [最も古いスケーリング設定から作成されたインスタンス]、[最も古いインスタンス]、または [最新のインスタンス] に設定します。
操作手順:詳細については、「シナリオ 3:スケーリングポリシー (コスト最適化ポリシー) + 削除ポリシー」をご参照ください。
このソリューションは、リソースコストのバランスを取るのに役立ちます。スケーリンググループ内でプリエンプティブルインスタンスと従量課金インスタンスの比率を設定できます。
ソリューション 3:カスタム組み合わせポリシーの作成
ソリューション 1 とソリューション 2 を組み合わせることができます。
実装方法:スケーリンググループの [スケーリングポリシー] パラメーターを [カスタム組み合わせポリシー] に設定します。
カスタム組み合わせポリシーを有効にすると、従量課金インスタンスとプリエンプティブルインスタンスの比率を調整したり、複数のゾーン間でリソース容量のバランスを取ったり、従量課金インスタンスとプリエンプティブルインスタンスの容量計画ポリシーを作成したりできます。
操作手順:詳細については、「スケーリンググループのインスタンス終了ポリシーの設定」をご参照ください。
ソリューション 4:カスタム削除ポリシーの作成
Auto Scaling がサポートする削除ポリシーがビジネス要件を満たせない場合は、このソリューションで説明するように、Function Compute を使用してカスタム削除ポリシーを作成できます。
実装方法:[スケールインポリシー] パラメーターを [カスタムポリシー] に設定します。
Function Compute のプログラミング言語を使用して、カスタム削除ポリシーを作成できます。スケールインイベントがトリガーされるたびに、Function Compute で作成した関数が呼び出されます。ビジネス要件に基づいて関数を作成する際に、どのインスタンスをスケールインでき、どのインスタンスをスケールインできないかを定義できます。
操作手順:詳細については、「Function Compute を使用した ECS スケールインポリシーのカスタマイズ」をご参照ください。
インスタンスのグレースフルスケールイン
スケールインプロセスは、スケールイン基準を満たすインスタンスが進行中のタスクを完了した場合にのみ進行します。このプロセスはグレースフルスケールインと呼ばれ、スケールイン操作によるビジネスの中断を防ぎます。
実装方法:ライフサイクルフックを作成します。
スケールインプロセスがトリガーされると、ライフサイクルフックを有効にして、進行中のタスクを持つインスタンスを削除保留状態にすることができます。ライフサイクルフックの有効期間中に、インスタンスに対する操作を実行できます。進行中のタスクを完了するためにより長い時間が必要な場合は、API 操作を呼び出してライフサイクルフックの有効期間を延長できます。
操作手順:詳細については、「概要」および「RecordLifecycleActionHeartbeat」をご参照ください。
同様のスケールイン効果を得るためにインスタンスを直接削除、削除、または停止した場合、ライフサイクルフックは有効になりません。このソリューションは使用できません。
スケールインされたインスタンスの回収
スケールインの効率を向上させるため、デフォルトのインスタンス回収モードは [強制リリース] です。このモードでは、Auto Scaling はスケーリンググループから削除されたインスタンスを直接リリースします。インスタンスがリリースされた後、リソースは保持されません。他のインスタンス回収モードも使用できます。詳細については、「スケーリンググループの管理」をご参照ください。