教學課程:縮放容器應用程式
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 容器應用程式延伸模組。
az extension add --name containerapp --upgrade
注意
從 2024 年 5 月開始,Azure CLI 延伸模組預設不會再啟用預覽功能。 若要存取容器應用程式預覽功能,請使用 --allow-preview true
安裝容器應用程式延伸模組。
az extension add --name containerapp --upgrade --allow-preview true
現在已安裝目前的延伸模組或模組,請註冊 Microsoft.App
和 Microsoft.OperationalInsights
命名空間。
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 入口網站中檢視縮放 (選擇性)
- 登入 Azure 入口網站。
- 在頂端的 [搜尋] 列中,輸入 my-container-app。
- 在搜尋結果的 [資源] 底下,選取 my-container-app。
- 在左側的導覽列中,展開 [應用程式],然後選取 [縮放和複本]。
- 在 [縮放和複本] 頁面中,選取 [複本]。
- 您的容器應用程式現在有一個以上的複本正在執行。
您可能需要選取 [重新整理],才能看到新的複本。
在左側導覽列中,展開 [監視],然後選取 [計量]。
在 [計量] 頁面中,將 [計量] 設定為 [要求]。
選取 [套用分割]。
展開 [值] 下拉式清單並檢查 [複本]。
選取藍色勾選記號圖示以完成編輯分割。
此圖表顯示容器應用程式收到的要求 (依復本分割)。
根據預設,圖表刻度會設定為過去 24 小時,時間粒度為 15 分鐘。 選取刻度,並將其變更為過去 30 分鐘,時間粒度為 1 分鐘。 選取 [套用] 按鈕。
選取圖表並拖曳,在容器應用程式收到的要求中醒目提示最近的增加情形。
下列螢幕快照顯示縮放檢視,其中顯示容器應用程式接收的要求如何在複本之間分割。
清除資源
如果您不打算繼續使用此應用程式,請執行下列命令來刪除資源群組,以及本教學課程中建立的所有資源。
警告
下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本教學課程範圍以外的資源存在於指定的資源群組中,則也會一併刪除。
az group delete --name my-container-apps
提示
有問題嗎? 在 Azure 容器應用程式存放庫中提出問題,讓我們在 GitHub 上了解該問題。