Automatische schaalaanpassing configureren voor Durable Task SDK-apps in Azure Container Apps

Wanneer u Durable Task SDK-apps in Azure Container Apps host, kunt u automatisch schalen configureren, zodat het platform automatisch het aantal replica's aanpast op basis van uw indeling, activiteit of entiteitsworkload.

In dit artikel leert u het volgende:

  • Stel minimum- en maximumaantal replica's in voor uw container-app.
  • Voeg schaalregels toe die reageren op Durable Task Scheduler-werkitems.
  • Implementeer en verifieer een voorbeeld van automatische schaalaanpassing met behulp van Azure Developer CLI.

Opmerking

Automatisch schalen wordt ondersteund voor apps die zijn gebouwd met behulp van de Durable Task SDK's en gehost in Azure Container Apps. Deze functie maakt gebruik van de azure-durabletask-scheduler KEDA-schaalfunctie.

Important

Instellen van minReplicas naar 0 maakt schalen naar nul mogelijk, wat kosten bespaart bij inactiviteit, maar koude-startlatentie kan optreden zodra nieuwe werkitems binnenkomen. Ingesteld minReplicas op 1 of hoger als uw workload latentiegevoelig is.

De automatische schaalaanpassing configureren

U kunt de configuratie van automatische schaalaanpassing instellen via de Azure-portal, een Bicep-sjabloon en de Azure CLI.

  1. Navigeer in Azure Portal naar uw container-app.

  2. Selecteer Toepassingsschaal> in het menu aan de linkerkant.

  3. Stel de minimumreplica's en maximumreplica's in voor uw revisie.

    Schermopname van de schaalconfiguratie voor het minimale en maximale aantal replica's in de Azure Portal.

  4. Selecteer Toevoegen om een nieuwe schaalregel te maken. Stel het type in op Aangepast en configureer de velden Durable Task Scheduler.

    Schermopname van de configuratie met betrekking tot Durable Task Scheduler voor de scaler in de Azure portal.

  5. Zorg ervoor dat het selectievakje Verifiëren met een beheerde identiteit is ingeschakeld en kies de identiteit die is gekoppeld aan uw scheduler en taakhubresource.

  6. Selecteer Opslaan.

Veld Beschrijving Voorbeeld
Minimum aantal replicas Minimaal aantal replica's dat op elk gewenst moment is toegestaan voor de containerrevisie. 1
Maximum aantal replica's Het maximum aantal replica's dat op elk gewenst moment is toegestaan voor de containerrevisie. 10
endpoint Het Durable Task Scheduler-eindpunt waarmee de scaler verbinding maakt. https://dts-ID.centralus.durabletask.io
maxConcurrentWorkItemsCount Maximum aantal werkitems dat een enkele replica gelijktijdig verwerkt. Lagere waarden zorgen ervoor dat de schaaltool eerder replica's toevoegt. Begin met 1 voor CPU-intensief werk; verhoog voor I/O-gebonden workloads. 1
taskhubName De naam van de taakhub die is verbonden met de planner. taskhub-ID
werkitemtype Het type werkitem dat wordt verzonden. Opties zijn onder andere Orchestration, Activityof Entity. Orchestration
Beheerde identiteit De door de gebruiker toegewezen of door het systeem toegewezen beheerde identiteit die is gekoppeld aan de scheduler- en task hub-resource. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

Zelfstudie: Een container-app voor automatisch schalen inzetten

Hebt u automatische schaalaanpassing al geconfigureerd voor een bestaande app? U kunt deze sectie overslaan. Als u een praktische stapsgewijze instructie wilt, volg dan de onderstaande stappen om autoscaling in het voorbeeld Azure Container Apps met Azure Developer CLI te implementeren. In het voorbeeld wordt een .NET Durable Task SDK-app geïmplementeerd die gebruikmaakt van het patroon voor functiekoppeling en een vooraf geconfigureerde KEDA-schaalfunctie bevat.

Opmerking

Hoewel in dit voorbeeld de Durable Task .NET SDK wordt gebruikt, is automatisch schalen taalneutraal.

Vereiste voorwaarden

