對 Azure App Service 上的高密度託管使用個別應用程式調整
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱 安裝 Azure PowerShell。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
使用 App Service 時,您可以藉由擴充執行應用程式的 App Service 方案,來擴充應用程式。 當有多個應用程式執行於相同 App Service 方案中時,每個向外延展的執行個體都會執行方案中的所有應用程式。
您可在 App Service 方案層級啟用個別應用程式調整,以允許從裝載應用程式的 App Service 方案獨立調整應用程式。 如此一來,就可以將 App Service 方案調整為 10 個執行個體,但將應用程式設定為只使用 5 個。
注意
個別應用程式調整僅適用於標準、進階、進階 V2、進階 V3 和隔離式定價層。
即使分散於執行個體,應用程式仍會使用最佳做法,配置到可用的 App Service 方案。 雖然不保證平均分散,但平台會確保相同應用程式的兩個執行個體,不會裝載在相同的 App Service 方案執行個體。
平台不會仰賴計量來決定背景工作角色配置。 只有在從 App Service 方案中新增或移除執行個體時,才會重新平衡應用程式。
使用 PowerShell 進行個別應用程式調整
透過將 -PerSiteScaling $true
參數傳遞給 New-AzAppServicePlan
Cmdlet,建立一個有「個別應用程式調整」的方案。
New-AzAppServicePlan -ResourceGroupName $ResourceGroup -Name $AppServicePlan `
-Location $Location `
-Tier Premium -WorkerSize Small `
-NumberofWorkers 5 -PerSiteScaling $true
透過將 -PerSiteScaling $true
參數傳遞給 Set-AzAppServicePlan
Cmdlet,對現有 App Service 方案啟用「個別應用程式調整」。
# Enable per-app scaling for the App Service Plan using the "PerSiteScaling" parameter.
Set-AzAppServicePlan -ResourceGroupName $ResourceGroup `
-Name $AppServicePlan -PerSiteScaling $true
在應用程式層級,設定應用程式可以在 App Service 方案中使用的執行個體數目。
在以下範例中,應用程式限制為 2 個執行個體,不論其基礎 App Service 方案的規模相應放大到多少個執行個體。
# Get the app we want to configure to use "PerSiteScaling"
$newapp = Get-AzWebApp -ResourceGroupName $ResourceGroup -Name $webapp
# Modify the NumberOfWorkers setting to the desired value.
$newapp.SiteConfig.NumberOfWorkers = 2
# Post updated app back to azure
Set-AzWebApp $newapp
重要
$newapp.SiteConfig.NumberOfWorkers
不同於 $newapp.MaxNumberOfWorkers
。 個別應用程式調整會使用 $newapp.SiteConfig.NumberOfWorkers
來決定應用程式的調整特性。
使用 Azure Resource Manager 進行個別應用程式調整
下列「Azure Resource Manager 範本」會建立:
- 規模相應放大到 10 個執行個體的 App Service 方案
- 已設定為將上限調整成 5 個執行個體的應用程式。
App Service 方案會將 PerSiteScaling 屬性設為 true ("perSiteScaling": true
)。 應用程式會將要使用的「背景工作角色數目」設定為 5 ("properties": { "numberOfWorkers": "5" }
)。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters":{
"appServicePlanName": { "type": "string" },
"appName": { "type": "string" }
},
"resources": [
{
"comments": "App Service Plan with per site perSiteScaling = true",
"type": "Microsoft.Web/serverFarms",
"sku": {
"name": "P1",
"tier": "Premium",
"size": "P1",
"family": "P",
"capacity": 10
},
"name": "[parameters('appServicePlanName')]",
"apiVersion": "2015-08-01",
"location": "West US",
"properties": {
"name": "[parameters('appServicePlanName')]",
"perSiteScaling": true
}
},
{
"type": "Microsoft.Web/sites",
"name": "[parameters('appName')]",
"apiVersion": "2015-08-01-preview",
"location": "West US",
"dependsOn": [ "[resourceId('Microsoft.Web/serverFarms', parameters('appServicePlanName'))]" ],
"properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverFarms', parameters('appServicePlanName'))]" },
"resources": [ {
"comments": "",
"type": "config",
"name": "web",
"apiVersion": "2015-08-01",
"location": "West US",
"dependsOn": [ "[resourceId('Microsoft.Web/Sites', parameters('appName'))]" ],
"properties": { "numberOfWorkers": "5" }
} ]
}]
}
高密度裝載的建議組態
個別應用程式調整是全域 Azure 區域和 App Service 環境中啟用的功能。 不過,建議策略是使用 App Service 環境,以利用其進階功能和較大的 App Service 方案容量。
請遵循下列步驟來設定應用程式的高密度裝載︰
- 將 App Service 方案指定為高密度方案,並將其擴大至所需的容量。
- 在 App Service 方案上將
PerSiteScaling
旗標設定為 true。 - 新應用程式會建立並指派給該 App Service 方案,其中 numberOfWorkers 屬性會設定為 1。
- 使用此設定會盡可能產生最高密度。
- 背景工作角色數目可依每個應用程式單獨設定,以視需要授與額外資源。 例如:
- 高用量應用程式可以將 numberOfWorkers 設定為 3,讓該應用程式具有更多的處理容量。
- 低用量應用程式會將 numberOfWorkers 設定為 1。