このトピックでは、auto scaling ポリシーでさまざまな詳細パラメーターを設定し、これらのパラメーターがシステムの動作に与える影響を検証する方法について説明します。
前提条件
Performance Testing Service (PTS) でアプリケーションのストレステストを実行し、auto scaling ポリシーの詳細パラメーターがアプリケーションインスタンスのスケーリングに与える影響を検証します。ストレステストの前に、次の手順を完了する必要があります。
Serverless App Engine (SAE) アプリケーションを作成します。
説明ストレステストを簡略化するため、アプリケーションインスタンスの数を 1 に設定します。
インターネット上にデプロイされたクラシックロードバランサー (CLB) インスタンスをアプリケーションにバインドし、CLB のアクセスログ機能を有効にします。
説明CLB のアクセスログ機能を有効にすると、追加の料金が発生します。
詳細パラメーター
アプリケーションにメトリクスベースの auto scaling ポリシーまたはハイブリッド auto scaling ポリシーを設定する際、Serverless App Engine は 5 つの詳細パラメーターを提供します。以下にそれらを説明します。
スケールアウトステップサイズ:単位時間あたりにスケールアウトできるインスタンスの最大数。
スケールインステップサイズ:単位時間あたりにスケールインできるインスタンスの最大数。
スケールアウト安定化ウィンドウ:スケールアウトが安定していると見なされる期間。auto scaling アルゴリズムは、スケールアウト操作が実行される際に、指定された間隔内で計算された期待されるインスタンスの最小数が使用されることを保証します。
スケールイン安定化ウィンドウ:スケールインが安定していると見なされる期間。auto scaling アルゴリズムは、スケールイン操作が実行される際に、指定された間隔内で計算された期待されるインスタンスの最大数が使用されることを保証します。
スケールインの無効化:アプリケーションインスタンスのスケールインを許可しないように指定します。
アプリケーションの auto scaling ポリシーの設定
メトリクスベースの auto scaling ポリシーまたはハイブリッド auto scaling ポリシーを設定する際に、auto scaling ポリシーの詳細パラメーターを設定できます。このセクションでは、主要な手順のみを説明します。
このセクションで設定するメトリクスベースの auto scaling ポリシーは、ストレステストでのみ利用可能です。本番環境では、ビジネス要件に基づいて設定を調整してください。
-
対象アプリケーションの [基本情報] ページで、[Auto Scaling] タブをクリックし、[auto scaling ポリシーの作成] をクリックします。
-
表示されたパネルで、パブリック CLB の QPS メトリクスに基づいて auto scaling ポリシーを設定し、ターゲット値を 10 に設定します。
説明詳細パラメーターは指定されていません。
[ポリシータイプ] で [メトリクスベースの auto scaling ポリシー] を選択し、[ポリシー名] を demo、[最小インスタンス数] を 1、[最大インスタンス数] を 5 に設定します。[最小準備完了インスタンス数] では、[比率指定] を選択し、値を 50% に設定します。
-
メトリクスベースの auto scaling ポリシーを追加した後、ポリシーを 有効 にします。
詳細パラメーターの影響の検証
各詳細パラメーターを検証する前に、メトリクスベースの auto scaling ポリシーに詳細パラメーターが指定されていないことを確認してください。
スケールアウトステップサイズパラメーターの検証
スケールアウトステップサイズのロジックはスケールインステップサイズと類似しているため、このセクションではスケールアウトステップサイズパラメーターのみを検証します。
スケールアウトステップサイズパラメーターを指定しない場合のスケールアウト効果の検証
PTS コンソールにログインし、SAE アプリケーションでストレステストを実行します。
説明ストレス テストに使用される URL は、SAE アプリケーションにバインドされたパブリック CLB インスタンスのアクセス アドレスです。 URL フォーマットは
http://<パブリック IP アドレス>:<ポート>です。-
ストレステストが開始されると、SAE アプリケーションの auto scaling イベントを表示できます。
[ソースタイプ] でフィルタリングし、[auto scaling (HorizontalPodAutoscaler)] を選択します。理由が SuccessfulRescale のレコードが表示されます。詳細を展開すると、外部メトリクス
slb_incall_qpsがターゲット値を超えたためにスケールアウトがトリガーされたことがわかります。auto scaling イベントは、HPA コントローラーが SAE アプリケーションを 5 インスタンスに拡張したことを示しています。
スケールアウトステップサイズパラメーターを指定した場合のスケールアウト効果の検証
-
メトリクスベースの auto scaling ポリシーでスケールアウトステップサイズパラメーターを設定します。
-
対象アプリケーションの [基本情報] ページで、[Auto Scaling] タブをクリックし、追加した auto scaling ポリシーの [操作] 列にある [編集] をクリックします。
-
[auto scaling ポリシーの編集] パネルで、[詳細設定] をクリックして詳細パラメーター設定エリアを展開します。
-
[詳細設定] エリアで、スケールアウトステップサイズを
1に設定し、他の詳細パラメーターは設定せずに [OK] をクリックします。
-
PTS を使用して、SAE アプリケーションでストレステストを実行します。
-
ストレステストが開始されたら、[アプリケーションイベント] ページに移動して、対象の SAE アプリケーションの auto scaling イベントを表示します。
auto scaling イベントは、SAE アプリケーションのインスタンスが一度に 5 インスタンスにスケールアウトされるのではなく、1 つずつスケールアウトされることを示しています。これは、スケールアウトステップサイズパラメーターが有効であり、毎回スケールアウトされるインスタンスの数を制限し、スケールアウトのリズムを制御することで、システムの安定性と応答速度のバランスを取っていることを示します。
スケールアウト安定化ウィンドウパラメーターの検証
スケールアウト安定化ウィンドウパラメーターのロジックはスケールイン安定化ウィンドウパラメーターと類似しているため、このセクションではスケールアウト安定化ウィンドウパラメーターのみを検証します。
スケールアウト安定化ウィンドウを指定しない場合のスケールアウト効果の検証
-
Performance Testing Service (PTS) コンソールにログインし、対象の SAE アプリケーションでクイックストレステストを実行します。
説明ストレステストで使用される URL は、SAE アプリケーションにバインドされたパブリック CLB インスタンスのアクセスアドレスです。URL のフォーマットは
http://<パブリック IP アドレス>:<ポート>です。 -
ストレステストが開始された後、ストレステストの開始時刻と SAE アプリケーションのスケールアウト時刻を比較できます。
ストレステストの開始時刻
SAE アプリケーションのスケールアウト開始時刻
[レポートリスト] ページで時刻を表示します。
各ストレステストのレコードについて、[テスト時間]、[レポート名]、[レポート ID]、[期間]、[ピーク同時実行数]、[消費 VUM] などの情報を表示できます。テスト時間が 2025-03-07 17:36:55 のレコードを見つけ、対応する [レポートの表示] リンクをクリックしてテスト結果を表示します。
2025-03-07 17:36:55
[アプリケーションイベント] ページで時刻を表示します。
2025-03-07 17:37:21
テスト結果から、スケールアウト安定化ウィンドウパラメーターを設定しない場合、SAE アプリケーションがトラフィックを処理し始めてから約 20 秒後にインスタンスが迅速にスケールアウトされることがわかります。
スケールアウト安定化ウィンドウを指定した場合のスケールアウト効果の検証
-
メトリクスベースの auto scaling ポリシーでスケールアウト安定化ウィンドウパラメーターを設定します。
-
対象アプリケーションの [基本情報] ページで、[Auto Scaling] タブをクリックし、追加した auto scaling ポリシーの [操作] 列にある [編集] をクリックします。
-
[auto scaling ポリシーの編集] パネルで、[詳細設定] をクリックして詳細パラメーター設定エリアを展開します。
-
[詳細設定] エリアで、スケールアウト安定化ウィンドウを
300秒に設定し、他の詳細パラメーターは設定せずに [OK] をクリックします。
-
-
ストレステストが開始された後、ストレステストの開始時刻と SAE アプリケーションのスケールアウト時刻を比較できます。
ストレステストの開始時刻
SAE アプリケーションのスケールアウト開始時刻
[レポートリスト] ページで時刻を表示します。
対象のストレステストのレポートレコードを見つけ、[テスト時間] を確認し、[操作] 列の [レポートの表示] をクリックしてテスト結果を表示します。
2025-03-10 09:50:35
[アプリケーションイベント] ページで時刻を表示します。
イベントリストには、イベントレベルが Normal、理由が SuccessfulRescale、ソースタイプが HorizontalPodAutoscaler のレコードが表示されます。これは、外部メトリクス
slb_incall_qpsに基づいて Pod の数が正常に 5 に調整されたことを示します。テスト結果から、スケールアウト安定化ウィンドウパラメーターを 300 に設定すると、SAE アプリケーションがトラフィックを受信した直後にインスタンスのスケールアウト操作がトリガーされるのではなく、指定された安定化ウィンドウが終了した後に開始されることがわかります。これは、スケールアウト安定化ウィンドウパラメーターがスケールアウト操作を効果的に遅延させ、短期的なトラフィックの変動によるリソースの浪費を回避できることを示しています。
スケールインの無効化パラメーターの検証
スケールインの無効化を有効にしない場合のスケーリング効果の検証
-
Performance Testing Service (PTS) コンソールにログインし、対象の SAE アプリケーションでクイックストレステストを実行します。
説明ストレステストで使用される URL は、SAE アプリケーションにバインドされたパブリック CLB インスタンスのアクセスアドレスです。URL のフォーマットは
http://<パブリック IP アドレス>:<ポート>です。 -
ストレステストが完了したら、[アプリケーションイベント] ページに移動して、アプリケーションのスケーリングイベントを表示します。
[ソースタイプ] で [auto scaling (HorizontalPodAutoscaler)] をフィルタリングすると、イベントリストに 2 つの SuccessfulRescale イベントが表示されます。1 つ目はテスト中の 5 インスタンスへのスケールアウトで、外部メトリクス
slb_incall_qpsがターゲットを超えたときにトリガーされました。2 つ目はテスト後の 1 インスタンスへのスケールインで、すべてのメトリクスがターゲットを下回ったときにトリガーされました。テスト結果から、スケールインの無効化パラメーターが有効になっていない場合、ストレステスト完了後にアプリケーションは 1 インスタンスにスケールインされることがわかります。
スケールインの無効化を有効にした場合のスケーリング効果の検証
-
メトリクスベースの auto scaling ポリシーで、スケールインの無効化を有効にします。
-
対象アプリケーションの [基本情報] ページで、[Auto Scaling] タブをクリックし、追加した auto scaling ポリシーの [操作] 列にある [編集] をクリックします。
-
[詳細設定] エリアで、スケールインの無効化を有効にします。
-
-
PTS ツールを使用して、対象の SAE アプリケーションでクイックストレステストを実行します。
説明指定されたストレステスト期間は 10 分です。
-
ストレステストが完了した後 (トラフィックが 0 になった後)、アプリケーションインスタンスがスケールインされたかどうかを確認します。
インスタンスリストには、5 つすべてのインスタンスが 実行中 状態であることが表示されます。4 つのインスタンスは約 15 分間 (スケールアウト中に作成)、1 つのインスタンスは約 5 時間 (元のインスタンス) 実行されています。どのインスタンスもスケールインされていません。
テスト結果から、ストレステスト完了後約 5 分間、アプリケーションインスタンスの数は 5 のままで、スケールイン操作は発生しないことがわかります。これは、スケールインの無効化パラメーターが有効であることを示しています。これにより、トラフィックの変動や誤判断による過剰なリソースのリリースを効果的に回避し、サービスの安定性を確保できます。