Hosting ad alta densità in Servizio app di 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 eseguito. 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. È così possibile configurare un piano di servizio app per offrire 10 istanze e impostare un'app in modo che usi solo cinque istanze.

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. Sebbene non sia 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" }
            } ]
        }]
}

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 ambienti 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:

  1. Designare un piano servizio app come piano ad alta densità e ridimensionarlo alla capacità desiderata.
  2. Impostare il flag PerSiteScaling su true nel piano di servizio app.
  3. Vengono create nuove app e assegnate al piano di servizio app con la proprietà numberOfWorkers impostata su 1.
    • L'uso di questa configurazione restituisce la densità più elevata possibile.
  4. 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.

Passaggi successivi