Configure o autoscaling para aplicações Durable Task SDK em Azure Container Apps

Quando aloja aplicações do Durable Task SDK no Azure Container Apps, pode configurar o autoescalonamento para que a plataforma ajuste automaticamente o número de réplicas com base na sua carga de trabalho de orquestração, atividade ou entidade.

Neste artigo, você aprenderá a:

  • Defina contagens mínimas e máximas de réplicas para a sua aplicação de contentores.
  • Adicione regras de escala que respondam aos itens de trabalho do Agendador de Tarefas Duradouras.
  • Implemente e verifique um exemplo de autoscaling usando o Azure Developer CLI.

Observação

O autoescalonamento é suportado para aplicações construídas com os SDKs de Tarefas Durables e alojadas no Azure Container Apps. Esta funcionalidade utiliza o azure-durabletask-scheduler escalonador KEDA.

Importante

Definir minReplicas para 0 ativa a escala para zero, o que poupa custos quando está inativo, mas introduz latência de arranque a frio quando chegam novos trabalhos. Define minReplicas para 1 ou mais se a tua carga de trabalho for sensível à latência.

Configurar o autoscaler

Você pode definir a configuração do autoscaler por meio do portal do Azure, um modelo Bicep e a CLI do Azure.

  1. No portal do Azure, navegue até seu aplicativo de contêiner.

  2. No menu lateral esquerdo, selecione Escala de Aplicação>.

  3. Define os valores de réplicas mínimas e réplicas máximas para a sua revisão.

     Captura de ecrã da configuração de réplicas mínimas e máximas do escalador no portal Azure.

  4. Selecione Adicionar para criar uma nova regra de escala. Defina o Tipo para Personalizado e configure os campos do Durável Agendador de Tarefas.

    Captura de ecrã da configuração relacionada com o Programador de Tarefas Duráveis para o escalonador no portal do Azure.

  5. Assegure que a caixa de seleção Autenticar com Identidade Gerida está selecionada e escolha a identidade ligada ao seu agendador e ao recurso do Task Hub.

  6. Selecione Guardar.

Campo Descrição Exemplo
Réplicas mínimas Número mínimo de réplicas permitido para a revisão do contêiner a qualquer momento. 1
Máximo de réplicas Número máximo de réplicas permitido para a revisão do contêiner a qualquer momento. 10
ponto final O endpoint do Agendador de Tarefa Durável ao qual o escalador se conecta. https://dts-ID.centralus.durabletask.io
contagemMaximaDeItensDeTrabalhoConcorrentes Número máximo de itens de trabalho que uma única réplica processa simultaneamente. Valores mais baixos fazem com que o escalador adicione réplicas mais cedo. Comece com 1 para trabalho intensivo em CPU; aumente para cargas de trabalho intensivas em I/O. 1
taskhubName O nome do hub de tarefas conectado ao agendador. taskhub-ID
tipoDeTrabalho O tipo de item de trabalho que está sendo despachado. As opções incluem Orchestration, Activityou Entity. Orchestration
Identidade gerenciada A identidade gerida atribuída pelo utilizador ou pelo sistema associada ao escalonador e ao recurso do hub de tarefas. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

Tutorial: Implementar uma aplicação de contentores com autoescalabilidade

Já está configurado o autoscaling numa aplicação existente? Pode saltar esta secção. Se quiser um guia prático, siga os passos abaixo para fazer o provisionamento da amostra do Autoscaling em Azure Container Apps usando Azure Developer CLI. O exemplo implementa uma aplicação .NET Durable Task SDK que utiliza o padrão de encadeamento de funções e inclui um escalador KEDA pré-configurado.

Observação

Embora esta amostra utilize o Durable Task .NET SDK, o autoscaling é independente da linguagem.

Pré-requisitos

Configurar o ambiente

  1. Clona o diretório Azure-Samples/Durable-Task-Scheduler.

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Autenticar com o Azure usando a CLI do Azure Developer.

    azd auth login
    

