Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Navigieren Sie im Azure-Portal zu Ihrer Container-App.
Wählen Sie im linken Menü Anwendung>Skala aus.
Legen Sie die Werte für Min-Replikate und Max-Replikate für Ihre Überarbeitung fest.
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".
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.
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
- .NET 8 SDK oder höher
- Docker (zum Erstellen des Images)
- Azure Developer CLI
Richten Sie Ihre Umgebung ein
Klonen Sie das Verzeichnis
Azure-Samples/Durable-Task-Scheduler.git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.gitAuthentifizieren Sie sich mit Azure mithilfe der Azure Developer CLI.
azd auth login
Bereitstellen der Lösung mit Azure Developer CLI
Navigieren Sie zum
AutoscalingInACABeispielverzeichnis.cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACAInitialisieren Sie die Azure Developer CLI-Umgebung (nur das erste Mal erforderlich):
azd initBereitstellen von Ressourcen und Bereitstellen der Anwendung:
azd upWenn 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 upBefehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wieazd up:- Erstellt und konfiguriert alle erforderlichen Azure Ressourcen über die bereitgestellten Bicep Dateien im Verzeichnis
./infraunter Verwendung vonazd 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.jsonmain.bicep- Ein
appRessourcenverzeichnis, das nach Funktionalität organisiert ist - Eine
coreReferenzbibliothek, die die von derazdVorlage verwendeten Bicep-Module enthält
- Stellt den Code mithilfe von
azd deploybereit
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.- Erstellt und konfiguriert alle erforderlichen Azure Ressourcen über die bereitgestellten Bicep Dateien im Verzeichnis
Erfolgreiche Bereitstellung bestätigen
Überprüfen Sie im Azure-Portal, ob die Orchestrierungen erfolgreich ausgeführt werden.
Kopieren Sie den Ressourcengruppennamen aus der Terminalausgabe.
Melden Sie sich beim Azure-Portal an, und suchen Sie nach diesem Ressourcengruppennamen.
Klicken Sie auf der Übersichtsseite der Ressourcengruppe auf die Clientcontainer-App-Ressource.
Wählen Sie Überwachung>Protokolldatenstrom aus.
Vergewissern Sie sich, dass der Clientcontainer die Funktionskettenaufgaben protokolliert.
Navigieren Sie zurück zur Ressourcengruppenseite, um den
workerContainer auszuwählen.Wählen Sie Überwachung>Protokolldatenstrom aus.
Vergewissern Sie sich, dass der Workercontainer die Aufgaben zur Funktionsverkettung protokolliert.
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.
Navigieren Sie im Azure-Portal zu Ihrer Worker-App.
Wählen Sie im linken Menü " Anwendungsrevisionen>" und "Replikate" aus.
Wählen Sie die Registerkarte "Replikate " aus, um zu überprüfen, ob Ihre Anwendung eine Skalierung ausgeführt hat.
Wählen Sie im linken Menü Anwendung>Skalierung aus.
Wählen Sie den Namen der Skalierungsregel aus, um die Skalierungseinstellungen anzuzeigen.