教學課程:縮放容器應用程式

Azure 容器應用程式會透過一組宣告式調整規則來管理自動水平調整。 當容器應用程式擴增時,視需要建立容器應用程式的新執行個體。 這些執行個體稱為複本。

在本教學課程中,您會將 HTTP 縮放規則新增至容器應用程式,並觀察應用程式的縮放情形。

必要條件

需求 指示
Azure 帳戶 如果您沒有 Azure 帳戶,可以建立一個免費帳戶

您需要 Azure 訂用帳戶的「參與者」權限才能繼續。 如需詳細資料,請參閱使用 Azure 入口網站指派 Azure 角色
GitHub 帳戶 免費建立一個帳戶。
Azure CLI 安裝 Azure CLI

設定

若要從 CLI 登入 Azure,請執行下列命令,並遵循提示來完成驗證流程。

az login

若要確保您執行最新版的 CLI,請執行升級命令。

az upgrade

接下來,安裝或更新 CLI 的 Azure 容器應用程式延伸模組。

如果您在 Azure CLI 中執行 az containerapp 命令或 Azure PowerShell 模組中的 Cmdlet Az.App 時收到遺漏參數的錯誤,請確定您已安裝最新版的 Azure Container Apps 擴充功能。

az extension add --name containerapp --upgrade

注意

從 2024 年 5 月開始,Azure CLI 延伸模組預設不會再啟用預覽功能。 若要存取 Container Apps 預覽功能,請使用 安裝 Container Apps 擴充功能--allow-preview true

az extension add --name containerapp --upgrade --allow-preview true

現在已安裝目前的擴充功能或模組,請註冊 Microsoft.AppMicrosoft.OperationalInsights 命名空間。

注意

Azure 容器應用程式資源已從 Microsoft.Web 命名空間移轉至 Microsoft.App 命名空間。 如需詳細資訊,請參閱 2022 年 3 月將命名空間從 Microsoft.Web 移轉至 Microsoft.App

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

建立及部署容器應用程式

使用 containerapp up 命令建立及部署容器應用程式。 此命令會建立:

  • 資源群組
  • 容器應用程式環境
  • Log Analytics 工作區

如果其中任何資源已經存在,命令就會使用現有的資源,而不是建立新的資源。

最後,命令會使用公用容器映像來建立及部署容器應用程式。

az containerapp up \
  --name my-container-app \
  --resource-group my-container-apps \
  --location centralus \
  --environment 'my-container-apps' \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 8080 \
  --ingress external \
  --query properties.configuration.ingress.fqdn \

注意

請確定 --image 參數的值是小寫。

--ingress 設定為 external,即可讓容器應用程式可供公用要求使用。

up 命令會傳回容器應用程式的完整網域名稱 (FQDN)。 將此 FQDN 複製到文字檔。 您會將其用在 [傳送要求] 區段中。 您的 FQDN 看起來會像下列範例:

https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io

新增縮放規則

執行 az containerapp update 命令,將 HTTP 縮放規則新增至容器應用程式。

az containerapp update \
	--name my-container-app \
	--resource-group my-container-apps \
    --scale-rule-name my-http-scale-rule \
    --scale-rule-http-concurrency 1

此命令會使用 my-http-scale-rule 名稱和並行設定 1,將 HTTP 縮放規則新增至容器應用程式。 如果您的應用程式收到多個並行 HTTP 要求,執行階段會建立應用程式的復本來處理要求。

update 命令以 JSON 回應的形式傳回新的設定,以確認您的要求是否成功。

開始記錄輸出

您可以藉由檢視容器應用程式執行階段所產生的記錄,觀察應用程式縮放的效果。 使用 az containerapp logs show 命令開始接聽記錄項目。

az containerapp logs show \
	--name my-container-app \
	--resource-group my-container-apps \
	--type=system \
	--follow=true

show 命令會即時從容器應用程式的系統記錄檔傳回項目。 預期的回應會像下列範例所示:

