すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:自動スケーリング

最終更新日:Mar 13, 2025

このトピックでは、Enterprise Distributed Application Service (EDAS) で自動スケーリングポリシーを構成する方法について説明します。自動スケーリングは、分散アプリケーション管理のための重要な O&M 機能です。自動スケーリングが有効になっている場合、システムは各アプリケーションインスタンスのステータスを検出し、インスタンスステータスに基づいてアプリケーションを動的にスケールインまたはスケールアウトできます。これにより、サービス品質が保証され、アプリケーションの可用性が向上します。

背景情報

インターネットやゲームアプリケーションなどのアプリケーションは、プロモーション活動中にトラフィックが急増しやすい傾向があります。さらに、サービスレベルアグリーメント (SLA) とリソースコストの間に不均衡が生じます。これらは、応答の遅延や故障などのシステムの問題を引き起こす可能性があります。EDAS は、Alibaba グループが独身の日における大量のトラフィックに対処するために使用しているトラフィック急増管理技術を使用しており、数秒以内に自動スケーリングを可能にします。これにより、SLA 準拠が保証され、サーバー維持のコストが削減されます。自動スケーリングは、インターネット、ゲーム、ソーシャルネットワーキングプラットフォームなどの業界に適用できます。

EDAS のContainer Service for Kubernetes (ACK) クラスタおよび ACK Serverless クラスタにデプロイされているアプリケーションに対して、自動スケーリングポリシーを構成できます。

自動スケーリングポリシーに対して複数のトリガーを構成できます。次の点に注意してください。

  • Kubernetes クラスタのバージョンが V1.15.0 より前の場合、すべてのトリガーが満たされた場合にのみ自動スケーリングがトリガーされます。

  • Kubernetes クラスタのバージョンが V1.15.0 以降の場合、いずれかのトリガーが満たされると自動スケーリングがトリガーされます。複数のトリガーが満たされた場合、システムは各トリガーに構成されている予想インスタンス数をチェックし、最大値をアプリケーションの予想インスタンス数として選択します。

イベントセンターに移動して、アプリケーションのスケーリングに関連するイベントをサブスクライブできます。このようにして、アプリケーションがスケールアウトまたはスケールインされた場合、または自動スケーリング後のアプリケーションインスタンス数が上限または下限に達したためにアプリケーションのスケーリングが失敗した場合、通知が送信されます。詳細については、「イベントセンター」をご参照ください。

重要
  • 自動スケーリングポリシーが有効になっている場合、アプリケーションを [停止][開始]、または [手動でスケールアウトまたはスケールイン] することはできません。これらの操作を実行する場合は、自動スケーリングポリシーを無効にしてください。

    • アプリケーションのサービスを構成し、Server Load Balancer (SLB) インスタンスをアプリケーションにバインドできます。この場合、自動スケーリングが発生すると、EDAS は SLB インスタンスのバックエンドサーバーのリストにアプリケーションインスタンスを自動的に追加または削除します。

    • アプリケーションの永続ストレージを構成できます。この場合、自動スケーリングが発生すると、EDAS は追加されたアプリケーションインスタンスを構成済みの永続ストレージに自動的に関連付けます。

  • アプリケーションのデプロイ、アプリケーションのスケーリング、仕様の変更など、アプリケーションの変更が進行中の場合は、自動スケーリングポリシーを作成できません。

  • Kubernetes クラスタでノードの自動スケーリングが無効になっている場合、アプリケーションの自動スケーリング機能が有効にならない可能性があります。ACK コンソールに移動し、[クラスタ] ページでノードの自動スケーリングを構成できます。

手順

