Configurar o dimensionamento automático para aplicativos do SDK Durable Task no Aplicativos de Contêiner do Azure

Ao hospedar aplicativos do SDK de Tarefas Duráveis no Aplicativos de Contêiner do Azure, você pode configurar o dimensionamento automático 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á como:

  • Defina números mínimos e máximos de réplica para seu aplicativo contêiner.
  • Adicione regras de escala que respondem aos itens de trabalho do Agendador de Tarefas Duráveis.
  • Implante e verifique um exemplo de autoescalonamento usando Azure Developer CLI.

Observação

Há suporte para dimensionamento automático para aplicativos criados usando os SDKs de Tarefa Durável e hospedados nos Aplicativos de Contêiner do Azure. Esse recurso usa o azure-durabletask-scheduler dimensionador KEDA.

Importante

Configurar minReplicas para 0 permite o escalonamento para zero, o que economiza custos quando está ocioso, mas introduz latência de início frio quando novas tarefas chegam. Defina minReplicas como 1 ou superior se sua carga de trabalho for sensível à latência.

Configurar o dimensionador automático

Você pode definir a configuração do dimensionador automático 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 do lado esquerdo, selecione Aplicativo>Escala.

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

    Captura de tela da configuração de réplica mínima e máxima do dimensionador no portal do Azure.

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

    Captura de tela da configuração relacionada ao Agendador de Tarefas Duráveis para o escalonador no portal do Azure.

  5. Verifique se a caixa de seleção Autenticar com uma Identidade Gerenciada está selecionada e escolha a identidade vinculada ao recurso do agendador e do hub de tarefas.

  6. Clique em Salvar.

Campo Descrição Exemplo
Número mínimo de réplicas Número mínimo de réplicas permitidas para a revisão de contêiner a qualquer momento. 1
Número máximo de réplicas Número máximo de réplicas permitidas para a revisão de contêiner a qualquer momento. 10
ponto de extremidade O ponto de extremidade do Agendador de Tarefas Duráveis ao qual o dimensionador se conecta. https://dts-ID.centralus.durabletask.io
maxConcurrentWorkItemsCount Número máximo de itens de trabalho que uma única réplica processa simultaneamente. Valores mais baixos fazem com que o dimensionador adicione réplicas mais cedo. Comece com 1 para trabalho intensivo de CPU; aumente para cargas de trabalho com maior uso de E/S. 1
taskhubName O nome do hub de tarefas conectado ao agendador. taskhub-ID
workItemType O tipo de item de trabalho que está sendo despachado. As opções incluem Orchestration, Activity, ou Entity. Orchestration
Identidade gerenciada A identidade gerenciada atribuída pelo usuário ou atribuída pelo sistema vinculada ao agendador e ao recurso do hub de tarefas. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

Tutorial: Implantar um aplicativo de contêiner de dimensionamento automático

Já configurou o dimensionamento automático em um aplicativo existente? Você pode ignorar esta seção. Se você quiser um passo a passo prático, siga as etapas abaixo para implantar o exemplo de Autoscaling em Aplicativos de Contêiner do Azure usando Azure Developer CLI. O exemplo implanta um aplicativo SDK de Tarefa Durável .NET que usa o padrão de encadeamento de funções e inclui um dimensionador KEDA pré-configurado.

Observação

Embora este exemplo use o SDK do Durable Task .NET, o dimensionamento automático é agnóstico em relação à linguagem.

Pré-requisitos

Configure seu ambiente

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

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Autentique no Azure usando a Azure Developer CLI.

    azd auth login
    

Implantar a solução usando Azure Developer CLI

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

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Inicialize o ambiente da CLI do Desenvolvedor do Azure (necessário apenas na 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 Azure.
    Localização do Azure A localização do Azure para seus recursos.
    Assinatura do Azure A assinatura do Azure para seus recursos.

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

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

    Saída esperada

    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 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 Azure e pesquise o nome do grupo de recursos.

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

  4. Selecione Monitoramento>Fluxo de Log.

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

    Captura de tela do fluxo de log do contêiner do cliente no portal do Azure.

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

  7. Selecione Monitoramento>Fluxo de Log.

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

    Captura de tela do fluxo de log do contêiner de trabalho no portal do Azure.

Entender o dimensionador personalizado

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

O dimensionador personalizado:

  • Monitora o número de orquestrações pendentes no hub de tarefas.
  • Dimensiona o número de réplicas de trabalho com maior carga de trabalho.
  • Reduz verticalmente quando a carga diminui.
  • Fornece utilização eficiente de recursos, ajustando a capacidade à demanda.

Verificar a configuração do dimensionador

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

  1. No portal do Azure, navegue até seu aplicativo de trabalho.

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

  3. Selecione a guia Réplicas para verificar se o aplicativo está sendo dimensionado.

    Screenshot da página Revisões e réplicas mostrando réplicas dimensionadas no portal Azure.

  4. No menu do lado esquerdo, selecione Aplicativo>Escala.

  5. Selecione o nome da regra de escala para exibir as configurações do dimensionador.