Implementar a solução usando o Azure Developer CLI

  1. Navegue até o AutoscalingInACA diretório de exemplo.

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Inicializar o ambiente CLI do Azure Developer (só necessário da primeira vez):

    azd init
    
  3. Provisione recursos e implante o aplicativo:

    azd up
    
  4. Quando solicitado no terminal, forneça os seguintes parâmetros.

    Parâmetro Descrição
    Nome do ambiente Prefixo para o grupo de recursos criado para armazenar todos os recursos do Azure.
    Localização do Azure A localização do Azure para os seus recursos.
    Subscrição do Azure A subscrição do Azure para os teus recursos.

    Este processo pode levar algum tempo para ser concluído. À medida que o azd up comando é concluído, a saída da CLI exibe dois links do portal do Azure para monitorar o progresso da implantação. A saída também demonstra como azd up:

    • Cria e configura todos os recursos necessários do Azure através dos arquivos Bicep fornecidos no diretório ./infra usando azd provision. Depois de provisionado pela CLI do Desenvolvedor do Azure, você pode acessar esses recursos por meio do portal do Azure. Os ficheiros que fornecem os recursos do Azure incluem:
      • main.parameters.json
      • main.bicep
      • Um app diretório de recursos organizado por funcionalidade
      • Uma biblioteca de referência core que contém os módulos Bicep utilizados pelo modelo azd
    • Implanta o código usando azd deploy

    Resultados esperados

    Packaging services (azd package)
    
    (✓) Done: Packaging service client
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    (✓) Done: Packaging service worker
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time.
    
    Subscription: SUBSCRIPTION_NAME (SUBSCRIPTION_ID)
    Location: West US 2
    
     You can view detailed progress in the Azure portal:
     https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%SUBSCRIPTION_ID%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2FCONTAINER_APP_ENVIRONMENT
    
     (✓) Done: Resource group: GENERATED_RESOURCE_GROUP (1.385s)
     (✓) Done: Virtual Network: VNET_ID (862ms)
     (✓) Done: Container Apps Environment: GENERATED_CONTAINER_APP_ENVIRONMENT (54.125s)
     (✓) Done: Container Registry: GENERATED_REGISTRY (1m27.747s)
     (✓) Done: Container App: SAMPLE_CLIENT_APP (21.39s)
     (✓) Done: Container App: SAMPLE_WORKER_APP (24.136s)   
    
    Deploying services (azd deploy)
    
     (✓) Done: Deploying service client
     - Endpoint: https://SAMPLE_CLIENT_APP.westus2.azurecontainerapps.io/
    
     (✓) Done: Deploying service worker
     - Endpoint: https://SAMPLE_WORKER_APP.westus2.azurecontainerapps.io/
    
    
    SUCCESS: Your up workflow to provision and deploy to Azure completed in 10 minutes 34 seconds.   
    

Confirmar a implantação bem-sucedida

No portal do Azure, verifique se as orquestrações estão sendo executadas com êxito.

  1. Copie o nome do grupo de recursos da saída do terminal.

  2. Entre no portal do Azure e procure esse nome de grupo de recursos.

  3. Na página de visão geral do grupo de recursos, clique no recurso do aplicativo de contêiner cliente.

  4. Selecione Monitorização>do fluxo de log.

  5. Confirme se o contêiner do cliente está registrando as tarefas de encadeamento de funções.

    Captura de ecrã do fluxo de registo do contentor cliente no portal Azure.

  6. Navegue de volta para a página do grupo de recursos para selecionar o worker contêiner.

  7. Selecione Monitorização>do fluxo de log.

  8. Confirme se o contêiner de trabalho está registrando as tarefas de encadeamento de funções.

    Captura de ecrã do fluxo de registo do contentor de trabalho no portal do Azure.

Compreender o escalonador personalizado

Este exemplo inclui um arquivo de azure.yaml configuração. Ao executar azd up, implementou toda a solução de exemplo no Azure, incluindo um dimensionador personalizado para os seus aplicativos de contêiner que escala automaticamente com base na carga de trabalho do Agendador de Tarefas Duráveis.

O escalador personalizado:

  • Monitora o número de orquestrações pendentes no hub de tarefas.
  • Ajusta o número de réplicas de trabalhadores à medida que aumenta a carga de trabalho.
  • Reduz novamente quando a carga diminui.
  • Fornece utilização eficiente de recursos ao adequar a capacidade à demanda.

Verifique a configuração do escalador

Verifique se o dimensionamento automático está funcionando corretamente na solução implantada.

  1. No portal do Azure, navegue até à sua aplicação de trabalho.

  2. No menu lateral esquerdo, selecione Aplicação>Revisões e réplicas.

  3. Selecione a aba Réplicas para verificar se a sua aplicação está a escalar horizontalmente.

    Captura de ecrã da página de Revisões e réplicas, mostrando réplicas escaladas no Azure Portal.

  4. No menu lateral esquerdo, selecione Escala de Aplicação>.

  5. Selecione o nome da regra de escala para ver as definições do escalador.