{
	"TimeStamp":"2023-08-01T16:49:03.02752",
	"Log":"Connecting to the container 'my-container-app'..."
}
{
	"TimeStamp":"2023-08-01T16:49:03.04437",
	"Log":"Successfully Connected to container:
	'my-container-app' [Revision: 'my-container-app--9uj51l6',
	Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
	"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
	"Log":"Now listening on: http://[::]:8080"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
	"Log":"Application started. Press Ctrl+C to shut down."
}
{
	"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
	"Log":"Hosting environment: Production"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
	"Log":"Content root path: /app/"
}

如需詳細資訊,請參閱 az containerapp logs

傳送要求

開啟新的 Bash 殼層。 執行下列命令,將 <YOUR_CONTAINER_APP_FQDN> 取代為容器應用程式的完整網域名稱,也就是您從 [建立及部署容器應用程式] 區段儲存的完整網域名稱。

seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"

這些命令會以 10 個要求一組的並行批次,將 50 個要求傳送至您的容器應用程式。

命令或引數 描述
seq 1 50 產生從 1 到 50 的數字序列。
| 管道運算子會將序列傳送至 xargs 命令。
xargs 使用指定的 URL 執行 curl
-Iname 作為 seq 輸出的預留位置。 此引數可防止傳回值傳送至 curl 命令。
curl 呼叫指定的 URL。
-P10 指示 xargs 一次最多執行 10 個程序。

如需詳細資訊,請參閱文件:

在您執行 az containerapp logs show 命令的第一個殼層中,輸出現在會包含一個或多個記錄項目,如下所示。

{
	"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
	"Type":"Normal",
	"ContainerAppName":"my-container-app",
	"RevisionName":"my-container-app--9uj51l6",
	"ReplicaName":"my-container-app--9uj51l6-5f96557ffb-f795d",
	"Msg":"Replica 'my-container-app--9uj51l6-5f96557ffb-f795d' has been scheduled to run on a node.",
	"Reason":"AssigningReplica",
	"EventSource":"ContainerAppController",
	"Count":0
}

在 Azure 入口網站中檢視縮放 (選擇性)

  1. 登入 Azure 入口網站
  2. 在頂端的 [搜尋] 列中,輸入 my-container-app
  3. 在搜尋結果的 [資源] 底下,選取 my-container-app
  4. 在左側的導覽列中,展開 [應用程式],然後選取 [縮放和複本]
  5. 在 [縮放和複本] 頁面中,選取 [複本]
  6. 您的容器應用程式現在有一個以上的複本正在執行。

容器應用程式復本的螢幕快照。

您可能需要選取 [重新整理],才能看到新的複本。

  1. 在左側導覽列中,展開 [監視],然後選取 [計量]

  2. 在 [計量] 頁面中,將 [計量] 設定為 [要求]

  3. 選取 [套用分割]

  4. 展開 [值] 下拉式清單並檢查 [複本]

  5. 選取藍色勾選記號圖示以完成編輯分割。

  6. 此圖表顯示容器應用程式收到的要求 (依復本分割)。

    容器應用程式計量圖表,其中顯示依復本分割的要求。

  7. 根據預設,圖表刻度會設定為過去 24 小時,時間粒度為 15 分鐘。 選取刻度,並將其變更為過去 30 分鐘,時間粒度為 1 分鐘。 選取 [套用] 按鈕。

  8. 選取圖表並拖曳,在容器應用程式收到的要求中醒目提示最近的增加情形。

容器應用程式計量圖表的螢幕快照,其中顯示依復本分割的要求,其規模為 30 分鐘,且時間粒度為 1 分鐘。

下列螢幕快照顯示縮放檢視,其中顯示容器應用程式接收的要求如何在複本之間分割。

容器應用程式計量圖表的螢幕快照,其中顯示縮放檢視中依複本分割的要求。

清除資源

如果您不打算繼續使用此應用程式,請執行下列命令來刪除資源群組,以及本教學課程中建立的所有資源。

警告

下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本教學課程範圍以外的資源存在於指定的資源群組中,則也會一併刪除。

az group delete --name my-container-apps

提示

有問題嗎? 在 Azure 容器應用程式存放庫中提出問題,讓我們在 GitHub 上了解該問題。

下一步