Configuración del escalado automático para aplicaciones del SDK de Durable Task en Azure Container Apps

Al hospedar aplicaciones del SDK de Durable Task en Azure Container Apps, puede configurar el escalado automático para que la plataforma ajuste automáticamente el número de réplicas en función de la carga de trabajo de orquestación, actividad o entidad.

En este artículo aprenderá a:

  • Establezca recuentos mínimos y máximos de réplicas para la aplicación de contenedores.
  • Agregue reglas de escalado que respondan a los elementos de trabajo del Programador de tareas durables.
  • Implemente y compruebe un ejemplo de escalado automático mediante Azure CLI para desarrolladores.

Nota:

El escalado automático es compatible con las aplicaciones creadas mediante los SDK de Durable Task y hospedados en Azure Container Apps. Esta característica usa el azure-durabletask-scheduler escalador KEDA.

Importante

Establecer minReplicas en 0 permite escalar a cero, lo que ahorra costos cuando está inactivo, pero introduce latencia de arranque en frío cuando llegan nuevos elementos de trabajo. Establézcalo minReplicas en 1 o superior si su carga de trabajo es sensible a la latencia.

Configuración del escalador automático

Puede establecer la configuración del escalador automático mediante el portal de Azure, una plantilla de Bicep y el CLI de Azure.

  1. En Azure Portal, vaya a la aplicación contenedora.

  2. En el menú del lado izquierdo, seleccione Escala de aplicaciones>.

  3. Establezca los valores Réplicas mínimas y Réplicas máximas para la revisión.

    Captura de pantalla de la configuración mínima y máxima de réplica del escalador en Azure Portal.

  4. Seleccione Agregar para crear una nueva regla de escalado. Establezca el tipo en Personalizado y configure los campos Programador de tareas durables.

    Captura de pantalla de la configuración relacionada con el Programador de Tareas Duraderas para el escalador en el portal de Azure.

  5. Asegúrese de que la casilla Autenticar con una identidad administrada está activada y elija la identidad vinculada al programador y al recurso del centro de tareas.

  6. Haga clic en Guardar.

Campo Descripción Ejemplo
Réplicas mínimas Número mínimo de réplicas permitidas para la revisión del contenedor en un momento dado. 1
Número máximo de réplicas Número máximo de réplicas permitidas para la revisión del contenedor en un momento dado. 10
endpoint Punto de conexión del Programador de tareas durable al que se conecta el escalador. https://dts-ID.centralus.durabletask.io
NúmeroMáximoDeElementosDeTrabajoSimultáneos Número máximo de elementos de trabajo que una sola réplica procesa simultáneamente. Los valores menores hacen que el escalador agregue réplicas con mayor celeridad. Comience con 1 para el trabajo intensivo de CPU; aumente para las cargas de trabajo basadas en E/S. 1
taskhubName Nombre del centro de tareas conectado al programador. taskhub-ID
tipoDeElementoDeTrabajo Tipo de elemento de trabajo que se está enviando. Las opciones incluyen Orchestration, Activity o Entity. Orchestration
Identidad administrada La identidad administrada asignada por el usuario o por el sistema, vinculada al programador y al recurso del centro de tareas. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

Tutorial: Implementación de una aplicación de contenedor de escalado automático

¿Ya se ha configurado el escalado automático en una aplicación existente? Puede omitir esta sección. Si desea un tutorial práctico, siga los pasos siguientes para implementar el Autoscaling en Azure Container Apps ejemplo mediante la CLI para desarrolladores de Azure. El ejemplo implementa una aplicación de SDK de Durable Task .NET que usa el patrón de encadenamiento de funciones e incluye un escalador KEDA preconfigurado.

Nota:

Aunque en este ejemplo se usa el SDK de .NET de Durable Task, el escalado automático es independiente del lenguaje.

Prerrequisitos

Configuración del entorno

  1. Clona el directorio Azure-Samples/Durable-Task-Scheduler.

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Autentíquese con Azure mediante la CLI para desarrolladores de Azure.

    azd auth login
    

Implementación de la solución mediante la CLI para desarrolladores de Azure

  1. Vaya al directorio de ejemplo AutoscalingInACA.

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Inicialice el entorno de la CLI para desarrolladores de Azure (solo es necesario la primera vez):

    azd init
    
  3. Aprovisione recursos e implemente la aplicación:

    azd up
    
  4. Cuando se le solicite en el terminal, proporcione los parámetros siguientes.

    Parámetro Descripción
    Nombre del entorno Prefijo del grupo de recursos creado para contener todos los recursos de Azure.
    Ubicación de Azure La ubicación de Azure para tus recursos.
    Suscripción a Azure La suscripción de Azure para tus recursos.

    Este proceso puede tardar un tiempo en finalizar. A medida que se completa el comando azd up, la salida de la CLI muestra dos vínculos del portal de Azure para supervisar el progreso de la implementación. La salida también muestra cómo azd up hace lo siguiente:

    • Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio ./infra mediante azd provision. Una vez aprovisionado por Azure CLI para desarrolladores, puede acceder a estos recursos a través del portal de Azure. Los archivos que aprovisionan los recursos de Azure incluyen:
      • main.parameters.json
      • main.bicep
      • Un directorio de recursos de app organizado por funcionalidad
      • Biblioteca de referencia de core que contiene los módulos de Bicep usados por la plantilla de azd
    • Implementa el código mediante azd deploy

    Salida prevista

    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 la implementación exitosa

En Azure Portal, compruebe que las orquestaciones se ejecutan correctamente.

  1. Copie el nombre del grupo de recursos de la salida del terminal.

  2. Inicie sesión en el portal Azure y busque ese nombre del grupo de recursos.

  3. En la página de información general del grupo de recursos, haga clic en el recurso de aplicación contenedora cliente.

  4. Seleccione Supervisión>flujo de logs.

  5. Confirme que el contenedor del cliente registra las tareas de encadenamiento de funciones.

    Captura de pantalla del flujo de registro del contenedor de cliente en Azure Portal.

  6. Vuelva a la página del grupo de recursos para seleccionar el worker contenedor.

  7. Seleccione Supervisión>flujo de logs.

  8. Confirme que el contenedor del trabajo registra las tareas de encadenamiento de funciones.

    Captura de pantalla del flujo de registro del contenedor de trabajo en Azure Portal.

Comprender el escalador personalizado

Este ejemplo incluye un azure.yaml archivo de configuración. Cuando ejecutó azd up, implementó toda la solución de ejemplo en Azure, que incluye un escalador personalizado para sus aplicaciones de contenedor que se ajusta automáticamente según la carga de trabajo del Planificador de Tareas Durable.

Escalador personalizado:

  • Supervisa el número de orquestaciones pendientes en la central de tareas.
  • Escala el número de réplicas de trabajo al aumentar la carga de trabajo.
  • Se reduce verticalmente cuando se reduce la carga.
  • Proporciona un uso eficaz de los recursos mediante la coincidencia de la capacidad a la demanda.

Comprobación de la configuración del escalador

Compruebe que el escalado automático funciona correctamente en la solución implementada.

  1. En el portal de Azure, vaya a la aplicación de trabajo.

  2. En el menú de la izquierda, seleccione Aplicación>Revisiones y réplicas.

  3. Seleccione la pestaña Réplicas para comprobar que la aplicación está escalando horizontalmente.

    Captura de pantalla de la página Revisiones y réplicas en la que se muestran las réplicas escaladas en el portal de Azure.

  4. En el menú del lado izquierdo, seleccione Escala de aplicaciones>.

  5. Seleccione el nombre de la regla de escalado para ver la configuración del escalador.