Hospedagem de alta densidade no Serviço de Aplicativo do Azure usando o dimensionamento por aplicativo
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Ao usar o Serviço de Aplicativo, você pode dimensionar seus aplicativos dimensionando o plano do Serviço de Aplicativo em que eles são executados. Quando vários aplicativos estão sendo executados no mesmo plano do Serviço de Aplicativo, cada instância dimensionada executa todos os aplicativos do plano.
O dimensionamento por aplicativo pode ser habilitado no nível do plano do Serviço de Aplicativo para permitir o dimensionamento de um aplicativo independentemente do plano do Serviço de Aplicativo que o hospeda. Dessa forma, um plano do Serviço de Aplicativo pode ser dimensionado para 10 instâncias, mas um aplicativo pode ser configurado para usar apenas cinco.
Nota
O dimensionamento por aplicativo está disponível apenas para os níveis de preços Standard, Premium, Premium V2, Premium V3 e Isolado .
Os aplicativos são alocados ao plano disponível do Serviço de Aplicativo usando uma abordagem de melhor esforço para uma distribuição uniforme entre instâncias. Embora uma distribuição uniforme não seja garantida, a plataforma garantirá que duas instâncias do mesmo aplicativo não sejam hospedadas na mesma instância do plano do Serviço de Aplicativo.
A plataforma não depende de métricas para decidir sobre a alocação de trabalhadores. Os aplicativos são rebalanceados somente quando as instâncias são adicionadas ou removidas do plano do Serviço de Aplicativo.
Dimensionamento por aplicativo usando o PowerShell
Crie um plano com dimensionamento por aplicativo passando o -PerSiteScaling $true
parâmetro para o New-AzAppServicePlan
cmdlet.
New-AzAppServicePlan -ResourceGroupName $ResourceGroup -Name $AppServicePlan `
-Location $Location `
-Tier Premium -WorkerSize Small `
-NumberofWorkers 5 -PerSiteScaling $true
Habilite o dimensionamento por aplicativo com um Plano do Serviço de Aplicativo existente passando o -PerSiteScaling $true
parâmetro para o Set-AzAppServicePlan
cmdlet.
# Enable per-app scaling for the App Service Plan using the "PerSiteScaling" parameter.
Set-AzAppServicePlan -ResourceGroupName $ResourceGroup `
-Name $AppServicePlan -PerSiteScaling $true
No nível do aplicativo, configure o número de instâncias que o aplicativo pode usar no plano do Serviço de Aplicativo.
No exemplo abaixo, o aplicativo é limitado a duas instâncias, independentemente de quantas instâncias o plano de serviço de aplicativo subjacente se expande.
# 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
é diferente de $newapp.MaxNumberOfWorkers
. O dimensionamento por aplicativo é usado $newapp.SiteConfig.NumberOfWorkers
para determinar as características de escala do aplicativo.
Dimensionamento por aplicativo usando o Azure Resource Manager
O seguinte modelo do Azure Resource Manager cria:
- Um plano do Serviço de Aplicativo dimensionado para 10 instâncias
- Um aplicativo configurado para ser dimensionado para um máximo de cinco instâncias.
O plano do Serviço de Aplicativo está definindo a propriedade PerSiteScaling como true "perSiteScaling": true
. O aplicativo está definindo o número de trabalhadores a serem usados como 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" }
} ]
}]
}
Configuração recomendada para hospedagem de alta densidade
O dimensionamento por aplicativo é um recurso habilitado em regiões globais do Azure e Ambientes do Serviço de Aplicativo. No entanto, a estratégia recomendada é usar os Ambientes do Serviço de Aplicativo para aproveitar seus recursos avançados e a maior capacidade do plano do Serviço de Aplicativo.
Siga estas etapas para configurar a hospedagem de alta densidade para seus aplicativos:
- Designe um plano do Serviço de Aplicativo como o plano de alta densidade e dimensione-o para a capacidade desejada.
- Defina o
PerSiteScaling
sinalizador como true no plano do Serviço de Aplicativo. - Novos aplicativos são criados e atribuídos a esse plano do Serviço de Aplicativo com a propriedade numberOfWorkers definida como 1.
- Usando essa configuração, obtém-se a maior densidade possível.
- O número de trabalhadores pode ser configurado independentemente por aplicativo para conceder recursos adicionais, conforme necessário. Por exemplo:
- Um aplicativo de alto uso pode definir numberOfWorkers como 3 para ter mais capacidade de processamento para esse aplicativo.
- Os aplicativos de baixo uso definiriam numberOfWorkers como 1.