Condividi tramite


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)

  1. Accedere al portale di Azure.
  2. Nella barra di Ricerca nella parte superiore, immettere my-container-app.
  3. Nei risultati della ricerca, in Risorseselezionare my-container-app.
  4. Nella barra di spostamento a sinistra, espandere Applicazione e selezionare Ridimensionamento e repliche.
  5. Nella pagina Ridimensionamento e repliche, selezionare Repliche.
  6. L'app contenitore ora ha più repliche in esecuzione.

Screenshot delle repliche dell'app contenitore.

Potrebbe essere necessario selezionare Aggiorna per visualizzare le nuove repliche.

  1. Nella barra di spostamento a sinistra, espandere Monitoraggio e selezionare Metriche.

  2. Nella pagina Metriche, impostare Metrica su Richieste.

  3. Selezionare Applicare separazione.

  4. Espandere l'elenco a discesa Valori e selezionare Replica.

  5. Selezionare l'icona del segno di spunta blu per completare la modifica della separazione.

  6. Il grafico mostra le richieste ricevute dall'app contenitore, separate per replica.

    Grafico delle metriche dell'app contenitore, che mostra le richieste separate per replica.

  7. 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.

  8. Selezionare il grafico e trascinare per evidenziare l'aumento recente delle richieste ricevute dall'app contenitore.

Screenshot del grafico delle metriche dell'app contenitore, che mostra le richieste separate per replica, con un ridimensionamento di 30 minuti e una granularità temporale di un minuto.

Lo screenshot seguente mostra una visualizzazione ingrandita del modo in cui le richieste ricevute dall'app contenitore vengono divise tra le repliche.

Screenshot del grafico delle metriche dell'app contenitore, che mostra le richieste separate per replica, in una visualizzazione ingrandita.

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.

Passaggi successivi