Automatische Skalierung für Durable Task SDK-Apps in Azure Container Apps konfigurieren

Wenn Sie durable Task SDK-Apps in Azure Container Apps hosten, können Sie die automatische Skalierung konfigurieren, sodass die Plattform die Anzahl der Replikate basierend auf Ihrer Orchestrierung, Aktivität oder Entitätsauslastung automatisch anpasst.

In diesem Artikel erfahren Sie, wie Sie:

  • Legen Sie mindeste und maximale Replikatanzahl für Ihre Container-App fest.
  • Fügen Sie Skalierungsregeln hinzu, die auf Aufgaben für den dauerhaften Task-Scheduler reagieren.
  • Bereitstellen und Überprüfen eines beispiels für die automatische Skalierung mithilfe Azure Developer CLI.

Hinweis

Die automatische Skalierung wird für Apps unterstützt, die mit den SdKs für dauerhafte Aufgaben erstellt und in Azure Container Apps gehostet werden. Dieses Feature verwendet den azure-durabletask-scheduler KEDA-Scaler.

Important

Das Setzen von minReplicas auf 0 aktiviert die Skalierung auf null, was Kosten im Leerlauf spart, aber eine Kaltstartlatenz einführt, wenn neue Arbeitsaufgaben eintreffen. Legen Sie minReplicas auf 1 oder höher fest, wenn Ihre Workload latenzempfindlich ist.

Konfigurieren Sie den Autoscaler

Sie können die AutoScaler-Konfiguration über das Azure-Portal, eine Bicep-Vorlage und die Azure CLI festlegen.

  1. Navigieren Sie im Azure-Portal zu Ihrer Container-App.

  2. Wählen Sie im linken Menü Anwendung>Skala aus.

  3. Legen Sie die Werte für Min-Replikate und Max-Replikate für Ihre Überarbeitung fest.

    Screenshot der Scaler-Min- und Max-Replikatkonfiguration im Azure-Portal.

  4. Wählen Sie "Hinzufügen" aus, um eine neue Skalierungsregel zu erstellen. Legen Sie den Typ auf "Benutzerdefiniert" fest, und konfigurieren Sie die Felder "Durable Task Scheduler".

    Screenshot: Konfiguration des langlebigen Aufgabenplaners für den Scaler im Azure-Portal

  5. Stellen Sie sicher, dass das Kontrollkästchen " Mit verwalteter Identität authentifizieren" aktiviert ist, und wählen Sie die Identität aus, die mit Ihrer Scheduler- und Task Hub-Ressource verknüpft ist.

  6. Wählen Sie Speichern aus.

Feld Beschreibung Beispiel
Mindestanzahl Replikate Die Mindestanzahl der Replikate, die für die Containerrevision zu einem bestimmten Zeitpunkt zulässig sind. 1
Maximale Anzahl Replikate Maximale Anzahl von Replikaten, die für die Containerrevision zu einem bestimmten Zeitpunkt zulässig sind. 10
endpoint Der Durable Task Scheduler-Endpunkt, zu dem der Scaler eine Verbindung herstellt. https://dts-ID.centralus.durabletask.io
maxConcurrentWorkItemsCount Maximale Anzahl von Arbeitsaufgaben, die ein einzelnes Replikat gleichzeitig verarbeitet. Niedrigere Werte führen dazu, dass der Scaler Früher Replikate hinzufügen kann. Starten Sie mit 1 für CPU-intensive Aufgaben; erhöhen Sie dies für E/A-gebundene Workloads. 1
taskhubName Der Name des mit dem Scheduler verbundenen Aufgabenhubs. taskhub-ID
Arbeitsobjekttyp Der Arbeitselementtyp, der verteilt wird. Zu den verfügbaren Optionen zählen Orchestration, Activity oder Entity. Orchestration
Verwaltete Identität Die vom Benutzer zugewiesene oder vom System zugewiesene verwaltete Identität, die mit der Ressource "Scheduler" und "Task Hub" verknüpft ist. /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

Anleitung: Bereitstellen einer automatisch skalierenden Container-App

Sie haben die automatische Skalierung in einer vorhandenen App bereits konfiguriert? Sie können diesen Abschnitt überspringen. Wenn Sie eine praktische Anleitung benötigen, führen Sie die folgenden Schritte aus, um das Autoscaling-Beispiel in Azure Container Apps mithilfe von der Azure Developer CLI bereitzustellen. Im Beispiel wird eine .NET Durable Task SDK-App bereitgestellt, die das Funktionsverkettungsmuster verwendet und einen vordefinierten KEDA-Scaler enthält.

Hinweis

