Freigeben über


Konfigurieren der automatischen Skalierung für die app "Durable Task SDK", die in Azure-Container-Apps gehostet wird (Vorschau)

Sie können die automatische Skalierung in Container-Apps implementieren, die den Durable Task Scheduler verwenden. Die Automatische Skalierung behält die Zuverlässigkeit und Skalierbarkeit von lang andauernden Workflows bei, indem sie sich an sich ändernde Anforderungen anpassen, ohne manuell eingreifen zu müssen.

Steuern Sie die automatische Skalierung, indem Sie den Bereich von Anwendungsreplikaten festlegen, die als Reaktion auf eine Orchestrierung, Aktivität oder Entität bereitgestellt werden, die ausgelöst wird. Der Scaler passt die Anzahl der Container-App-Replikate innerhalb dieses Bereichs dynamisch an, sodass Ihre Lösung Spitzen in der Arbeitsauslastung verarbeiten und die Ressourcenauslastung verhindern kann.

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.

Konfigurieren Sie den Autoscaler

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

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

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

Feld BESCHREIBUNG Beispiel
Minimale Anzahl an Replikaten 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
Endpunkt Der Durable Task Scheduler-Endpunkt, zu dem der Scaler eine Verbindung herstellt. https://dts-ID.centralus.durabletask.io
maxConcurrentWorkItemsCount Die maximale Anzahl gleichzeitiger Arbeitselemente, die als Ereignis an die Computeressource gesendet werden, etwa, wenn Sie die Computeressource anweisen, eine Orchestrierung auszuführen. 1
taskhubName Der Name des mit dem Scheduler verbundenen Aufgabenhubs. taskhub-ID
Arbeitsobjekttyp Der Arbeitselementtyp, der verteilt wird. Zu den Optionen gehören "Orchestrierung", "Aktivität" oder "Entität". Orchestrierung
Verwaltete Identität Die vom Benutzer zugewiesene oder vom System verwaltete Identität, die mit den Ressourcen "Scheduler" und "Task Hub" verknüpft sind. Stellen Sie sicher, dass das Kontrollkästchen " Authentifizieren mit verwalteter Identität " aktiviert ist. someone@example.com

Experimentieren mit dem Beispiel

Im Beispiel für die automatische Skalierung in Azure Container-Apps verwenden Sie die Azure Developer CLI, um die automatische Skalierung für eine Container-App zu implementieren, die mit dem .NET Durable Task SDK erstellt und in Azure-Container-Apps gehostet wird. Das Beispiel zeigt eine Orchestrierung mithilfe des Funktionskettenmusters.

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 Azure-Samples/Durable-Task-Scheduler Verzeichnis.

    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 mithilfe der Azure Developer CLI

  1. Navigieren Sie zum AutoscalingInACA Beispielverzeichnis.

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. Bereitstellen von Ressourcen und Bereitstellen der Anwendung:

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

    Parameter BESCHREIBUNG
    Umgebungsname Präfix für die Ressourcengruppe, die für alle Azure-Ressourcen erstellt wurde.
    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 mithilfe der bereitgestellten Bicep-Dateien im ./infra Verzeichnis mitazd provision. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen 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>Protokollstream 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>Protokollstream aus.

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

    Screenshot des Protokolldatenstroms des Arbeitscontainers im Azure-Portal.

Grundlegendes zum benutzerdefinierten Scaler

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, der sich automatisch entsprechend der Arbeitslast des dauerhaften Aufgabenplaners skaliert.

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.

Vergewissern Sie sich, dass der Scaler konfiguriert ist.

Ü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. Klicken Sie im linken Menü auf Anwendungsrevisionen>und Replikate.

  3. Klicken Sie auf die Registerkarte "Replikate ", um zu überprüfen, ob ihre Anwendung eine Skalierung ausgeführt hat.

  4. Klicken Sie im linken Menü auf Anwendung>Skala.

  5. Klicken Sie auf den Skalierungsnamen, um die Skalierungseinstellungen anzuzeigen.

Nächste Schritte

Derzeit ist die automatische Skalierung von Container-Apps mit Durable Functions für den Durable Task Scheduler nicht verfügbar. Probieren Sie in der Zwischenzeit Container-Apps mit automatischer Skalierung unter Verwendung des Microsoft SQL (MSSQL)-Back-Ends aus.