Configurer la mise à l’échelle automatique pour les applications du Kit de développement logiciel (SDK) Durable Task dans Azure Container Apps

Lorsque vous hébergez des applications du Kit de développement logiciel (SDK) Durable Task dans Azure Container Apps, vous pouvez configurer la mise à l’échelle automatique afin que la plateforme ajuste automatiquement le nombre de réplicas en fonction de votre orchestration, activité ou charge de travail d’entité.

Dans cet article, vous allez apprendre à :

  • Définissez le nombre minimal et maximal de réplicas pour votre application conteneur.
  • Ajoutez des règles d’échelle qui répondent aux éléments de travail durables du planificateur de tâches.
  • Déployez et vérifiez un exemple de mise à l’échelle automatique à l’aide de Azure CLI développeur.

Note

La mise à l’échelle automatique est prise en charge pour les applications créées à l’aide des kits SDK Durable Task et hébergées dans Azure Container Apps. Cette fonctionnalité utilise le azure-durabletask-scheduler scaler KEDA.

Important

Configurer minReplicas pour 0 permet d'activer l'échelle à zéro, ce qui permet d’économiser les coûts en cas d’inactivité, mais introduit une latence de démarrage à froid lorsque de nouvelles tâches arrivent. Définissez minReplicas sur 1 ou plus si votre charge de travail est sensible à la latence.

Configurer l'autoscaleur

Vous pouvez définir la configuration de la mise à l’échelle automatique via le portail Azure, un modèle Bicep et le Azure CLI.

  1. Dans le portail Azure, accédez à votre application conteneur.

  2. Dans le menu de gauche, sélectionnez Application>Échelle.

  3. Définissez les valeurs minimum et maximum des réplicas pour votre révision.

    Capture d’écran de la configuration du nombre minimum et maximum de répliques du scaler dans le portail Azure.

  4. Sélectionnez Ajouter pour créer une règle d’échelle. Définissez le type sur Personnalisé et configurez les champs Planificateur de tâches durables.

    Capture d'écran de la configuration liée au planificateur de tâches durables pour le scaler dans le portail Azure.

  5. Vérifiez que la case s’authentifier avec une identité managée est cochée et choisissez l’identité liée à votre planificateur et à votre ressource de hub de tâches.

  6. Cliquez sur Enregistrer.

Champ Description Exemple
Nb min. de réplicas Nombre minimal de réplicas autorisés pour la révision de conteneur à tout moment donné. 1
Nombre maximal de répliques Nombre maximal de copies autorisées pour la révision du conteneur à un moment donné. 10
endpoint Point de terminaison du planificateur de tâches durable auquel l’outil de mise à l'échelle se connecte. https://dts-ID.centralus.durabletask.io
nombreMaximalD'élémentsDeTravailSimultanés Nombre maximal d’éléments de travail qu’une seule réplique traite simultanément. Les valeurs inférieures entraînent l’ajout de réplicas plus tôt. Commencez avec 1 pour le travail intensif sur le processeur ; augmentez-le pour les charges de travail liées aux E/S. 1
taskhubName Nom du hub de tâches connecté au planificateur. taskhub-ID
workItemType Type d’élément de travail en cours de distribution. Les options incluent Orchestration, Activity, ou Entity. Orchestration
Identité gérée Identité managée par l'utilisateur ou par le système liée à la ressource du planificateur et du hub de tâches. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

Tutoriel : Déployer une application conteneur de mise à l’échelle automatique

Mise à l’échelle automatique déjà configurée sur une application existante ? Vous pouvez ignorer cette section. Si vous souhaitez une procédure pas à pas pratique, suivez les étapes ci-dessous pour déployer le Autoscaling dans Azure Container Apps exemple à l’aide de l’interface CLI développeur Azure. L’exemple déploie une application .NET Durable Task SDK qui utilise le modèle de chaînage de fonctions et inclut un scaler KEDA préconfiguré.

Note

Bien que cet exemple utilise le Kit de développement logiciel (SDK) Durable Task .NET, la mise à l’échelle automatique est indépendante du langage.

Prerequisites

Configurer votre environnement

  1. Clonez le Azure-Samples/Durable-Task-Scheduler répertoire.

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Authentifiez-vous avec Azure à l’aide de l’interface CLI Azure développeur.

    azd auth login
    

Déployer la solution à l’aide d’Azure Developer CLI

  1. Naviguez dans l'exemple de répertoire AutoscalingInACA.

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Initialisez l’environnement CLI Azure développeur (nécessaire uniquement la première fois) :

    azd init
    
  3. Provisionnez des ressources et déployez l’application :

    azd up
    
  4. Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.

    Paramètre Description
    Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure.
    Emplacement Azure Emplacement Azure de vos ressources.
    Abonnement Azure L’abonnement Azure pour vos ressources.

    Ce processus peut prendre un certain temps. Une fois la commande azd up terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd provision. Une fois approvisionné par Azure Developer CLI, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui approvisionnent les ressources Azure sont les suivants :
      • main.parameters.json
      • main.bicep
      • Un répertoire de ressources app organisé par fonctionnalité
      • Une bibliothèque de référence core qui contient les modules Bicep utilisés par le modèle azd
    • Déploie le code à l’aide de azd deploy

    Sortie attendue

    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.   
    

Confirmer la réussite du déploiement

Dans le portail Azure, vérifiez que les orchestrations s’exécutent correctement.

  1. Copiez le nom du groupe de ressources à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez ce nom de groupe de ressources.

  3. Dans la page vue d’ensemble du groupe de ressources, cliquez sur la ressource d’application conteneur cliente.

  4. Sélectionnez Monitoring>Diffusion en continu de journaux.

  5. Vérifiez que le conteneur client journalise les tâches de chaînage de fonctions.

    Capture d’écran du flux de journal du conteneur client dans le portail Azure.

  6. Revenez à la page du groupe de ressources pour sélectionner le worker conteneur.

  7. Sélectionnez Monitoring>Diffusion en continu de journaux.

  8. Confirmez que le conteneur Worker journalise les tâches de chaînage de fonctions.

    Capture d’écran du flux de journal du conteneur worker dans le portail Azure.

Comprendre le scaler personnalisé

Cet exemple inclut un azure.yaml fichier de configuration. Lorsque vous avez exécuté azd up, vous avez déployé l’ensemble de l’exemple de solution sur Azure, y compris un scaler personnalisé pour vos applications de conteneur qui s’adapte automatiquement en fonction de la charge de travail du planificateur de tâches durables.

Scaler personnalisé :

  • Monitore le nombre d’orchestrations en attente dans le hub de tâches.
  • Met à l’échelle le nombre de réplicas de Worker en fonction de l’augmentation de la charge de travail.
  • Effectue un scale-down lorsque la charge diminue.
  • Fournit une utilisation efficace des ressources en alignant la capacité sur la demande.

Vérifier la configuration du scaler

Vérifiez que la mise à l’échelle automatique fonctionne correctement dans la solution déployée.

  1. Dans le portail Azure, accédez à votre application worker.

  2. Dans le menu de gauche, sélectionnez Application>Révisions et réplicas.

  3. Sélectionnez l’onglet Réplicas pour vérifier que votre application effectue un scale-out.

    Capture d'écran de la page Révisions et réplicas montrant les répliques mises à l'échelle dans le portail Azure.

  4. Dans le menu de gauche, sélectionnez Application>Mise à l’échelle.

  5. Sélectionnez le nom de la règle d’échelle pour afficher les paramètres du scaler.