共用方式為


快速入門:在 Azure Spring Apps 標準取用和專用方案中設定應用程式的自動調整

注意

基本標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告

標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps

本文適用於:✅ 標準取用和專用 (預覽) ❎ 基本/標準❎企業

本文說明如何在 Azure Spring Apps 標準取用和專用方案中設定應用程式的自動調整規則。 此方案會使用 Azure Container Apps 環境來裝載 Spring 應用程式,並提供下列管理和支援:

  • 透過一組宣告式調整規則來管理自動水平調整。
  • 支援 Azure Container Apps 支援的所有調整規則。

如需詳細資訊,請參閱 Azure Container Apps 檔

必要條件

調整定義

調整是由限制和規則的組合所定義。

  • 限制是 Spring 允許的最小和最大實例數目。

    調整限制 預設值 最小值 最大值
    每個部署的實例數目下限 1 0 30
    每個部署的實例數目上限 10 1 30

    根據預設,Spring 應用程式的最小實例計數會設定為 1,以確保您的部署一律正在執行。 如果您想要將 縮減為零,您可以將最小實例計數設定為零。

  • 規則是自動調整所遵守以新增或移除實例的準則。 調整規則包括 HTTP、TCP 和自定義規則,如在 Azure Container Apps 中設定調整規則的調整規則一節所述

    如果您定義多個縮放規則,則自動調整會在符合任何規則的第一個條件時開始。

  • 輪詢間隔冷卻期間是自動調整期間發生的兩個時間範圍。

    • 輪詢間隔會定義規則所定義之實時數據的每個輪詢動作之間的時間範圍。 輪詢間隔預設會設定為30秒。
    • 冷卻期間僅適用於調整為零時,例如,在上次自動調整檢查消息佇列且為空白時,等候五分鐘。

設定自動調整設定

您可以使用 Azure 入口網站 或 Azure CLI 來設定應用程式的自動調整設定。

使用下列步驟來定義自動調整設定和規則。

  1. 登入 Azure 入口網站。
  2. 選取 [Azure 服務] 底下的 [Azure Spring Apps]。
  3. 在 [名稱] 數據行中,選取您想要自動調整的 Azure Spring Apps 實例。
  4. 在 Azure Spring Apps 實例的概觀頁面上,選取 瀏覽窗格中的 [應用程式 ]。
  5. 選取您要自動調整的應用程式。
  6. 在所選應用程式的 [概觀] 頁面上,選取瀏覽窗格中的 [ 相應放大 ]。
  7. 在 [ 相應放大(預覽)] 頁面上,選取您要自動調整的部署。
  8. 設定部署的實例限制。
  9. 選取 [ 新增 ] 以新增您的調整規則。

Azure 入口網站 預覽版本的螢幕快照,其中顯示 Azure Spring Apps 實例中應用程式的相應放大頁面。

自訂調整規則

如需定義自定義規則的資訊,請參閱 Keda Scalers。 下列各節示範在 MySQL 和 Cron 上設定縮放規則的兩個範例。

在 MySQL 資料庫上設定自動調整規則

下列 CLI 命令示範如何根據 Keda MySQL Scaler 自動調整 Spring 應用程式。 首先,建立秘密來儲存 SQL 連接字串。 此秘密會用於調整規則驗證。 然後,設定規則,根據數據表的數據列計數來調整應用程式。

注意

Microsoft 建議您使用最安全的可用驗證流程。 此程式中所述的驗證流程,例如資料庫、快取、傳訊或 AI 服務,在應用程式中需要高度的信任,而且不會在其他流程中帶來風險。 只有在更安全的選項,例如無密碼或無密鑰連線的受控識別時,才能使用此流程。 針對本機計算機作業,偏好使用無密碼或無密鑰連線的使用者身分識別。

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

調整事件

您可以從基礎容器應用程式的系統記錄中找到調整事件,並使用 來篩選 EventSource KEDA,如下列範例所示:

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

清除資源

當您不再需要資源時,請務必刪除您在本文中建立的資源。 若要刪除資源,只要刪除包含這些資源的資源群組即可。 您可以使用 Azure 入口網站 刪除資源群組。 或者,若要使用 Azure CLI 刪除資源群組,請使用下列命令:

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

下一步