自動スケーリングは、リアルタイムメトリックまたは事前定義されたスケジュールに基づいて、アプリケーションインスタンスの数を動的に調整します。トラフィックスパイクが発生すると、EDAS はインスタンスを追加してパフォーマンスを維持します。需要が減少すると、EDAS はインスタンスを削除してコストを削減します。
自動スケーリングは、Container Service for Kubernetes (ACK) クラスターおよびサーバーレス Kubernetes クラスターにデプロイされたアプリケーションで利用できます。EDAS は、Alibaba Group が独身の日などの高トラフィックイベントを処理するために使用するトラフィック急増管理技術を活用し、数秒以内に自動スケーリングを可能にします。これにより、SLAコンプライアンスが確保され、サーバー保持コストが削減されます。自動スケーリングは、インターネット、ゲーム、ソーシャルネットワーキングプラットフォームなどの業界に適用できます。
自動スケーリングの仕組み
EDAS の自動スケーリングは、次の2種類のトリガーをサポートしています。
[時間トリガー]: 定期スケジュールに基づいてスケーリングします。営業時間中の高負荷や夜間の低負荷など、負荷が予測可能なパターンに従う場合は、時間トリガーを使用します。
メトリックベースのトリガー: CPU使用率、メモリ使用量、リクエストレート、応答時間などのリアルタイムメトリックに基づいてスケーリングします。負荷が予測できない場合や、特定のパフォーマンス指標と相関する場合は、メトリックベースのトリガーを使用します。
複数のトリガー
単一のポリシーで複数のトリガーを構成できます。動作は、ご利用の Kubernetes クラスターバージョンによって異なります。
| クラスターバージョン | トリガー評価 |
|---|---|
| V1.15.0 より前 | すべてのトリガーが満たされた場合にのみ、スケーリングが発生します。 |
| V1.15.0 以降 | いずれかのトリガーが満たされた場合に、スケーリングが発生します。複数のトリガーが発動した場合、システムは最も高い期待インスタンス数を使用します。 |
SLBと永続ストレージの統合
自動スケーリングは、他の EDAS 機能と自動的に連携します。
Server Load Balancer (SLB): Service が構成され、SLB インスタンスがアプリケーションにバインドされている場合、EDAS はスケーリングされたインスタンスを SLB バックエンドサーバーリストに自動的に追加または削除します。
永続ストレージ: 永続ストレージが構成されている場合、EDAS は新しいインスタンスを構成されたストレージに自動的に関連付けます。
前提条件
開始する前に、以下を確認してください。
ご利用のアプリケーションが ACK またはサーバーレス Kubernetes クラスターにデプロイされていること
お使いの Kubernetes クラスターでは、ノードの自動スケーリングが有効になっています。ノードの自動スケーリングが無効になっている場合、アプリケーションの自動スケーリングが有効にならない可能性があります。ACK コンソールの [クラスター] ページで、ノードの自動スケーリングを有効化します。
アプリケーションの変更 (デプロイメント、スケーリング、または仕様変更) が進行中でないこと。アクティブな変更中に自動スケーリングポリシーを作成することはできません。
自動スケーリングポリシーを有効にした後は、アプリケーションの[停止]、[開始]、または[手動スケーリング]は実行できません。これらの操作を実行するには、まず自動スケーリングポリシーを無効にしてください。
自動スケーリングポリシーの作成
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。上部のナビゲーションバーで、リージョンを選択します。[アプリケーション] ページの上部で、Microservices Namespace ドロップダウンリストから microservices namespace を選択します。次に、管理するアプリケーションの名前をクリックします。
アプリケーション詳細ページの左側のナビゲーションウィンドウで、[アプリケーション設定] > [Auto Scaling] を選択します。Auto Scaling ページで、[Auto Scaling ポリシーの作成] をクリックします。あるいは、[アプリケーション概要] ページの右上隅で、[スケール] > [Auto Scaling] を選択し、[Auto Scaling ポリシーの作成] をクリックします。また、Auto Scaling ページの下部にある [メトリクスベースのAuto Scalingポリシーの作成] または [スケジュールされたAuto Scalingポリシーの作成] セクションでテンプレートを選択することもできます。
[ポリシー名] フィールドに、ポリシーの名前を入力します。
説明名前は文字で始まり、数字、文字、ハイフン (-)、アンダースコア (_) を含めることができます。最大長: 30文字。
[トリガー条件]セクションで、[トリガーの作成]をクリックします。[トリガーの作成]パネルで、トリガーを設定して[OK]をクリックします。
[トリガー名] を入力します。先頭は英字にする必要があります。使用できる文字は、数字、英字、ハイフン (-)、アンダースコア (_) です。最大 30 文字までです。
時間トリガーの構成
時間トリガーを使用して、定期スケジュールでインスタンスをスケーリングします。
[トリガーの種類] を [時間ベースのトリガー] に設定します。
[サイクル] を [毎日]、[毎週]、または [毎月] に設定します。
説明[毎週] を選択した場合は、曜日を指定してください。異なる曜日に異なるルールを設定するには、個別の時間トリガーを作成してください。
[1 日のうちのトリガー時間]: 各イベントのトリガー時間とターゲットインスタンス数を指定します。[追加] をクリックして行を追加します。
以下の制約が適用されます。
制約 詳細 過去のトリガー時間 指定されたトリガー時間がすでに経過している場合、構成は次のサイクルで有効になります。 最小間隔 連続するトリガーイベント間の間隔は10分より大きい必要があります。 最小変更率 連続するイベント間でインスタンス数は10%以上変更する必要があります。最初のイベントがPod1インスタンスをターゲットとし、2番目のイベントがPod2インスタンスをターゲットとする場合、比率 Pod2/Pod1 は1.1より大きいか、0.9より小さい必要があります。 ポリシーを有効化した後に保持するインスタンス数を、[保持インスタンス数] に設定します。有効な値: 0~50。
[トリガーモード] の設定 ([サイクル] が [毎日] に設定されている場合にのみ利用可能):
モード 動作 [時間範囲に適用] ターゲットインスタンス数は、次のトリガーイベントまで維持されます。 [時点に適用] ターゲットインスタンス数は、正確なトリガー時間のみに適用されます。
メトリックベースのトリガーの構成
メトリックベースのトリガーを使用して、リアルタイムのアプリケーションメトリックに基づいてインスタンスをスケーリングします。
[トリガーの種類] を [アプリケーションメトリクスベースのトリガー] に設定します。
[メトリック名] を選択します:
メトリック 説明 [アプリケーションが提供する1秒あたりの平均リクエスト数] すべてのインスタンスの平均QPS [アプリケーションが提供するサービスの平均応答時間 (ミリ秒)] ミリ秒単位の平均応答時間 [アプリケーションの平均CPU使用率] 平均CPU使用率 [アプリケーションの平均メモリ使用量] 平均メモリ使用率 任意: リクエストレートまたは応答時間のメトリックについては、変動を平滑化するには [平均データに基づくメトリック値の計算] を選択します。次に、[メトリック統計の時間枠] を 300 秒から 3,600 秒の間の値に設定します。
デフォルトでは、メトリック値はリアルタイムデータから計算されます。このオプションを有効にすると、代わりに指定されたタイムウィンドウの平均値が使用され、短期間のスパイクによるノイズが低減されます。
[期待値] を目標メトリック値に設定します。 システムは、メトリックがこの値にできるだけ近くなるように、インスタンスを追加または削除します。
現在のメトリック値が期待値を下回る場合、システムはインスタンスを削除します。
現在のメトリック値が期待値を超える場合、システムはインスタンスを追加します。
トリガーモードの選択
トリガーごとに、[モード] を選択してください:
モード 動作 [監視のみ] しきい値に達すると Event Center にイベントを送信しますが、スケーリングはトリガーしません。自動スケーリングを有効にする前にしきい値を検証するには、このモードを使用します。 [監視とスケーリング] しきい値に達するとスケーリングをトリガーし、Event Center にイベントを送信します。 説明メトリックを [アプリケーションの平均 CPU 使用率] または [アプリケーションの平均メモリ使用量] に設定した場合、システムは期待値の 0.9 倍から 1.1 倍を有効範囲と見なします。トリガーイベントは、メトリック値がこの範囲から外れた場合にのみ発生します。
インスタンス数の境界を設定します。
説明最小値と最大値は同じにできません。
現在のインスタンス数がそれらの間になるようにこれらの値を設定します。そうでない場合、ポリシーを保存するときに警告が表示されますが、ポリシーは保存されます。
複数のトリガーが発動した場合、システムは最大値で制限され、最小値で下限が設定された最も高い期待インスタンス数を使用します。
パラメーター 有効値 説明 [最大アプリケーションインスタンス数] 2~1,000 システムはこの制限を超えてスケーリングしません。 [最小アプリケーションインスタンス数] 0~1,000 システムはこの制限を下回ってスケーリングしません。 オプション: [カスタム Auto Scaling ポリシー] を有効化して、水平スケーリングの動作を微調整する。
クールダウン時間
[クールダウン時間 (秒)] を設定して、スケーリング操作が短時間に連続して実行されるのを防ぎます。有効な値: 0~3,600 秒。
動作 デフォルトのクールダウン スケールアウト 0秒 スケールイン 300秒 スケーリングステップポリシー
「[スケールアウト動作]」セクションで、「[スケールアウトポリシーの作成]」をクリックします。 「[スケールイン動作]」セクションで、「[スケールインポリシーの作成]」をクリックします。 それぞれについて、以下のパラメーターを設定します。
パラメーター 説明 ポリシーの種類 Pods(絶対インスタンス数)または Percent(現在のインスタンス数に対する割合)。 ステップサイズ/パーセンテージ 各ステップで追加または削除するインスタンス数または割合。 時間間隔(秒) ポリシーを適用するタイムウィンドウ。たとえば、Percent = 10 かつ 時間間隔 = 60 の場合、インスタンス数は最大で 1 分あたり 10 % 変化します。 スケールアウトとスケールインの動作間で設定をコピーするには、[スケールインポリシーに同期] または [スケールアウトポリシーに同期] をクリックします。
ポリシー選択
[ポリシー選択] を設定して、システムが複数のスケーリングポリシーの中からどのように選択するかをコントロールします:
オプション 動作 Max(デフォルト) 変更量が最大となるポリシーを適用します。 Min 変更量が最小となるポリシーを適用します。 Disabled カスタムポリシーを無効化します。 [保存] をクリックします。
Auto Scaling ページの右上隅で、[有効化] をクリックします。
トリガー条件が満たされると、EDAS は構成されたポリシーに基づいてアプリケーションをスケーリングします。
スケーリングイベントの検証
自動スケーリングポリシーを有効にした後、スケーリングイベントが期待どおりにトリガーされることを確認します。
「[Auto Scaling]」ページの右上隅で、[イベント] をクリックします。
[イベントセンター] ページの右上隅で、期間を設定します。
[通常表示] タブをクリックします。
[K8s イベント] を [イベントソース] ドロップダウンリストから選択し、[イベントタイプ] ドロップダウンリストからイベントタイプを選択してから、[検索] をクリックします。
イベントタイプ 説明 ScalingReplicaSet 監視とスケーリング モードで生成されるイベントです。実際のスケーリング操作を表示します。 DryRunSuccessfulReScale [監視のみ] モードで生成されるイベントです。発生するはずだったスケーリング操作を表示します。

Event Center でスケーリングイベントをサブスクライブして、スケーリングが成功した場合やインスタンス数が構成された制限に達した場合に通知を受け取ることもできます。詳細については、「Event Center」をご参照ください。
自動スケーリングポリシーの管理
Auto Scaling ポリシーを有効にすると、Auto Scaling ページからポリシーを[無効化]、[変更]、または[削除]できます。また、無効化されたポリシーを[有効化]することもできます。
自動スケーリングポリシーが有効な間は、アプリケーションの[停止]、[開始]、[手動スケーリング]はできません。これらの操作を実行するには、まず自動スケーリングポリシーを無効化してください。