Serverless App Engine (SAE) のマイクロサービスアプリケーションでは、自動スケーリングポリシーを追加して、トラフィックの急増といった変化に応じてアプリケーションインスタンスを自動的にスケーリングできます。
概要
SAE は、以下のスケーリング方法をサポートしています。
-
手動スケーリング:予期しないトラフィックの急増など、緊急のスケーリングニーズに対しては手動スケーリングを使用します。
-
オートスケーリング: オートスケーリングポリシーを設定することで、定期的なトラフィックの変動など、緊急性の低いスケーリングニーズに対してオートスケーリングを使用します。SAE は、スケジュール、メトリクスベース、およびハイブリッドのオートスケーリングポリシーをサポートしています。
ユースケース
SAE は 3 種類のオートスケーリングポリシーをサポートしています:
-
スケジュールに基づく自動スケーリングポリシー:予測可能で定期的なリソース使用パターンを持つアプリケーションに適しています。これは、金融、医療、行政、教育などの業界で一般的です。
-
メトリクスベースの自動スケーリングポリシー:バーストトラフィックや定期的なトラフィック変動が発生するアプリケーションに適しています。これは、インターネットサービス、ゲーム、ソーシャルメディアなどの業界で一般的です。
-
ハイブリッド自動スケーリングポリシー:定期的なリソース需要の変動とバーストトラフィックの両方を処理するアプリケーションに適しています。これは、インターネットサービス、教育、フードサービスなどの業界で一般的です。
注意事項
-
作成できるポリシーは、スケジュールに基づく自動スケーリングポリシー (最大 5 つ)、メトリクスベースの自動スケーリングポリシー (1 つ)、またはハイブリッド自動スケーリングポリシー (1 つ) のいずれかです。これら 3 種類のポリシーを同時に使用することはできません。
-
自動スケーリングポリシーが有効になっている場合は、スケーリング、デプロイ、仕様変更、再起動、停止などの手動アプリケーションライフサイクル操作を実行しないでください。これらの操作を実行するには、まず自動スケーリングポリシーを無効にする必要があります。
-
アプリケーションが現在スケールアウト、スケールイン、デプロイ中 (シングルバッチ、段階的、またはカナリアリリース)、仕様変更中、再起動中、または停止中の場合は、プロセスが完了するまで待ってから、自動スケーリングポリシーを追加または有効化する必要があります。
-
単一アプリケーションの最大インスタンス数は 50 です。この上限を引き上げるには、DingTalk グループ (ID: 32874633) に参加し、ホワイトリストへの追加を申請してください。
前提条件
操作手順
-
SAE アプリケーションリストで、上部で対象のリージョンとネームスペースを選択し、次に対象の[アプリケーション ID]をクリックします。
-
対象アプリケーションの [Basic Information] ページで、[Auto Scaling] タブをクリックします。[Auto Scaling] セクションで [Create Auto Scaling Policy] をクリックします。
自動スケーリングポリシーの設定
スケジュールポリシー
-
[Create Auto Scaling Policy] パネルで、次のパラメータを設定し、[Next: Preview Scheduled Auto Scaling Policy] をクリックします。
パラメータ
説明
例
ポリシータイプ
[Scheduled auto scaling policy] を選択します。
スケジュールに基づく自動スケーリングポリシー
ポリシー名
ポリシーのカスタム名を入力します。
demo
期間
ポリシーが短期的か長期的かを指定します。
-
短期:開始時刻と終了時刻を指定します。
-
長期:ポリシーは無期限に有効です。
長期
繰り返し
スケーリングアクションの繰り返し頻度を指定します。オプションは、毎日、毎週、または毎月です。
毎日
日次トリガースケジュール
トリガー時刻:スケーリングアクションが発生する時刻。
目標インスタンス数:スケーリングアクションがトリガーされた後に維持するインスタンス数。
トリガー時刻:08:00 と 20:00
目標インスタンス数:10 と 3
-
-
[Preview Scheduled Auto Scaling Policy] ページで、特定の期間の予測インスタンス数を確認し、[Confirm] をクリックします。
-
スケジュールに基づく自動スケーリングポリシーを追加した後、有効化します。
メトリクスベースのポリシー
-
[Create Auto Scaling Policy] パネルで、次のパラメータを設定し、[Confirm] をクリックします。
パラメータ
説明
例
ポリシータイプ
[Metric-based auto scaling policy] を選択します。
メトリクスベースの自動スケーリングポリシー
ポリシー名
ポリシーのカスタム名を入力します。
demo
トリガー条件
メトリクスタイプを選択します。
-
CPU 使用率
-
メモリ使用率
-
TCP アクティブ接続
-
TCP 合計接続数
-
アプリケーション QPS
-
アプリケーション応答時間 (RT)
-
インターネット向け CLB QPS
-
インターネット向け CLB 応答時間
-
内部向け CLB QPS
-
内部向け CLB 応答時間
説明-
メトリクスの集計方法の詳細については、コンソールの説明をご参照ください。
-
複数のメトリクスタイプを設定できます。
CPU 使用率
指定されたメトリクスがこの値に達すると、スケーリングアクションがトリガーされます。
70%
インスタンス数
[Minimum application instances]、[Maximum application instances]、および [Minimum available instances] を設定します。
説明[Minimum available instances] は、ローリングアップデート中に利用可能な状態を維持する最小インスタンス数を指定します。この値は 数値 または 比率 で設定できます。
-
最小アプリケーションインスタンス:6
-
最大アプリケーションインスタンス:50
-
最小利用可能インスタンス:3 (数値)
詳細設定
(オプション) 必要に応じて、次のパラメータを設定します。
-
[Scale-out step size]:1 回のスケーリングアクションで追加できる最大インスタンス数。
-
[Scale-in step size]:1 回のスケーリングアクションで削除できる最大インスタンス数。
-
[Scale-out stabilization window]:スケールアウト時の急激な変動を防ぐため、アルゴリズムはこの時間枠内で計算された最大必要インスタンス数を使用してスケーリングの判断を行います。
-
[Scale-in stabilization window]:スケールイン時の急激な変動を防ぐため、アルゴリズムはこの時間枠内で計算された最大必要インスタンス数を使用してスケーリングの判断を行います。
-
[Disable scale-in]:有効にすると、アプリケーションはスケールインしません。これにより、トラフィックのピーク時にスケールインによるサービス中断を防ぐことができます。このオプションはデフォルトで無効になっています。
詳細については、「高度なオートスケーリングパラメーターのベストプラクティス」をご参照ください。
-
-
メトリクスベースの自動スケーリングポリシーを追加した後、有効化します。
ハイブリッドポリシー
ハイブリッド自動スケーリングポリシー は、スケジュールに基づく自動スケーリングポリシー と メトリクスベースの自動スケーリングポリシー を組み合わせたものです。
-
-
[Policy Type] で [Hybrid auto scaling policy] を選択し、任意の [Policy Name] を入力します。
-
[メトリック設定] を設定します。詳細については、メトリックベースのオートスケーリングポリシー のパラメーターをご参照ください。
-
(オプション) [Advanced Settings] をクリックし、必要に応じて次のパラメータを設定します。
パラメータ
説明
例
スケールアウトステップサイズ
1 回のスケーリングアクションで追加できる最大インスタンス数。
3
スケールインステップサイズ
1 回のスケーリングアクションで削除できる最大インスタンス数。
2
スケールアウト安定化ウィンドウ
スケールアウト時の急激な変動を防ぐため、アルゴリズムはこの時間枠内で計算された最大必要インスタンス数を使用してスケーリングの判断を行います。
300 秒
スケールイン安定化ウィンドウ
スケールイン時の急激な変動を防ぐため、アルゴリズムはこの時間枠内で計算された最大必要インスタンス数を使用してスケーリングの判断を行います。
300 秒
スケールインの無効化
有効にすると、アプリケーションはスケールインしません。これにより、トラフィックのピーク時にスケールインによるサービス中断を防ぐことができます。このオプションはデフォルトで無効になっています。
有効
-
[特別な期間設定] を設定します。詳細については、定時オートスケーリングポリシーのパラメーターをご参照ください。
-
-
[Preview Scheduled Auto Scaling Policy] ウィザードで、特定の期間の予測インスタンス数を確認し、[Confirm] をクリックします。
-
ハイブリッド自動スケーリングポリシーを追加した後、有効化します。
ポリシーの検証
次のいずれかの方法で、自動スケーリングポリシーが有効であることを確認します。
インスタンス数の確認
対象アプリケーションの [Basic Information] ページに移動し、[Auto Scaling] タブをクリックします。インスタンス数が自動スケーリングポリシーで指定された数と一致しているか確認します。一致している場合、ポリシーは有効です。
ページ上部の [Instance Count Trend with Scaling Metrics] チャートには、現在のアプリケーションインスタンス数と CPU 使用率などのメトリクスの変化曲線が表示されます。青色の領域はスケールアウト範囲を示し、黄色の領域はスケールイン範囲を示します。下部のポリシーリストには、[Metric Target Value]、[Maximum application instances]、[Minimum application instances] など、各ポリシーの設定詳細が表示されます。この情報を使用して、現在のインスタンス数とポリシー設定を比較できます。
ストレステストの実施
-
アプリケーションのパブリックエンドポイントを追加します。
-
SAE コンソールにログインし、[基本情報] ページの [アプリケーションアクセス設定] セクションで、[インターネット向け CLB アクセスの追加] をクリックします。
-
[Add Internet-facing CLB Access] パネルで [Create CLB (Pay-by-Specification)] を選択し、[HTTP Port] と [Container Port] を設定して、[OK] をクリックします。
この例では、[HTTP Port] を
80に、[Container Port] を3210に設定します。 -
パブリックエンドポイント のアドレスをコピーします。
[Public Endpoint] の右側に、生成されたアドレス (例:
101.xxx:80) とプロトコルタイプ [HTTP] が表示されます。
-
-
アプリケーションに対してストレステストを実行します。
-
パフォーマンス・テスト・サービス (PTS) コンソールにログインします。概要ページで、
http://<パブリックエンドポイントアドレス>の形式でエンドポイントアドレスを入力し、[テスト] をクリックします。 -
[Test Settings] パネルで、[Requests Per Second (RPS)] の数値を入力します。次に、[The test is permitted and complies with the applicable laws and regulations] チェックボックスにチェックを入れ、[Start] をクリックします。
この例では、[Total Duration] を
10分に、[Requests Per Second (RPS)] を1000に設定します。
-
-
SAE コンソールに戻ります。対象アプリケーションの[基本情報]ページで、[インスタンス一覧]タブに移動します。アプリケーションインスタンスの数が増加していることを確認します。スケールアウトの成功は、ポリシーが有効であることを示します。
説明ストレステストが完了すると、インスタンス数は自動的にスケールインします。このプロセスには時間がかかる場合があります。
スケーリングイベントの表示
対象アプリケーションの [Application Events] ページに移動します。[Source Type] でフィルタリングし、ソースタイプを [HorizontalPodAutoscaler] に設定してスケーリングイベントを表示します。
フィルタリング後、イベントリストにスケーリング関連のイベントが表示されます。レベルが「Normal」で、理由が「SuccessfulRescale」のイベントは、スケーリングアクションが成功したことを示します。イベントの詳細を展開すると、スケーリング結果 (例:New size: 5) とトリガー理由 (例:外部メトリクス slb_incall_qps が目標しきい値を超えた) を確認できます。
関連操作
-
対象アプリケーションの [Basic Information] ページで、[Auto Scaling] タブをクリックします。
-
[Auto Scaling] タブの [Auto Scaling] セクションで、対象ポリシーを見つけます。[Actions] 列で、ポリシーを 有効化、無効化、編集、または 削除 したり、ポリシーによってトリガーされた [Events] を表示したりできます。