Freigeben über


Tutorial: Skalieren einer Container-App

Azure Container Apps verwaltet die automatische horizontale Skalierung mithilfe einer Reihe deklarativer Skalierungsregeln. Wenn eine Container-App horizontal hochskaliert wird, werden bei Bedarf neue Instanzen der Container-App erstellt. Diese Instanzen werden als Replikate bezeichnet.

In diesem Tutorial fügen Sie Ihrer Container-App eine HTTP-Skalierungsregel hinzu und beobachten, wie Ihre Anwendung skaliert wird.

Voraussetzungen

Anforderung Anweisungen
Azure-Konto Falls Sie kein Azure-Konto besitzen, können Sie kostenlos eines erstellen.

Sie benötigen die Berechtigung Mitwirkender für das Azure-Abonnement, um den Vorgang fortzusetzen. Weitere Einzelheiten finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
GitHub-Konto Kostenlos erhalten.
Azure CLI Installieren Sie die Azure CLI.

Einrichten

Um sich ausgehend von der CLI bei Azure anzumelden, führen Sie den folgenden Befehl aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.

az login

Verwenden Sie den Upgradebefehl, um sicherzustellen, dass Sie die neueste Version der CLI ausführen.

az upgrade

Installieren oder aktualisieren Sie als Nächstes die Azure Container Apps-Erweiterung für die CLI.

Falls Sie Fehler aufgrund fehlender Parameter erhalten, wenn Sie az containerapp-Befehle in der Azure CLI oder Cmdlets aus dem Az.App-Modul in Azure PowerShell ausführen, stellen Sie sicher, dass die aktuelle Version der Azure Container Apps-Erweiterung installiert ist.

az extension add --name containerapp --upgrade

Hinweis

Ab Mai 2024 aktivieren Azure CLI-Erweiterungen standardmäßig keine Previewfunktionen mehr. Um auf Previewfunktionen von Container Apps zuzugreifen, installieren Sie die Container Apps-Erweiterung mit --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces Microsoft.App und Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Erstellen und Bereitstellen der Container-App

Verwenden Sie den Befehl containerapp up, um Ihre Container-App zu erstellen und bereitzustellen. Dieser Befehl erstellt Folgendes:

  • Resource group
  • Container Apps-Umgebung
  • Log Analytics-Arbeitsbereich

Wenn eine dieser Ressourcen bereits vorhanden ist, verwendet der Befehl die vorhandenen Ressource, anstatt eine neue zu erstellen.

Schließlich erstellt der Befehl die Container-App und stellt sie mithilfe eines öffentlichen Containerimages bereit.

az containerapp up \
  --name my-container-app \
  --resource-group my-container-apps \
  --location centralus \
  --environment 'my-container-apps' \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 8080 \
  --ingress external \
  --query properties.configuration.ingress.fqdn \

Hinweis

Stellen Sie sicher, dass der Wert für den --image-Parameter in Kleinbuchstaben geschrieben ist.

Wenn Sie --ingress auf external festlegen, stellen Sie die Container-App für öffentliche Anforderungen zur Verfügung.

Der Befehl up gibt den vollqualifizierten Domänennamen der Container-App zurück. Kopieren Sie diesen FQDN in eine Textdatei. Sie werden ihn im Abschnitt Anforderungen senden verwenden. Ihr FQDN sieht ungefähr wie das folgende Beispiel aus:

https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io

Skalierungsregel hinzufügen

Fügen Sie Ihrer Container-App eine HTTP-Skalierungsregel hinzu, indem Sie den Befehl az containerapp update ausführen.

az containerapp update \
	--name my-container-app \
	--resource-group my-container-apps \
    --scale-rule-name my-http-scale-rule \
    --scale-rule-http-concurrency 1

Mit diesem Befehl wird Ihrer Container-App eine HTTP-Skalierungsregel mit dem Namen my-http-scale-rule und der Parallelitätseinstellung 1 hinzugefügt. Wenn Ihre App gleichzeitig mehr als eine HTTP-Anforderung empfängt, erstellt die Runtime Replikate Ihrer App, um die Anforderungen zu verarbeiten.

Der Befehl update gibt die neue Konfiguration als JSON-Antwort zurück, um zu überprüfen, ob Ihre Anforderung erfolgreich war.

Ausgabe des Startprotokolls

Sie können die Auswirkungen der Anwendungsskalierung beobachten, indem Sie die von der Container Apps-Runtime generierten Protokolle anzeigen. Verwenden Sie den Befehl az containerapp logs show, um mit dem Lauschen nach Protokolleinträgen zu beginnen.

az containerapp logs show \
	--name my-container-app \
	--resource-group my-container-apps \
	--type=system \
	--follow=true

Der Befehl show gibt Einträge aus den Systemprotokollen für Ihre Container-App in Echtzeit zurück. Sie können eine Antwort erwarten, die dem folgenden Beispiel ähnelt:

