Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Container Apps hanterar automatisk horisontell skalning via en uppsättning deklarativa skalningsregler. När en containerapp skalar ut skapas nya instanser av containerappen på begäran. Dessa instanser kallas repliker.
I den här självstudien lägger du till en HTTP-skalningsregel i containerappen och ser hur programmet skalar.
Förutsättningar
| Krav | Instruktioner |
|---|---|
| Azure-konto | Om du inte har ett Azure-konto kan du skapa ett kostnadsfritt. Du behöver behörigheten Deltagare för Azure-prenumerationen för att kunna fortsätta. Mer information finns i Tilldela Azure-roller med hjälp av Azure Portal. |
| GitHub-konto | Skaffa en gratis. |
| Azure CLI | Installera Azure CLI. |
Ställ in
Om du vill logga in på Azure från CLI kör du följande kommando och följer anvisningarna för att slutföra autentiseringsprocessen.
az login
Kör uppgraderingskommandot för att säkerställa att du kör den senaste versionen av CLI.
az upgrade
Installera eller uppdatera sedan Azure Container Apps-tillägget för CLI.
Om du får fel om saknade parametrar när du kör az containerapp kommandon i Azure CLI eller cmdletar från modulen Az.App i PowerShell kontrollerar du att den senaste versionen av Azure Container Apps-tillägget är installerad.
az extension add --name containerapp --upgrade
Kommentar
Från och med maj 2024 aktiverar Azure CLI-tillägg inte längre förhandsversionsfunktioner som standard. Om du vill komma åt förhandsversionsfunktioner för Container Apps installerar du containerapptillägget med --allow-preview true.
az extension add --name containerapp --upgrade --allow-preview true
Nu när det aktuella tillägget eller modulen har installerats registrerar du Microsoft.App namnrymderna och Microsoft.OperationalInsights .
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Skapa och distribuera containerappen
Skapa och distribuera containerappen containerapp up med kommandot . Det här kommandot skapar en:
- Resursgrupp
- Container Apps-miljö
- Log Analytics-arbetsyta
Om någon av dessa resurser redan finns använder kommandot befintliga resurser i stället för att skapa nya.
Slutligen skapar och distribuerar kommandot containerappen med hjälp av en offentlig containeravbildning, mcr.microsoft.com/dotnet/samples:aspnetapp. Den här avbildningen används för att utlösa skalningsreglerna som du skapar i den här artikeln. Du behöver inte känna till eller använda .NET för att slutföra den här proceduren.
az containerapp up \
--name my-container-app \
--resource-group my-container-apps \
--location centralus \
--environment 'my-container-apps' \
--image mcr.microsoft.com/dotnet/samples:aspnetapp \
--target-port 8080 \
--ingress external \
--query properties.configuration.ingress.fqdn \
Kommentar
Kontrollera att värdet för parametern är i gemener --image .
Genom att ange --ingress till externalgör du containerappen tillgänglig för offentliga begäranden.
Kommandot up returnerar det fullständigt kvalificerade domännamnet (FQDN) för containerappen. Kopiera det här fullständiga domännamnet till en textfil. Du använder den i avsnittet Skicka begäranden . Ditt FQDN ser ut som i följande exempel:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
Lägg till skalningsregel
Lägg till en HTTP-skalningsregel i containerappen genom att az containerapp update köra kommandot .
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-http-scale-rule \
--scale-rule-http-concurrency 1
Det här kommandot lägger till en HTTP-skalningsregel i containerappen med namnet my-http-scale-rule och en samtidighetsinställning på 1. Om din app tar emot mer än en samtidig HTTP-begäran skapar körningen repliker av din app för att hantera begäranden.
Kommandot update returnerar den nya konfigurationen som ett JSON-svar för att verifiera att din begäran lyckades.
Starta loggutdata
Du kan se effekterna av din programskalning genom att visa loggarna som genereras av Container Apps-körningen.
az containerapp logs show Använd kommandot för att börja lyssna efter loggposter.
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
Kommandot show returnerar poster från systemloggarna för containerappen i realtid. Du kan förvänta dig ett svar som i följande exempel:
{
"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://[::]:80"
}
{
"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/"
}
Mer information finns i az containerapp logs (Az containerapp logs).
Skicka begäranden
Öppna ett nytt bash-gränssnitt. Kör följande kommando och ersätt <YOUR_CONTAINER_APP_FQDN> med det fullständigt kvalificerade domännamnet för din containerapp som du sparade från avsnittet Skapa och distribuera containerappen .
seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"
Dessa kommandon skickar 50 begäranden till containerappen i samtidiga batchar med 10 begäranden vardera.
| Kommando eller argument | beskrivning |
|---|---|
seq 1 50 |
Genererar en sekvens med tal från 1 till 50. |
| |
Pipe-operatorn skickar sekvensen xargs till kommandot. |
xargs |
Körs curl med den angivna URL:en |
-Iname |
Fungerar som platshållare för utdata seqfrån . Det här argumentet förhindrar att returvärdet skickas till curl kommandot. |
curl |
Anropar den angivna URL:en. |
-P10 |
Instruerar xargs att köra upp till 10 processer åt gången. |
Mer information finns i dokumentationen för:
I det första gränssnittet, där du körde az containerapp logs show kommandot, innehåller utdata nu en eller flera loggposter som följande.
{
"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
"Type":"Normal",
"ContainerAppName":"my-container-app",
"RevisionName":"my-container-app--00001111",
"ReplicaName":"my-container-app--00001111-aaaaa22222-bbbb",
"Msg":"Replica 'my-container-app--00001111-aaaaa22222-bbbb' has been scheduled to run on a node.",
"Reason":"AssigningReplica",
"EventSource":"ContainerAppController",
"Count":0
}
Visa skalning i Azure Portal (valfritt)
Logga in på Azure-portalen.
I sökfältethögst upp anger du my-container-app.
I sökresultaten går du till Resurser och väljer my-container-app.
I navigeringsfältet till vänster expanderar du Program och väljer Skala och repliker.
På sidan Skala och repliker väljer du Repliker.
Containerappen har nu fler än en replik som körs.
Du kan behöva välja Uppdatera för att se de nya replikerna.
I navigeringsfältet till vänster expanderar du Övervakning och väljer Mått.
På sidan Mått anger du Mått till Begäranden.
Välj Använd delning.
Expandera listrutan Värden och markera Replik.
Välj den blå bockmarkeringsikonen för att slutföra redigeringen av delningen.
Diagrammet visar de begäranden som tas emot av containerappen, uppdelade efter replik.
Som standard är grafskalan inställd på de senaste 24 timmarna, med en tidskornighet på 15 minuter. Välj skalan och ändra den till de senaste 30 minuterna, med en tidskornighet på en minut. Välj knappen Tillämpa.
Välj i diagrammet och dra för att markera den senaste ökningen av begäranden som tagits emot av containerappen.
Följande skärmbild visar en zoomad vy över hur begäranden som tas emot av containerappen delas upp mellan repliker.
Processor- och minnesskalning
Du bör föredra HTTP-skalningsregler i förhållande till cpu- eller minnesskalningsregler när det är möjligt. Processor- och minnesskalning tillåter inte att containerappen skalas till noll.
När du har lagt till en cpu- eller minnesskalningsregel kan du testa den genom att skicka begäranden till containerappen och visa skalningen i Azure-portalen.
När du har skickat begäranden till skalningsappen kan det ta en minut innan skalningsregeln utlöses och de nya replikerna skapas.
CPU-skalning
Cpu-skalning gör att din app kan skala in eller ut beroende på hur mycket processorn används.
Om du till exempel skapar en cpu-skalningsregel med användningsvärdet 50skapar Azure Container Apps fler repliker av din containerapp när den genomsnittliga CPU-användningen för alla repliker når 50%.
Cpu-skalning tillåter inte att containerappen skalas till noll. Mer information om den här utlösaren finns i KEDA CPU-skalautlösare.
Lägg till en cpu-skalningsregel i containerappen genom att az containerapp update köra kommandot .
Kommentar
När du använder Azure CLI för att lägga till en skalningsregel i en containerapp som redan har en skalningsregel ersätter den nya skalningsregeln den gamla skalningsregeln. Information om hur du lägger till flera skalningsregler finns i Flera skalningsregler.
Ersätt med dina värden innan du kör följande kommando <PLACEHOLDERS> . I den här handledningen ersätter du <UTILIZATION> med 1. Detta gör att containerappen skalas när den genomsnittliga CPU-användningen för alla repliker når 1%. Det här värdet är endast för demonstration. Antalet repliker begränsas till 10 av det --max-replicas 10 du angav när du körde az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-cpu-scale-rule \
--scale-rule-type cpu \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Minneshantering
Med minnesskalning kan din app skala in eller ut beroende på hur mycket minne som används.
Om du till exempel skapar en minnesskalningsregel med användningsvärdet 50skapar Azure Container Apps fler repliker av containerappen när den genomsnittliga minnesanvändningen för alla repliker når 50%.
Minnesskalning tillåter inte att containerappen skalas till noll. Mer information om denna utlösare finns i KEDA minnesstyrningsutlösare.
Lägg till en regel för minnesskalning i containerappen genom att az containerapp update köra kommandot .
Kommentar
När du använder Azure CLI för att lägga till en skalningsregel i en containerapp som redan har en skalningsregel ersätter den nya skalningsregeln den gamla skalningsregeln. Information om hur du lägger till flera skalningsregler finns i Flera skalningsregler.
Ersätt med dina värden innan du kör följande kommando <PLACEHOLDERS> . I den här handledningen ersätter du <UTILIZATION> med 1. Detta gör att containerappen skalas när den genomsnittliga minnesanvändningen för alla repliker når 1%. Det här värdet är endast för demonstration. Antalet repliker begränsas till 10 av det --max-replicas 10 du angav när du körde az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-memory-scale-rule \
--scale-rule-type memory \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Flera skalningsregler
Om du vill lägga till flera skalningsregler i containerappen med hjälp av Azure CLI måste du använda YAML.
Exportera konfigurationen av containerappen
az containerapp showtill YAML med kommandot .az containerapp show \ --name my-container-app \ --resource-group my-container-apps \ --output yaml > app.yamlI avsnittet
properties>template>scale>rulesiapp.yamllägger du till följande egenskaper.<PLACEHOLDERS>Ersätt med dina värden.... properties: ... template: ... scale: ... rules: - name: cpu-scaling-rule custom: type: cpu metadata: type: "Utilization" value: "<CPU_UTILIZATION>" - name: memory-scaling-rule custom: type: memory metadata: type: "Utilization" value: "<MEMORY_UTILIZATION>" ...Importera konfigurationen av containerappen
app.yamlfrånaz containerapp updatemed kommandot .az containerapp update \ --name my-container-app \ --resource-group my-container-apps \ --yaml app.yaml
Rensa resurser
Om du inte fortsätter att använda det här programmet kör du följande kommando för att ta bort resursgruppen tillsammans med alla resurser som skapats i den här självstudien.
Varning
Följande kommando tar bort den angivna resursgruppen och alla resurser som ingår i den. Om det finns resurser utanför omfånget för den här självstudien i den angivna resursgruppen tas de också bort.
az group delete --name my-container-apps
Dricks
Har du problem? Meddela oss på GitHub genom att öppna ett problem i Azure Container Apps-lagringsplatsen.