複数のトリガーを構成できます。EDAS は、トリガーに基づいてアプリケーションインスタンスを自動的にスケールアウトまたはスケールインします。

  1. EDAS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。 上部のナビゲーションバーで、リージョンを選択します。[アプリケーション] ページの上部にある [マイクロサービス名前空間] ドロップダウンリストからマイクロサービス名前空間を選択します。次に、管理するアプリケーションの名前をクリックします。

  3. アプリケーション詳細ページの左側のナビゲーションウィンドウで、[アプリケーション設定] > [自動スケーリング] を選択します。 [自動スケーリング] ページで、[自動スケーリングポリシーの作成] をクリックします。

    または、アプリケーション概要 ページの右上隅にある [スケール] > [自動スケーリング] を選択します。表示されるページで、[自動スケーリングポリシーの作成] をクリックします。[自動スケーリング] ページの下部にある [メトリックベースの自動スケーリングポリシーの作成] または [スケジュールされた自動スケーリングポリシーの作成] セクションで、自動スケーリングポリシーテンプレートを選択することもできます。

  4. [ポリシー名] フィールドに、自動スケーリングポリシーの名前を入力します。

    説明

    名前は文字で始まり、数字、文字、ハイフン (-)、およびアンダースコア (_) を含めることができます。名前は最大 30 文字まで使用できます。

  5. [トリガー条件] セクションで、[トリガーの作成] をクリックします。 [トリガーの作成] パネルで、トリガールールを構成します。構成が完了したら、[OK] をクリックします。

    表 1. パラメータ

    パラメータ

    説明

    トリガー名

    トリガーの名前。名前は文字で始まり、数字、文字、ハイフン (-)、およびアンダースコア (_) を含めることができます。名前は最大 30 文字まで使用できます。

    トリガータイプ

    トリガーのタイプ。 [時間トリガー] または [アプリケーションメトリックベースのトリガー] を選択できます。

    • 時間トリガー

      アプリケーションの負荷が定期的に変動する場合は、時間トリガーを選択できます。たとえば、負荷は 8:00 から 20:00 まで高く、20:00 から翌日の 8:00 まで低く、または平日は負荷が高く、週末は負荷が低いなどです。

      1. サイクル: ドロップダウンリストから [毎日][毎週]、または [毎月] を選択します。

        説明

        [毎週] を選択した場合は、必要に応じて曜日を指定してトリガールールを構成します。曜日に応じて異なるトリガールールを構成するには、複数の時間トリガーを作成します。

      2. 1 日のトリガー時間: 各トリガーイベントのトリガー時間とインスタンス数を指定します。 [追加] をクリックして行を追加できます。構成は毎日有効になります。

        重要
        • 指定したトリガー時間が過ぎている場合、構成は次のサイクルで有効になります。

        • 連続する 2 つのトリガーイベントの間隔は 10 分以上にする必要があります。

        • 連続する 2 つのトリガーイベント間のインスタンス数の変化率は 10% 以上にする必要があります。たとえば、Pod1 は最初のトリガーイベントのインスタンス数を指定し、Pod2 は 2 番目のトリガーイベントのインスタンス数を指定します。この場合、Pod2 を Pod1 で割った結果は、1.1 より大きい または 0.9 より小さい 必要があります。

      3. 保持されるインスタンス: 自動スケーリングポリシーが有効になった後に保持するインスタンス数を指定します。有効値: 0 ~ 50。

      4. トリガーモード: このパラメータは、[サイクル] パラメータを [毎日] に設定した場合にのみ必須です。有効値:

        • 時間範囲に適用: トリガーイベントに指定したインスタンス数は、次のトリガーイベントが発生するまで適用されます。

        • 時点に適用: トリガーイベントに指定したインスタンス数は、トリガーイベントが発生した時点でのみ適用されます。

    • アプリケーションメトリックベースのトリガー

      アプリケーションの監視メトリックがアプリケーションインスタンスの数と線形に相関している場合は、アプリケーションメトリックベースのトリガーを選択できます。たとえば、ストレステストの結果、単一のアプリケーションインスタンスが 1 秒あたり 200 クエリ/秒 (QPS) を処理できることが示されています。QPS が 1,200 に達すると、システムはスケールアウトを実行して、アプリケーションに 6 つのインスタンスがあることを確認します。

      1. メトリック名: [アプリケーションによって提供される 1 秒あたりの平均リクエスト数][アプリケーションによって提供されるサービスの平均応答時間 (ミリ秒)][アプリケーションの平均 CPU 使用率]、または [アプリケーションの平均メモリ使用量] を選択できます。

      2. 平均値に基づいてメトリック値を計算する: このパラメータは、[トリガータイプ] パラメータを [アプリケーションメトリックベースのトリガー] に設定し、[メトリック名] パラメータを [アプリケーションによって提供される 1 秒あたりの平均リクエスト数] または [アプリケーションによって提供されるサービスの平均応答時間 (ミリ秒)] に設定した場合にのみ表示されます。デフォルトでは、メトリック値はリアルタイムデータに基づいて計算されます。 [平均データに基づいてメトリック値を計算する] を選択すると、メトリック値は平均データに基づいて計算されます。これは、データの変動を減らすのに役立ちます。 [メトリック統計の時間枠] パラメータは、平均データに基づいてメトリック値が計算される時間範囲を指定します。 [メトリック統計の時間枠] パラメータの有効値は 300 ~ 3600 秒です。

      3. 期待値: メトリックの期待値を設定します。システムは、アプリケーションのメトリック値が期待値に最も近くなるように、インスタンスを自動的に追加または削除します。

        説明

        アプリケーションのメトリック値が期待値よりも小さい場合、システムは自動的にインスタンスを削除します。アプリケーションのメトリック値が期待値よりも大きい場合、システムは自動的にインスタンスを追加します。

    モード

    トリガーを実行するモードを選択します。有効値:

    • 監視のみ: メトリック値のみを監視します。期待値に達した場合、イベントはイベントセンターに送信されますが、自動スケーリングはトリガーされません。

    • 監視とスケーリング: メトリック値を監視します。期待値に達した場合、イベントはイベントセンターに送信され、自動スケーリングがトリガーされます。

    説明

    [メトリック名] パラメータを [アプリケーションの平均 CPU 使用率] または [アプリケーションの平均メモリ使用量] に設定した場合、システムは期待値の 0.9 ~ 1.1 倍を有効値範囲と見なします。トリガーイベントは、メトリック値がこの値の範囲外にある場合にのみ発生します。

  6. [アプリケーションの最大インスタンス数] パラメータと [アプリケーションの最小インスタンス数] パラメータを設定します。

    • アプリケーションの最大インスタンス数: 2 ~ 1000 の範囲の値を指定します。トリガー条件が満たされると、システムはアプリケーションを自動的にスケールアウトします。このパラメータは、自動スケーリングのアプリケーションインスタンスの最大数を指定します。

    • アプリケーションの最小インスタンス数: 0 ~ 1000 の範囲の値を指定します。トリガー条件が満たされると、システムはアプリケーションを自動的にスケールインします。このパラメータは、自動スケーリングのアプリケーションインスタンスの最小数を指定します。

    説明
    • 複数のトリガーが満たされた場合、システムは各トリガーに構成されている予想インスタンス数をチェックし、最大値をアプリケーションの予想インスタンス数として選択します。

    • 予想インスタンス数が現在のインスタンス数よりも大きい場合、EDAS はアプリケーションをスケールアウトします。インスタンス数は、[アプリケーションの最大インスタンス数] パラメータの値を超えません。予想インスタンス数が現在のインスタンス数よりも小さい場合、EDAS はアプリケーションをスケールインします。インスタンス数は、[アプリケーションの最小インスタンス数] パラメータの値よりも小さくなりません。

    • [アプリケーションの最小インスタンス数] パラメータの値は、[アプリケーションの最大インスタンス数] パラメータの値と同じにすることはできません。

    • 現在のインスタンス数がその間に収まるように、[アプリケーションの最小インスタンス数] パラメータと [アプリケーションの最大インスタンス数] パラメータを設定することをお勧めします。現在のインスタンス数が値の範囲外の場合、自動スケーリングポリシーを保存するときに 保持されているインスタンスの数が、インスタンスの最大数と最小数の範囲を超えています というメッセージが表示されます。ただし、自動スケーリングポリシーは引き続き保存されます。

  7. オプション: [カスタム自動スケーリングポリシー] をオンにして、スケールアウトとスケールインの動作を構成します。

    • クールダウン時間 (秒): 必要に応じてクールダウン時間を指定します。単位: 秒。有効値: 0 ~ 3600。デフォルトでは、クールダウン時間はスケールアウト動作で 0 秒、スケールイン動作で 300 秒です。

    • スケールアウトまたはスケールインポリシー: [スケールアウト動作] セクションで、[スケールアウトポリシーの作成] をクリックして、スケールアウトポリシーを構成します。 [スケールイン動作] セクションで、[スケールインポリシーの作成] をクリックして、スケールインポリシーを構成します。

      • ポリシータイプ: ポリシータイプを選択します。有効値: [ポッド] および [パーセント][ポッド] の値は、アプリケーションインスタンスの数を示します。 [パーセント] の値は、アプリケーションインスタンスのパーセンテージを示します。

      • ステップサイズ/パーセンテージ: [ポリシータイプ] パラメータの値に基づいてこのパラメータを設定します。たとえば、[ポリシータイプ] パラメータを [ポッド] に設定した場合は、このパラメータをアプリケーションインスタンスの数に設定します。

      • 期間 (秒): ポリシーに基づいてアプリケーションがスケールアウトまたはスケールインされる期間を指定します。たとえば、[ポリシータイプ] パラメータを [パーセント] に、[ステップサイズ/パーセンテージ] パラメータを 10 に、[期間 (秒)] パラメータを 60 に設定した場合、現在のインスタンス数は 1 分以内に最大 10% までスケールアウトまたはスケールインできます。

      [スケールインポリシーに同期] をクリックして、構成済みのスケールアウトポリシーを [スケールイン動作] セクションに同期するか、[スケールアウトポリシーに同期] をクリックして、構成済みのスケールインポリシーを [スケールアウト動作] セクションに同期できます。

    • ポリシーの選択: [最小][最大]、または [無効] を選択できます。デフォルト値: [最大]

  8. 上記の構成が完了したら、[保存] をクリックします。

  9. [自動スケーリング] ページの右上隅にある [有効化] をクリックします。

    自動スケーリングがトリガーされると、EDAS は自動スケーリングポリシーに基づいてアプリケーションをスケールアウトまたはスケールインします。これは、自動スケーリングポリシーの構成が成功したことも示します。