Obwohl in diesem Beispiel das .NET SDK für dauerhafte Aufgaben verwendet wird, ist die automatische Skalierung sprachunabhängig.

Voraussetzungen

Richten Sie Ihre Umgebung ein

  1. Klonen Sie das Verzeichnis Azure-Samples/Durable-Task-Scheduler.

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Authentifizieren Sie sich mit Azure mithilfe der Azure Developer CLI.

    azd auth login
    

Bereitstellen der Lösung mit Azure Developer CLI

  1. Navigieren Sie zum AutoscalingInACA Beispielverzeichnis.

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Initialisieren Sie die Azure Developer CLI-Umgebung (nur das erste Mal erforderlich):

    azd init
    
  3. Bereitstellen von Ressourcen und Bereitstellen der Anwendung:

    azd up
    
  4. Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter ein.

    Parameter Beschreibung
    Umgebungsname Präfix für die Ressourcengruppe, die erstellt wurde, um alle Azure Ressourcen zu enthalten.
    Azure-Standort Der Azure-Speicherort für Ihre Ressourcen.
    Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen.

    Dieser Vorgang nimmt einige Zeit in Anspruch. Nach Abschluss des azd up Befehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wie azd up:

    • Erstellt und konfiguriert alle erforderlichen Azure Ressourcen über die bereitgestellten Bicep Dateien im Verzeichnis ./infra unter Verwendung von azd provision. Sobald die Ressourcen von Azure Developer CLI bereitgestellt wurden, können Sie über das Azure-Portal auf diese zugreifen. Zu den Dateien, die die Azure-Ressourcen bereitstellen, gehören:
      • main.parameters.json
      • main.bicep
      • Ein app Ressourcenverzeichnis, das nach Funktionalität organisiert ist
      • Eine core Referenzbibliothek, die die von der azd Vorlage verwendeten Bicep-Module enthält
    • Stellt den Code mithilfe von azd deploy bereit

    Erwartete Ausgabe

    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.   
    

Erfolgreiche Bereitstellung bestätigen

Überprüfen Sie im Azure-Portal, ob die Orchestrierungen erfolgreich ausgeführt werden.

  1. Kopieren Sie den Ressourcengruppennamen aus der Terminalausgabe.

  2. Melden Sie sich beim Azure-Portal an, und suchen Sie nach diesem Ressourcengruppennamen.

  3. Klicken Sie auf der Übersichtsseite der Ressourcengruppe auf die Clientcontainer-App-Ressource.

  4. Wählen Sie Überwachung>Protokolldatenstrom aus.

  5. Vergewissern Sie sich, dass der Clientcontainer die Funktionskettenaufgaben protokolliert.

    Screenshot des Protokolldatenstroms des Clientcontainers im Azure-Portal.

  6. Navigieren Sie zurück zur Ressourcengruppenseite, um den worker Container auszuwählen.

  7. Wählen Sie Überwachung>Protokolldatenstrom aus.

  8. Vergewissern Sie sich, dass der Workercontainer die Aufgaben zur Funktionsverkettung protokolliert.

    Screenshot des Protokolldatenstroms des Arbeitscontainers im Azure-Portal.

Verstehen des benutzerdefinierten Scalers

Dieses Beispiel enthält eine azure.yaml Konfigurationsdatei. Wenn Sie azd up ausgeführt haben, haben Sie die gesamte Beispiellösung für Azure bereitgestellt, einschließlich eines benutzerdefinierten Scalers für Ihre Container-Apps, die automatisch basierend auf der Workload des dauerhaften Aufgabenplaners skaliert werden.

Der benutzerdefinierte Scaler:

  • Überwacht die Anzahl der ausstehenden Orchestrierungen im Aufgabenhub.
  • Skaliert die Anzahl der Workerreplikate mit zunehmender Arbeitsauslastung.
  • Skaliert zurück, wenn die Last verringert wird.
  • Bietet eine effiziente Ressourcenauslastung durch Zuordnen der Kapazität zu Bedarf.

Überprüfen der Skalierungskonfiguration

Überprüfen Sie, ob die automatische Skalierung in der bereitgestellten Lösung ordnungsgemäß funktioniert.

  1. Navigieren Sie im Azure-Portal zu Ihrer Worker-App.

  2. Wählen Sie im linken Menü " Anwendungsrevisionen>" und "Replikate" aus.

  3. Wählen Sie die Registerkarte "Replikate " aus, um zu überprüfen, ob Ihre Anwendung eine Skalierung ausgeführt hat.

    Screenshot der Seite

  4. Wählen Sie im linken Menü Anwendung>Skalierung aus.

  5. Wählen Sie den Namen der Skalierungsregel aus, um die Skalierungseinstellungen anzuzeigen.