Implementar dimensionamento por aplicativo para hospedagem de alta densidade

Observação

Recomendamos que utilize o módulo Azure Az PowerShell para interagir com o Azure. Para começar, veja Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, veja Migrate Azure PowerShell from AzureRM to 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 predefinição, a propriedade do plano ao nível de perSiteScaling é false, e cada aplicação e slot de implementação utiliza todas as instâncias disponíveis no plano.

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

Observação

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

Mantenha estes valores distintos:

  • Capacidade configurada do plano: O valor do sku.capacity plano.
  • Limite de trabalhadores configurados para aplicação ou slot: O valor do siteConfig.numberOfWorkers recurso.
  • Instâncias ativas de aplicações observadas: Uma observação em tempo de execução num determinado momento. A contagem real não pode exceder o número de trabalhadores disponíveis no plano. O escalonamento do plano pode reduzir esta contagem abaixo do limite configurado de aplicação ou slot.

A plataforma coloca uma aplicação em distintos trabalhadores de planos disponíveis, utilizando uma abordagem de melhor esforço. O posicionamento não depende da métrica.

Scenario Semântica de valores
Limite de 1 A aplicação ou slot pode usar no máximo um trabalhador de plano disponível. Escolha este valor apenas quando a colocação de um único trabalhador for aceitável para a carga de trabalho.
Limite superior a 1 O valor limita o número de trabalhadores distintos do plano que a aplicação ou slot pode usar. O número real de instâncias ativas pode ser inferior.
Limite acima da capacidade disponível do plano Os workers do plano disponível impõem um limite ao número efetivo de instâncias da aplicação ou dos slots de implementação.
Escalonamento do plano A aplicação ou slot pode funcionar com menos trabalhadores do que o seu limite configurado depois de os trabalhadores do plano serem removidos.

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

Importante

A redundância por zona distribui as instâncias do plano do App Service; não cria réplicas ocultas de apps. Com a escalabilidade por aplicação, um limite por aplicação ou por slot de 1 permite a colocação em, no máximo, uma única instância do plano e não deve ser tratado como uma réplica simultânea entre zonas. Limites de 2 ou superiores permitem a distribuição por vários workeres distintos do plano, mas não oferecem uma garantia pública de que essas instâncias da aplicação se distribuam por zonas físicas. Para orientações sobre design de fiabilidade, consulte Fiabilidade em Serviços de Aplicações.

Modelo de propriedade e pré-requisitos

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

Scope Propriedade do recurso Exemplo
Funcionalidade do plano properties.perSiteScaling true
Planeamento de capacidade sku.capacity 10
Limite desejado pela aplicação properties.siteConfig.numberOfWorkers 5
Limite desejado de slots properties.siteConfig.numberOfWorkers 2
Resposta GET da configuração da aplicação ou do slot properties.numberOfWorkers 5 ou 2

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

Configurar escalabilidade por aplicação

Utiliza o separador da ferramenta que preferires. Substitua os nomes temporários e as localizações antes de executar um comando ou implementar um modelo.

Escolha entre a etapa de criar ou a etapa de atualização para o plano. O passo de atualização altera 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 corresponde à capacidade. A opção de configuração da aplicação web com o mesmo nome é a aplicação desejada ou limite de slots. Inspecionar 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 sobre os comandos, consulte az appservice plan e az webapp config.

Verifique a configuração

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

Valor Exemplo esperado Onde verificar
Funcionalidade do plano true Resposta do plano properties.perSiteScaling
Planeamento de capacidade 10 Resposta do plano sku.capacity
Limite desejado da aplicação de produção 5 Produção config/web resposta properties.numberOfWorkers
Limite desejado do slot de estágio 2 Resposta do slot config/webproperties.numberOfWorkers

Estes valores são configuração, não contagens de instâncias ativas observadas. A colocação em tempo de execução continua a ser o melhor esforço e é limitada pelos trabalhadores disponíveis do plano. Antes de combinar escalabilidade por aplicação com redundância de zona, reveja a capacidade do plano e cada limite de aplicação ou slot em Definir redundância de zona para um plano de App Service existente.

Configure alojamento de alta densidade para o seu cenário

A escalabilidade por aplicação está disponível tanto em regiões globais do Azure como em Ambientes de Serviços de Aplicação. Escolha os limites da aplicação e do slot de acordo com a capacidade e os requisitos de fiabilidade de cada carga de trabalho, em vez de aplicar um único limite a todas as cargas de trabalho.

Para um cenário de alojamento de alta densidade:

  1. Designe um plano do Serviço de Aplicações como o plano de alta densidade e expanda-o para a capacidade desejada.

  2. Defina o flag PerSiteScaling como verdadeiro no plano App Service.

  3. Defina o limite de cada aplicação e de cada ranhura de implementação numberOfWorkers com base nas suas necessidades.

    • Um limite de 1 proporciona a maior densidade, mas utilize-o apenas para cargas de trabalho onde a colocação em no máximo um trabalhador do plano é aceitável.
    • Utilize um limite de 2 ou superior quando a carga de trabalho deva ser elegível para alocação em vários trabalhadores de plano distintos, em função da capacidade disponível do plano.
  4. Revê os limites de forma independente à medida que os requisitos de carga de trabalho mudam. Por exemplo, uma aplicação de maior utilização pode usar um limite de 3 para maior capacidade de processamento, enquanto outra aplicação pode usar 1 quando a colocação de um único trabalhador é apropriada.