Uw omgeving instellen

  1. Kloon de map Azure-Samples/Durable-Task-Scheduler.

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Verifieer met Azure met behulp van de Azure Developer CLI.

    azd auth login
    

De oplossing implementeren met behulp van Azure Developer CLI

  1. Navigeer naar de AutoscalingInACA voorbeeldmap.

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Initialiseer de Azure Developer CLI-omgeving (alleen de eerste keer vereist):

    azd init
    
  3. Resources inrichten en de toepassing implementeren:

    azd up
    
  4. Geef de volgende parameters op wanneer u hierom wordt gevraagd in de terminal.

    Kenmerk Beschrijving
    Naam van de omgeving Voorvoegsel voor de resourcegroep die is gemaakt voor het opslaan van alle Azure-resources.
    Azure locatie De Azure-locatie voor uw resources.
    Azure-abonnement Het Azure-abonnement voor uw resources.

    Dit proces kan enige tijd in beslag nemen. Wanneer de azd up opdracht is voltooid, worden in de CLI-uitvoer twee koppelingen van Azure portal weergegeven om de voortgang van de implementatie te controleren. De uitvoer laat ook zien hoe azd up:

    • Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de ./infra map met behulp van azd provision. Zodra de Azure Developer CLI is ingericht, hebt u toegang tot deze resources via Azure Portal. De bestanden die de Azure-resources inrichten, zijn onder andere:
      • main.parameters.json
      • main.bicep
      • Een app resourcesmap georganiseerd op functionaliteit
      • Een core-referentiebibliotheek die Bicep-modules bevat die door de azd-sjabloon worden gebruikt
    • Hiermee wordt de code geïmplementeerd met behulp van azd deploy

    Verwachte uitvoer

    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.   
    

Geslaagde implementatie bevestigen

Controleer in de Azure Portal of de orkestraties succesvol worden uitgevoerd.

  1. Kopieer de naam van de resourcegroep uit de terminaluitvoer.

  2. Meld u aan bij Azure Portal en zoek naar de naam van die resourcegroep.

  3. Klik op de overzichtspagina van de resourcegroep op de resource van de client-app container.

  4. Selecteer Bewakingslogboekstream>.

  5. Controleer of de klantcontainer de taken voor functiecombinatie registreert.

    Schermopname van de logboekstream van de clientcontainer in Azure Portal.

  6. Ga terug naar de pagina van de resourcegroep om de worker container te selecteren.

  7. Selecteer Bewakingslogboekstream>.

  8. Controleer of de werkrolcontainer de taken van de functieketen vastgeeft.

    Schermopname van de logboekstream van de werkcontainer in Azure Portal.

Inzicht in de aangepaste schaalregelaar

Dit voorbeeld bevat een azure.yaml configuratiebestand. Toen u azd up hebt uitgevoerd, hebt u de hele voorbeeldoplossing geïmplementeerd in Azure, inclusief een aangepaste schaalfunctie voor uw container-apps die automatisch worden geschaald op basis van de workload van Durable Task Scheduler.

De aangepaste schaalaanpassing:

  • Bewaakt het aantal in behandeling zijnde indelingen in de taakhub.
  • Hiermee schaalt u het aantal werkrolreplica's omhoog met een verhoogde werkbelasting.
  • Schaalt terug naar beneden wanneer de belasting afneemt.
  • Biedt efficiënt resourcegebruik door de capaciteit aan de vraag te koppelen.

De scalerconfiguratie controleren

Controleer of de automatische schaalaanpassing correct werkt in de geïmplementeerde oplossing.

  1. Navigeer in de Azure-portal naar uw worker-app.

  2. Selecteer vanuit het menu aan de linkerkant Toepassing>Revisies en replica's.

  3. Selecteer het tabblad Replica's om te controleren of uw toepassing wordt uitgeschaald.

    Schermafbeelding van de pagina Revisies en replica's met geschaalde replica's in de Azure portal.

  4. Selecteer Toepassingsschaal> in het menu aan de linkerkant.

  5. Selecteer de naam van de schaalregel om de schaalaanpassingsinstellingen weer te geven.