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)
- Melden Sie sich beim Azure-Portal an.
- Geben Sie in der Suchleiste oben my-container-app ein.
- Wählen Sie in den Suchergebnissen unter Ressourcenmy-container-app aus.
- Erweitern Sie in der Navigationsleiste auf der linken Seite Anwendung, und wählen Sie Skalierung und Replikate aus.
- Wählen Sie auf der Seite Skalierung und Replikate die Option Replikate aus.
- Ihre Container-App verfügt jetzt über mehrere Replikate, die ausgeführt werden.
Sie müssen möglicherweise Aktualisieren auswählen, um neue Replikate anzuzeigen.
Erweitern Sie in der Navigationsleiste auf der linken Seite Überwachung, und wählen Sie Metriken aus.
Legen Sie auf der Seite MetrikenMetrik auf Anforderungen fest.
Klicken Sie auf Apply splitting (Teilung anwenden).
Erweitern Sie die Dropdownliste Werte, und überprüfen Sie die Option Replikat.
Wählen Sie das blaue Häkchensymbol aus, um die Bearbeitung der Aufteilung abzuschließen.
Das Diagramm zeigt die von Ihrer Container-App empfangenen Anforderungen, aufgeteilt nach Replikaten.
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.
Wählen Sie den Graph aus, und ziehen Sie ihn, um den kürzlichen Anstieg der von Ihrer Container-App empfangenen Anforderungen hervorzuheben.
Der folgende Screenshot zeigt eine vergrößerte Ansicht, wie die von Ihrer Container-App empfangenen Anforderungen auf Replikate aufgeteilt sind.
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.