Implementar o dimensionamento por aplicativo para hospedagem de alta densidade

Observação

Recomendamos que você use o módulo do Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Você pode dimensionar seus aplicativos do Serviço de Aplicativo do Azure dimensionando o plano do Serviço de Aplicativo em que eles são executados. Por padrão, a propriedade perSiteScaling no nível do plano é false, e cada aplicação e slot de implantação usa todas as instâncias disponíveis do plano.

Quando perSiteScaling é true, cada aplicativo e slot de implantação pode ter seu próprio siteConfig.numberOfWorkers limite. Por exemplo, um plano pode ter uma capacidade configurada de 10 trabalhadores, enquanto um aplicativo tem um limite configurado de cinco trabalhadores. Cada slot de implantação tem seu próprio limite; configurar o aplicativo de produção não configura automaticamente seus slots.

Observação

  • O dimensionamento por aplicativo está disponível apenas para os tipos de preço Standard, Premium, Premium V2, Premium V3 e Isolado .
  • Um limite por aplicativo não reduz a capacidade dedicada configurada para o plano de App Service nem sua faturação por si só.

Mantenha esses valores distintos:

  • Capacidade configurada do plano: O valor de sku.capacity do plano.
  • Limite configurado de trabalhador do aplicativo ou do slot: O valor do recurso siteConfig.numberOfWorkers.
  • Instâncias ativas de aplicativos observadas: Uma observação em tempo de execução em um determinado momento. A contagem real não pode exceder o número de trabalhadores disponíveis do plano. A integração gradual do plano pode reduzir essa contagem abaixo do limite configurado de aplicativos ou slots.

A plataforma coloca um aplicativo em diferentes funcionários disponíveis do plano utilizando uma abordagem de melhor esforço. O posicionamento é independente da métrica.

Scenario Semântica de valor
Limite de 1 O aplicativo ou slot pode usar no máximo um funcionário disponível do plano. Escolha esse valor apenas quando a colocação de um único trabalhador for aceitável para a carga de trabalho.
Limite maior que 1 O valor limita quantos trabalhadores distintos do plano o aplicativo ou o slot pode usar. O número real de instâncias ativas pode ser menor.
Limite acima da capacidade disponível do plano Os workers disponíveis no plano limitam as instâncias reais do aplicativo ou do slot.
Planejar redução de escala O aplicativo ou slot pode rodar com menos trabalhadores do que o limite configurado após a remoção dos trabalhadores do plano.

A escalabilidade por aplicativo é uma colocação fixa e independente de métricas dentro dos trabalhadores disponíveis do plano. Não responde à demanda nem altera a capacidade do plano. Para alterar a capacidade conforme a demanda, use escalabilidade automática ou Azure Monitor autoscale.

Importante

A redundância de zona distribui instâncias do plano de App Service; não cria réplicas ocultas de aplicativos. Com o dimensionamento por aplicativo, um limite de aplicativo ou de slot de 1 permite a implantação em no máximo uma instância do plano e não deve ser tratado como uma réplica simultânea entre zonas. Limites de 2 ou mais permitem a implantação em vários workers distintos do plano, mas não oferecem uma garantia pública de que essas instâncias de aplicativo estejam distribuídas por zonas físicas. Para orientações sobre design de confiabilidade, veja Confiabilidade em Serviços de Aplicativos.

Modelo de propriedade e pré-requisitos

Use um escalão de preços suportado, uma conta que possa atualizar o plano, o app, o slot e a versão atual da ferramenta escolhida. Os exemplos usam CLI do Azure 2.89.1 e Az PowerShell 16.2.0.

Scope Propriedade do recurso Exemplo
Recurso de planejamento properties.perSiteScaling true
Planejar capacidade sku.capacity 10
Limite desejado pelo aplicativo properties.siteConfig.numberOfWorkers 5
Limite desejado do slot properties.siteConfig.numberOfWorkers 2
Resposta GET da configuração do aplicativo ou do slot properties.numberOfWorkers 5 ou 2

No CLI do Azure, opções com nomes semelhantes têm escopos diferentes: az appservice plan ... --number-of-workers define a capacidade do plano, enquanto az webapp config set ... --number-of-workers define o app ou limite de slots.

