Esercitazione: Ridimensionare un'app contenitore
App contenitore di Azure gestisce la scalabilità orizzontale automatica tramite un set di regole di ridimensionamento dichiarative. Quando un'app contenitore aumenta il numero di istanze, vengono create nuove istanze dell'app contenitore su richiesta. Queste istanze sono note come repliche.
In questa esercitazione si aggiunge una regola di scalabilità HTTP all'app contenitore e si osserva la scalabilità dell'applicazione.
Prerequisiti
Requisito | Istruzioni |
---|---|
Account di Azure | Se non si ha un account Azure, è possibile crearne uno gratuitamente. Per continuare, è necessaria l'autorizzazione Collaboratore per la sottoscrizione di Azure. Per informazioni dettagliate, fare riferimento ad Assegnare ruoli di Azure usando il portale di Azure. |
Account GitHub | È possibile ottenerlo gratuitamente. |
Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure. |
Attrezzaggio
Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.
az login
Assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando eseguire il comando di aggiornamento.
az upgrade
Installare o aggiornare quindi l'estensione App contenitore di Azure per l'interfaccia della riga di comando.
Se si ricevono errori relativi ai parametri mancanti quando si eseguono comandi az containerapp
nell'interfaccia della riga di comando di Azure o nei cmdlet del modulo Az.App
in Azure PowerShell, assicurarsi di avere installato la versione più recente dell'estensione App contenitore di Azure.
az extension add --name containerapp --upgrade
Nota
A partire da maggio 2024, le estensioni dell'interfaccia della riga di comando di Azure non abilitano più le funzionalità di anteprima per impostazione predefinita. Per accedere alle funzionalità di anteprima di App contenitore, installare l'estensione App contenitore con --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Ora che l'estensione o il modulo corrente è installato, registrare gli spazi dei nomi Microsoft.App
e Microsoft.OperationalInsights
.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Creare e distribuire l'app contenitore
Creare e distribuire la prima app contenitore con il comando containerapp up
. Questo comando crea:
- Gruppo di risorse
- Ambiente delle app contenitore
- area di lavoro Log Analytics
Se una di queste risorse esiste già, il comando usa le risorse esistenti anziché crearne di nuove.
Infine, il comando crea e distribuisce l'app contenitore usando un'immagine del contenitore pubblica.
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 \
Nota
Assicurarsi che il valore per il parametro --image
sia in lettere minuscole.
Impostando --ingress
su external
, si rende disponibile l'app contenitore per le richieste pubbliche.
Il comando up
restituisce il nome di dominio completo (FQDN) per l'app contenitore. Copiare il nome di dominio completo in un file di testo. Verrà usato nella sezione Invia richieste. Il nome di dominio completo sarà simile a quanto indicato nell'esempio seguente:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
Aggiungere regola di ridimensionamento
Aggiungere una regola di ridimensionamento HTTP all'app contenitore eseguendo il comando az containerapp update
.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--scale-rule-name my-http-scale-rule \
--scale-rule-http-concurrency 1
Questo comando aggiunge una regola di ridimensionamento HTTP all'app contenitore con il nome my-http-scale-rule
e un'impostazione di concorrenza di 1
. Se l'app riceve più richieste HTTP simultanee, il runtime crea le repliche dell'app per gestire le richieste.
Il comando update
restituisce la nuova configurazione come risposta JSON per verificare che la richiesta abbia esito positivo.
Avviare l'output del log
È possibile osservare gli effetti del ridimensionamento dell'applicazione visualizzando i log generati dal runtime di App contenitore. Usare il comando az containerapp logs show
per avviare l'ascolto delle voci di log.
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
Il comando show
restituisce le voci dai registri di sistema per l'app contenitore in tempo reale. È possibile prevedere una risposta simile all'esempio seguente:
{
"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/"
}
Per altre informazioni, vedere az containerapp logs.
Inviare richieste
Aprire una nuova shell bash. Eseguire il comando seguente, sostituendo <YOUR_CONTAINER_APP_FQDN>
con il nome di dominio completo per l'app contenitore salvata dalla sezione Creare e distribuire l'app contenitore.
seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"
Questi comandi inviano 50 richieste all'app contenitore in batch simultanei da 10 richieste.
Comando o argomento | Descrizione |
---|---|
seq 1 50 |
Genera una sequenza di numeri da 1 a 50. |
| |
L'operatore pipe invia la sequenza al comando xargs . |
xargs |
Viene eseguito curl con l'URL specificato |
-Iname |
Funge da segnaposto per l'output di seq . Questo argomento impedisce l'invio del valore restituito al comando curl . |
curl |
Chiama l'URL specificato. |
-P10 |
Indica a xargs di eseguire fino a 10 processi alla volta. |
Per altre informazioni, vedere la documentazione per:
Nella prima shell, in cui è stato eseguito il comando az containerapp logs show
, l'output ora contiene una o più voci di log come le seguenti.
{
"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
}
Visualizzare il ridimensionamento nel portale di Azure (facoltativo)
- Accedere al portale di Azure.
- Nella barra di Ricerca nella parte superiore, immettere my-container-app.
- Nei risultati della ricerca, in Risorseselezionare my-container-app.
- Nella barra di spostamento a sinistra, espandere Applicazione e selezionare Ridimensionamento e repliche.
- Nella pagina Ridimensionamento e repliche, selezionare Repliche.
- L'app contenitore ora ha più repliche in esecuzione.
Potrebbe essere necessario selezionare Aggiorna per visualizzare le nuove repliche.
Nella barra di spostamento a sinistra, espandere Monitoraggio e selezionare Metriche.
Nella pagina Metriche, impostare Metrica su Richieste.
Selezionare Applicare separazione.
Espandere l'elenco a discesa Valori e selezionare Replica.
Selezionare l'icona del segno di spunta blu per completare la modifica della separazione.
Il grafico mostra le richieste ricevute dall'app contenitore, separate per replica.
Per impostazione predefinita, la scala del grafico è impostata sulle ultime 24 ore, con una granularità temporale di 15 minuti. Selezionare il ridimensionamento e impostarlo sugli ultimi 30 minuti, con una granularità temporale di un minuto. Selezionare il pulsante Applica.
Selezionare il grafico e trascinare per evidenziare l'aumento recente delle richieste ricevute dall'app contenitore.
Lo screenshot seguente mostra una visualizzazione ingrandita del modo in cui le richieste ricevute dall'app contenitore vengono divise tra le repliche.
Pulire le risorse
Se non si intende continuare a usare questa applicazione, eseguire il comando seguente per eliminare il gruppo di risorse insieme a tutte le risorse create in questa esercitazione.
Attenzione
Nell'esempio seguente, il gruppo di risorse specificato e tutte le risorse al suo interno vengono eliminati. Se nel gruppo di risorse specificato sono presenti anche risorse diverse da quelle usate in questa esercitazione, verranno eliminate.
az group delete --name my-container-apps
Suggerimento
Problemi? Segnalare i problemi su GitHub aprendo un ticket nel repository App contenitore di Azure.