{
	"TimeStamp":"2023-08-01T16:49:03.02752",
	"Log":"Connecting to the container 'my-container-app'..."
}
{
	"TimeStamp":"2023-08-01T16:49:03.04437",
	"Log":"Successfully Connected to container:
	'my-container-app' [Revision: 'my-container-app--9uj51l6',
	Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
	"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
	"Log":"Now listening on: http://[::]:8080"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
	"Log":"Application started. Press Ctrl+C to shut down."
}
{
	"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
	"Log":"Hosting environment: Production"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
	"Log":"Content root path: /app/"
}

Weitere Informationen finden Sie unter az containerapp logs.

Senden von Anforderungen

Öffnen Sie eine neue Bash-Shell. Führen Sie den folgenden Befehl aus, und ersetzen Sie dabei <YOUR_CONTAINER_APP_FQDN> durch den vollqualifizierten Domänennamen für Ihre Container-App, den Sie im Abschnitt Erstellen und Bereitstellen der Container-App gespeichert haben.

seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"

Diese Befehle senden 50 Anforderungen in gleichzeitigen Batches mit jeweils 10 Anforderungen an Ihre Container-App.

Befehl oder Argument Beschreibung
seq 1 50 Generiert eine Sequenz von Zahlen von 1 bis 50.
| Der Pipeoperator sendet die Sequenz an den Befehl xargs.
xargs Führt curl mit der angegebenen URL aus.
-Iname Fungiert als Platzhalter für die Ausgabe von seq. Dieses Argument verhindert, dass der Rückgabewert an den Befehl curl gesendet wird.
curl Ruft die angegebene URL auf.
-P10 Weist xargs an, bis zu 10 Prozesse gleichzeitig auszuführen.

Weitere Informationen finden Sie in der Dokumentation für:

In der ersten Shell, in der Sie den Befehl az containerapp logs show ausgeführt haben, enthält die Ausgabe nun einen oder mehrere Protokolleinträge wie den folgenden.

{
	"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
	"Type":"Normal",
	"ContainerAppName":"my-container-app",
	"RevisionName":"my-container-app--9uj51l6",
	"ReplicaName":"my-container-app--9uj51l6-5f96557ffb-f795d",
	"Msg":"Replica 'my-container-app--9uj51l6-5f96557ffb-f795d' has been scheduled to run on a node.",
	"Reason":"AssigningReplica",
	"EventSource":"ContainerAppController",
	"Count":0
}

Anzeigen der Skalierung im Azure-Portal (optional)

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie in der Suchleiste oben my-container-app ein.
  3. Wählen Sie in den Suchergebnissen unter Ressourcenmy-container-app aus.
  4. Erweitern Sie in der Navigationsleiste auf der linken Seite Anwendung, und wählen Sie Skalierung und Replikate aus.
  5. Wählen Sie auf der Seite Skalierung und Replikate die Option Replikate aus.
  6. Ihre Container-App verfügt jetzt über mehrere Replikate, die ausgeführt werden.

Screenshot der Container-App-Replikate.

Sie müssen möglicherweise Aktualisieren auswählen, um neue Replikate anzuzeigen.

  1. Erweitern Sie in der Navigationsleiste auf der linken Seite Überwachung, und wählen Sie Metriken aus.

  2. Legen Sie auf der Seite MetrikenMetrik auf Anforderungen fest.

  3. Klicken Sie auf Apply splitting (Teilung anwenden).

  4. Erweitern Sie die Dropdownliste Werte, und überprüfen Sie die Option Replikat.

  5. Wählen Sie das blaue Häkchensymbol aus, um die Bearbeitung der Aufteilung abzuschließen.

  6. Das Diagramm zeigt die von Ihrer Container-App empfangenen Anforderungen, aufgeteilt nach Replikaten.

    Metriken-Graph der Container-App, der die Anforderungen aufgeteilt nach Replikaten zeigt.

  7. Standardmäßig ist die Graph-Skalierung auf 24 Stunden Dauer festgelegt, wobei die Zeitgranularität 15 Minuten beträgt. Wählen Sie die Skalierung aus, und ändern Sie sie in die letzten 30 Minuten und eine Zeitgranularität von einer Minute. Wählen Sie die Schaltfläche Anwenden aus.

  8. Wählen Sie den Graph aus, und ziehen Sie ihn, um den kürzlichen Anstieg der von Ihrer Container-App empfangenen Anforderungen hervorzuheben.

Screenshot des Metriken-Graphs der Container-App, der die Anforderungen aufgeteilt nach Replikaten zeigt. Die Skala ist auf 30 Minuten und eine Zeitgranularität von einer Minute festgelegt.

Der folgende Screenshot zeigt eine vergrößerte Ansicht, wie die von Ihrer Container-App empfangenen Anforderungen auf Replikate aufgeteilt sind.

Screenshot des Metriken-Graphs der Container-App, der die Anforderungen aufgeteilt nach Replikaten in vergrößerter Ansicht zeigt.

Bereinigen von Ressourcen

Wenn Sie diese Anwendung nicht weiter verwenden möchten, führen Sie den folgenden Befehl aus, um die Ressourcengruppe zusammen mit allen in diesem Tutorial erstellten Ressourcen zu löschen.

Achtung

Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Falls in der angegebenen Ressourcengruppe Ressourcen enthalten sind, die nicht zum Umfang dieses Tutorials gehören, werden sie ebenfalls gelöscht.

az group delete --name my-container-apps

Tipp

Treten Probleme auf? Informieren Sie uns über GitHub, indem Sie ein Problem im Azure Container Apps-Repository öffnen.

Nächste Schritte