次の方法で共有


クイックスタート: Azure Spring Apps Standard 従量課金および専用プランでアプリケーションの自動スケーリングを設定する

Note

BasicStandardEnterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。

Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。

この記事の適用対象:✅ Standard 従量課金および専用 (プレビュー) ❎ Basic/Standard ❎ Enterprise

この記事では、Azure Spring Apps Standard 従量課金および専用プランでアプリケーションの自動スケーリング規則を設定する方法について説明します。 このプランでは、Azure Container Apps 環境を使用して Spring アプリケーションをホストし、次の管理とサポートを提供します。

  • 宣言型スケーリング ルールのセットにより、自動水平スケーリングを管理します。
  • Azure Container Apps でサポートされるすべてのスケーリング ルールをサポートします。

詳細については、Azure Container Apps のドキュメントを参照してください。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントをご確認ください。
  • Azure Spring Apps Standard 従量課金および専用プラン サービス インスタンス。
  • Azure Spring Apps にデプロイされた Spring アプリ。

スケール定義

スケーリングは、制限とルールの組み合わせによって定義されます。

  • 制限とは、Spring で許可されるインスタンスの最小数と最大数です。

    スケールの制限 既定値 最小値 最大値
    デプロイあたりのインスタンスの最小数 1 0 30
    デプロイあたりのインスタンスの最大数 10 1 30

    既定では、デプロイが常に実行されるように、Spring アプリケーションの最小インスタンス数は 1 に設定されています。 0 にスケールインする場合は、最小インスタンス数を 0 に設定できます。

  • ルールとは、インスタンスを追加または削除するために自動スケーリングが従う条件です。 スケールのルールには、「Azure Container Apps でスケーリング ルールを設定する」の「スケーリング ルール」セクションで説明されているように、HTTP、TCP、およびカスタムルールが含まれます。

    複数のスケール ルールを定義すると、いずれかのルールの最初の条件が満たされたときに自動スケーリングが開始されます。

  • "ポーリング間隔" と "クールダウン期間" は、自動スケーリング中に発生する 2 つの期間です。

    • ポーリング間隔は、ルールで定義されているリアルタイム データの各ポーリング アクション間の期間を定義します。 ポーリング間隔は、既定で 30 秒に設定されています。
    • クールダウン期間は、0 にスケーリングする場合にのみ適用されます。たとえば、最後に自動スケーリングによってメッセージ キューがチェックされ、空だったときに 5 分待機します。

自動スケーリング設定を設定する

Azure portal または Azure CLI を使用して、アプリケーションの自動スケーリング設定を設定できます。

自動スケーリングの設定とルールを定義するには、次の手順に従います。

  1. Azure portal にサインインします。
  2. [Azure サービス][Azure Spring Apps] を選択します。
  3. [名前] 列で、自動スケーリングする Azure Spring Apps インスタンスを選択します。
  4. Azure Spring Apps インスタンスの概要ページで、ナビゲーション ペインの [アプリ] を選択します。
  5. 自動スケーリングするアプリケーションを選択します。
  6. 選択したアプリの概要ページで、ナビゲーション ペインの [スケールアウト] を選択します。
  7. [スケールアウト (プレビュー)] ページで、自動スケーリングするデプロイを選択します。
  8. デプロイのインスタンス制限を設定します。
  9. [追加] を選択してスケール ルールを追加します。

Azure Spring Apps インスタンス内のアプリの [スケールアウト] ページを示す Azure portal プレビュー バージョンのスクリーンショット。

カスタム スケーリング ルール

カスタム 規則の定義については、「Keda スケーラー」をご覧ください。 次のセクションでは、MySQL と Cron にスケール ルールを設定する 2 つの例を示します。

MySQL データベースで自動スケーリングルールを設定する

次の CLI コマンドは、Keda MySQL Scaler をベースにして Spring アプリケーションを自動スケーリングする方法を示しています。 まず、SQL 接続文字列を格納するシークレットを作成します。 このシークレットは、スケール ルールの認証に使用されます。 次に、テーブルの行数に基づいてアプリをスケーリングするルールを設定します。

Note

Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明されている認証フロー (データベース、キャッシュ、メッセージング、AI サービスなど) には、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、パスワードレス接続またはキーレス接続のマネージド ID など、より安全なオプションが有効でない場合にのみ使用します。 ローカル コンピューターの操作では、パスワードレス接続またはキーレス接続にユーザー ID を使用します。

az spring app update \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --name <app-name> \
    --secrets mysqlconnectionstring="<username>:<pwd>@tcp(<server name>:3306)/<database name>" 

az spring app scale \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --name <app-name> \
    --scale-rule-type mysql \
    --scale-rule-name <your rule name> \
    --scale-rule-auth "connectionString=mysqlconnectionstring" \
    --scale-rule-metadata queryValue=4 query="SELECT count(*) FROM mytable" \
    --min-replicas 0 \
    --max-replicas 3

Linux cron をベースにしてルールを作成する

次のコマンドは、Keda Cron Scaler をベースにしてルールを設定する方法を示しています。 レプリカは、cron 時間間隔中に目的の数にスケーリングされます。

az spring app scale \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --name <app-name> \
    --scale-rule-type cron \
    --scale-rule-name testscalerule \
    --scale-rule-metadata timezone="Asia/Shanghai" \
                          start="10 * * * *" \
                          end="15 * * * *" \
                          desiredReplicas="3" \
    --min-replicas 0 \
    --max-replicas 3

イベントのスケーリング

基になるコンテナー アプリのシステム ログからスケーリング イベントを見つけ、次の例に示すように KEDA を使用して EventSource をフィルター処理できます。

ContainerAppSystemLogs_CL 
| where ContainerAppName_s == 'YourAppName' and EventSource_s == 'KEDA'

リソースをクリーンアップする

この記事で作成したリソースは、不要になったら必ず削除してください。 リソースを削除するには、それらのリソースを含むリソース グループを削除するだけです。 リソース グループは、Azure portal を使用して削除できます。 また、Azure CLI を使用してリソース グループを削除するには、次のコマンドを使用します。

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

次の手順