結果の確認

自動スケーリングポリシーが有効になると、EDAS は自動スケーリングポリシーに基づいてアプリケーションを自動的にスケールアウトまたはスケールインします。次の手順を実行して、自動スケーリングイベントの詳細を表示できます。

  1. [自動スケーリング] ページの右上隅にある [イベント] をクリックします。

  2. [イベントセンター] ページの右上隅で、イベントをクエリする時間範囲を設定します。

  3. [イベントセンター] ページで、[標準ビュー] タブをクリックします。

  4. [標準ビュー] タブで、Kubernetes イベント[イベントソース] ドロップダウンリストから [scalingreplicaset][dryrunsuccessfulrescale]イベントの種類[検索] を選択し、 ドロップダウンリストから または を選択して、 をクリックします。

    • ScalingReplicaSet: [監視とスケーリング] モードで生成されるイベント。自動スケーリングイベントの詳細を表示できます。

    • DryRunSuccessfulReScale: [監視のみ] モードで生成されるイベント。このモードでは、自動スケーリングはトリガーされません。

    Auto Scaling events

次のステップ

自動スケーリングポリシーが有効になったら、ポリシーを [削除][無効化]、または [変更] できます。無効化されたポリシーを [有効化] したり、アプリケーションを管理したりすることもできます。

説明

自動スケーリングポリシーが有効になっている場合、アプリケーションを [停止][開始]、または [手動でスケールアウトまたはスケールイン] することはできません。これらの操作を実行する場合は、自動スケーリングポリシーを無効にしてください。