Share via


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)

  1. Accedere al portale di Azure.
  2. Nella barra di ricerca nella parte superiore immettere my-container-app.
  3. Nei risultati della ricerca, in Risorse selezionare my-container-app.
  4. Nella barra di spostamento a sinistra espandere Applicazione e selezionare Ridimensiona e repliche.
  5. Nella pagina Scalabilità e repliche selezionare Repliche.
  6. L'app contenitore ha ora 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 suddivisione.

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

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

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

  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 suddivise per replica, con una scalabilità di 30 minuti e 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 suddivise 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

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.

Passaggi successivi