Freigeben über


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

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 der Durable Task Scheduler-Konfiguration für den Scaler im Azure-Portal.

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
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 Autoscaling in Azure Container Apps Beispiel 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 durable Task .NET SDK 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. 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 erstellt wurde, um alle Azure Ressourcen zu enthalten.
    Azure-Speicherort Der Azure Speicherort für Ihre Ressourcen.
    Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen.

    Dieser Vorgang nimmt einige Zeit in Anspruch. Wenn der Befehl azd up abgeschlossen ist, zeigt die CLI-Ausgabe zwei Azure Portallinks 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 portal Azure 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.

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, 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.

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, die Durable Functions mit dem Durable-Task-Planer verwenden, nicht verfügbar. Probieren Sie in der Zwischenzeit Container-Apps mit automatischer Skalierung unter Verwendung des Microsoft SQL (MSSQL)-Back-Ends aus.