Configurar escalonamento por aplicativo

Use a aba da sua ferramenta preferida. Substitua nomes e locais provisórios antes de executar um comando ou implantar um template.

Escolha entre a etapa de criar ou a etapa de atualização para o plano. A etapa de atualização muda apenas perSiteScaling; não altera a capacidade do plano existente.

resourceGroup='<resource-group-name>'
planName='<app-service-plan-name>'
appName='<app-name>'
slotName='staging'
location='westus3'

# Create a plan with capacity 10 and per-app scaling.
az appservice plan create \
    --resource-group $resourceGroup \
    --name $planName \
    --location $location \
    --sku P1V3 \
    --number-of-workers 10 \
    --per-site-scaling

# Or enable per-app scaling on an existing plan without changing its capacity.
az appservice plan update \
    --resource-group $resourceGroup \
    --name $planName \
    --set properties.perSiteScaling=true

# Configure the production app and its staging slot independently.
az webapp config set \
    --resource-group $resourceGroup \
    --name $appName \
    --number-of-workers 5

az webapp config set \
    --resource-group $resourceGroup \
    --name $appName \
    --slot $slotName \
    --number-of-workers 2

Aqui, o plano --number-of-workers 10 é baseado na capacidade. A opção de configuração do aplicativo web com o mesmo nome é o limite desejado de aplicativos ou slots. Inspecione os valores configurados:

az appservice plan show \
    --resource-group $resourceGroup \
    --name $planName \
    --query "{planCapacity:sku.capacity, perSiteScaling:perSiteScaling}"

az webapp config show \
    --resource-group $resourceGroup \
    --name $appName \
    --query "{appWorkerLimit:numberOfWorkers}"

az webapp config show \
    --resource-group $resourceGroup \
    --name $appName \
    --slot $slotName \
    --query "{slotWorkerLimit:numberOfWorkers}"

Para obter detalhes do comando, consulte az appservice plan e az webapp config.

Verificar a configuração

Verifique cada valor configurado após uma alteração ou implantação.

Valor Exemplo esperado Onde verificar
Recurso de planejamento true Resposta do plano properties.perSiteScaling
Planejar capacidade 10 Resposta do plano sku.capacity
Limite desejado do aplicativo de produção 5 Resposta de produção config/webproperties.numberOfWorkers
Limite desejado para o slot de staging 2 Resposta do slot config/webproperties.numberOfWorkers

Esses valores são configuração, não contagens de instâncias ativas observadas. A alocação em tempo de execução permanece sujeita ao critério de melhor esforço e é limitada pelos workers disponíveis do plano. Antes de combinar escalonamento por aplicativo com redundância de zona, revise a capacidade do plano e cada limite de app ou slot em Definir redundância de zona para um plano de App Service existente.

Configure hospedagem de alta densidade para seu cenário

A escalabilidade por aplicativo está disponível tanto em regiões globais do Azure quanto em ambientes de App Service. Escolha limites de aplicativos e espaços de acordo com a capacidade de carga e requisitos de confiabilidade, em vez de aplicar um limite a cada carga de trabalho.

Para um cenário de hospedagem de alta densidade:

  1. Designe um Plano do Serviço de Aplicativo como o plano de alta densidade e dimensione-o para a capacidade desejada.

  2. Defina o sinalizador PerSiteScaling como verdadeiro no Plano do Serviço de Aplicativo.

  3. Defina o limite de numberOfWorkers de cada aplicativo e de cada slot de implantação com base em suas necessidades.

    • Um limite de 1 fornece a maior densidade, mas use-o apenas para cargas de trabalho onde a colocação em no máximo um trabalhador do plano é aceitável.
    • Use um limite de 2 ou mais quando a carga de trabalho deve ser elegível para colocação em múltiplos trabalhadores distintos do plano, sujeito à capacidade disponível do plano.
  4. Revise os limites de forma independente conforme os requisitos de carga de trabalho mudam. Por exemplo, um aplicativo de uso mais alto pode usar um limite de 3 para maior capacidade de processamento, enquanto outro aplicativo pode usar 1 quando a colocação de um único trabalhador é apropriada.