Hosting ad alta densità nel servizio app Azure usando il ridimensionamento per app
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Quando si usa servizio app, è possibile ridimensionare le app ridimensionando il piano di servizio app in cui vengono eseguite. Quando più app vengono eseguite nello stesso piano di servizio app, ogni istanza con scalabilità orizzontale esegue tutte le app nel piano.
Il ridimensionamento per app può essere abilitato a livello del piano di servizio app per consentire di dimensionare un'app indipendentemente dal piano di servizio app in cui è ospitata. In questo modo, un piano di servizio app può essere dimensionato per 10 istanze, ma un'app può essere impostata in modo da usarne solo cinque.
Nota
Il ridimensionamento per app è disponibile solo per i piani tariffari Standard, Premium, Premium V2, Premium V3 e Isolato .
Le app vengono allocate nel piano di servizio app disponibile usando un approccio ottimale per una distribuzione uniforme tra le istanze. Anche se non è garantita una distribuzione uniforme, la piattaforma assicurerà che due istanze della stessa app non saranno ospitate nella stessa istanza del piano di servizio app.
La piattaforma non si basa sulle metriche per decidere l'allocazione del ruolo di lavoro. Le applicazioni vengono ribilanciate solo quando le istanze vengono aggiunte o rimosse dal piano di servizio app.
Scalabilità per app tramite PowerShell
Creare un piano con scalabilità per applicazione, passando il parametro -PerSiteScaling $true
al cmdlet New-AzAppServicePlan
.
New-AzAppServicePlan -ResourceGroupName $ResourceGroup -Name $AppServicePlan `
-Location $Location `
-Tier Premium -WorkerSize Small `
-NumberofWorkers 5 -PerSiteScaling $true
Abilitare la scalabilità con un piano di Servizio app di Azure, passando il parametro -PerSiteScaling $true
al cmdlet Set-AzAppServicePlan
.
# Enable per-app scaling for the App Service Plan using the "PerSiteScaling" parameter.
Set-AzAppServicePlan -ResourceGroupName $ResourceGroup `
-Name $AppServicePlan -PerSiteScaling $true
A livello di app, configurare il numero di istanze che l'app può usare nel piano di servizio app.
Nell'esempio seguente l'app è limitata a due istanze indipendentemente dall'aggiunta del numero di istanze al piano di servizio app sottostante.
# 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
Importante
$newapp.SiteConfig.NumberOfWorkers
è diverso da $newapp.MaxNumberOfWorkers
. La scalabilità per app usa $newapp.SiteConfig.NumberOfWorkers
per determinare le caratteristiche di scalabilità dell'app.
Scalabilità per app tramite Azure Resource Manager
Il modello di Azure Resource Manager seguente crea:
- un piano di servizio app a cui sono aggiunte 10 istanze
- un'app che è configurata per l'aggiunta di un massimo di cinque istanze.
Il piano di servizio app imposta la proprietà PerSiteScaling su true "perSiteScaling": true
. L'app imposta il numero di ruoli di lavoro da usare su 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" }
} ]
}]
}
Configurazione consigliata per l'hosting ad alta densità
La scalabilità per app è una funzionalità abilitata sia nelle aree di Azure globali che negli ambienti del servizio app. Tuttavia, la strategia consigliata consiste nell'usare ambiente del servizio app per sfruttare le funzionalità avanzate e la capacità del piano di servizio app più grande.
Per configurare l'hosting ad alta densità per le app, seguire questa procedura:
- Designare un piano di servizio app come piano ad alta densità e aumentarne il numero fino alla capacità desiderata.
- Impostare il flag
PerSiteScaling
su true nel piano di servizio app. - Vengono create nuove app e assegnate al piano di servizio app con la proprietà numberOfWorkers impostata su 1.
- L'uso di questa configurazione produce la massima densità possibile.
- Il numero di ruoli di lavoro può essere configurato in modo indipendente per ogni app, per concedere risorse aggiuntive in base alle esigenze. Ad esempio:
- Per un'app a utilizzo elevato è possibile impostare numberOfWorkers su 3 per avere una maggiore capacità di elaborazione per l'app.
- Per le app a basso utilizzo impostare numberOfWorkers su 1.