Esercitazione: Ridimensionare un'app contenitore
App Azure Container gestisce il ridimensionamento orizzontale automatico 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, vedere Assegnare ruoli di Azure usando il portale di Azure. |
GitHub Account | Averne uno 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
Per assicurarsi di eseguire la versione più recente dell'interfaccia della riga di comando, eseguire il comando di aggiornamento.
az upgrade
Installare o aggiornare quindi l'estensione App Azure Container per l'interfaccia della riga di comando.
az extension add --name containerapp --upgrade
Ora che l'estensione o il modulo corrente è installato, registrare gli Microsoft.App
spazi dei nomi e Microsoft.OperationalInsights
.
Nota
Le risorse di App Azure Container sono state migrate dallo Microsoft.Web
spazio dei nomi allo Microsoft.App
spazio dei nomi . Per altri dettagli, vedere Migrazione dello spazio dei nomi da Microsoft.Web a Microsoft.App nel mese di marzo 2022.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Creare e distribuire l'app contenitore
Creare e distribuire l'app contenitore con il containerapp up
comando . Questo comando crea un oggetto :
- Gruppo di risorse
- Ambiente 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 --image
parametro sia in lettere minuscole.
Impostando --ingress
su external
, si rende disponibile l'app contenitore per le richieste pubbliche.
Il up
comando 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 . L'FQDN è simile all'esempio seguente:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
Aggiungere una regola di scalabilità
Aggiungere una regola di scalabilità HTTP all'app contenitore eseguendo il az containerapp update
comando .
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 scalabilità 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 repliche dell'app per gestire le richieste.
Il update
comando 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 per avviare l'ascolto az containerapp logs show
delle voci di log.
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
Il show
comando restituisce voci dai log 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 di 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 xargs comando. |
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 curl comando. |
curl |
Chiama l'URL specificato. |
-P10 |
xargs Indica di eseguire fino a 10 processi alla volta. |
Per altre informazioni, vedere la documentazione per:
Nella prima shell, in cui è stato eseguito il az containerapp logs show
comando, 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 in 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 Risorse selezionare my-container-app.
- Nella barra di spostamento a sinistra espandere Applicazione e selezionare Ridimensiona e repliche.
- Nella pagina Scalabilità e repliche selezionare Repliche.
- L'app contenitore ha ora 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 suddivisione.
Il grafico mostra le richieste ricevute dall'app contenitore, suddivise per replica.
Per impostazione predefinita, la scala del grafico è impostata sulle ultime 24 ore, con una granularità temporale di 15 minuti. Selezionare la scala e modificarla negli 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
Il comando seguente elimina il gruppo di risorse specificato e tutte le risorse contenute al suo interno. 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 il problema in GitHub aprendo un problema nel repository di App contenitore di Azure.