Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si ospitano app Durable Task SDK in App contenitore di Azure, è possibile configurare la scalabilità automatica in modo che la piattaforma regola automaticamente il numero di repliche in base all'orchestrazione, all'attività o al carico di lavoro dell'entità.
In questo articolo vengono illustrate le operazioni seguenti:
- Impostare il numero minimo e massimo di repliche per l'applicazione del contenitore.
- Aggiungere regole di scalabilità che rispondono agli elementi di lavoro di Durable Task Scheduler.
- Implementare e verificare un esempio di scalabilità automatica utilizzando Azure CLI per sviluppatori.
Annotazioni
La scalabilità automatica è supportata per le app compilate usando gli SDK per attività permanenti e ospitate nelle app azure container. Questa funzionalità usa il azure-durabletask-scheduler scaler KEDA.
Importante
L'impostazione minReplicas su 0 abilita la scalabilità su zero, che consente di risparmiare sui costi quando sono inattivi ma introduce la latenza di avvio a freddo all'arrivo di nuovi elementi di lavoro. Impostare minReplicas su 1 o superiore se il carico di lavoro è sensibile alla latenza.
Configurare l'autoscaler
È possibile impostare la configurazione della scalabilità automatica tramite il portale di Azure, un modello di Bicep e il interfaccia della riga di comando di Azure.
Nel portale di Azure passare all'app contenitore.
Nel menu a sinistra selezionare Applicazione>Scala.
Imposta i valori Repliche minime e Repliche massime per la revisione.
Selezionare Aggiungi per creare una nuova regola di scalabilità. Impostare Tipo su Custom e configurare i campi dello Scheduler di Attività Durevoli.
Verifica che la casella di controllo Autentica con un'identità gestita sia selezionata e scegli l'identità collegata alla tua risorsa dello scheduler e al task hub.
Seleziona Salva.
| Campo | Descrizione | Esempio |
|---|---|---|
| Numero minimo di repliche | Numero minimo di repliche consentite per la revisione del contenitore in qualsiasi momento. | 1 |
| Numero massimo di repliche | Numero massimo di repliche consentite per la revisione del contenitore in un determinato momento. | 10 |
| endpoint | Endpoint del pianificatore di attività durevole a cui si connette lo scaler. | https://dts-ID.centralus.durabletask.io |
| maxConcurrentWorkItemsCount | Numero massimo di elementi di lavoro che una singola replica elabora contemporaneamente. Valori più bassi fanno sì che il scaler aggiunga repliche più presto. Iniziare con 1 per il lavoro a elevato utilizzo della CPU; aumentare per i carichi di lavoro associati a I/O. |
1 |
| taskhubName | Nome dell'hub attività connesso al pianificatore. | taskhub-ID |
| Tipo di elemento di lavoro | Tipo di elemento di lavoro inviato. Le opzioni includono Orchestration, Activity, o Entity. |
Orchestration |
| Identità gestita | Identità gestita assegnata dall'utente o dal sistema collegata al pianificatore e alla risorsa dell'hub attività. | /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME> |
Esercitazione: Distribuire un'app contenitore con scalabilità automatica
La scalabilità automatica è già stata configurata in un'app esistente? È possibile ignorare questa sezione. Per una procedura dettagliata pratica, segui i passaggi riportati di seguito per distribuire Autoscaling nell'esempio App contenitore di Azure usando la CLI di Azure Developer. L'esempio distribuisce un'app .NET Durable Task SDK che usa il modello di concatenamento delle funzioni e include un scaler KEDA preconfigurato.
Annotazioni
Anche se questo esempio usa Durable Task .NET SDK, la scalabilità automatica è indipendente dal linguaggio.
Prerequisiti
- .NET 8 SDK o versione successiva
- Docker (per la compilazione dell'immagine)
- CLI per sviluppatori di Azure
Configurazione dell'ambiente
Clonare la directory
Azure-Samples/Durable-Task-Scheduler.git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.gitEseguire l'autenticazione con Azure usando l'interfaccia della riga di comando per sviluppatori di Azure.
azd auth login
Distribuire la soluzione usando l'interfaccia della riga di comando per sviluppatori di Azure
Accedere alla directory
AutoscalingInACAdi esempio.cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACAInizializzare l'ambiente dell'interfaccia della riga di comando per sviluppatori Azure (è necessaria solo la prima volta):
azd initEffettuare il provisioning delle risorse e distribuire l'applicazione:
azd upQuando richiesto nel terminale, specificare i parametri seguenti.
Parametro Descrizione Nome dell'ambiente Prefisso per il gruppo di risorse creato per contenere tutte le risorse Azure. Località di Azure La posizione di Azure per le tue risorse. Sottoscrizione di Azure La sottoscrizione Azure per le tue risorse. Questo processo può richiedere del tempo. Al termine del comando
azd up, l'output dell'interfaccia a riga di comando visualizza due collegamenti al portale di Azure per controllare il progresso della distribuzione. L'output illustra anche comeazd up:- Crea e configura tutte le risorse Azure necessarie tramite i file di Bicep forniti nella directory
./infrausandoazd provision. Dopo il provisioning tramite Azure Developer CLI, è possibile accedere a queste risorse tramite il portale di Azure. I file che effettuano il provisioning delle risorse Azure includono:main.parameters.jsonmain.bicep- Una directory delle risorse
apporganizzata in base alle funzionalità - Libreria di riferimento
coreche contiene i moduli Bicep usati dai modelliazd
- Distribuisce il codice usando
azd deploy
Output previsto
Packaging services (azd package) (✓) Done: Packaging service client - Image Hash: {IMAGE_HASH} - Target Image: {TARGET_IMAGE} (✓) Done: Packaging service worker - Image Hash: {IMAGE_HASH} - Target Image: {TARGET_IMAGE} Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time. Subscription: SUBSCRIPTION_NAME (SUBSCRIPTION_ID) Location: West US 2 You can view detailed progress in the Azure portal: https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%SUBSCRIPTION_ID%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2FCONTAINER_APP_ENVIRONMENT (✓) Done: Resource group: GENERATED_RESOURCE_GROUP (1.385s) (✓) Done: Virtual Network: VNET_ID (862ms) (✓) Done: Container Apps Environment: GENERATED_CONTAINER_APP_ENVIRONMENT (54.125s) (✓) Done: Container Registry: GENERATED_REGISTRY (1m27.747s) (✓) Done: Container App: SAMPLE_CLIENT_APP (21.39s) (✓) Done: Container App: SAMPLE_WORKER_APP (24.136s) Deploying services (azd deploy) (✓) Done: Deploying service client - Endpoint: https://SAMPLE_CLIENT_APP.westus2.azurecontainerapps.io/ (✓) Done: Deploying service worker - Endpoint: https://SAMPLE_WORKER_APP.westus2.azurecontainerapps.io/ SUCCESS: Your up workflow to provision and deploy to Azure completed in 10 minutes 34 seconds.- Crea e configura tutte le risorse Azure necessarie tramite i file di Bicep forniti nella directory
Confermare la corretta distribuzione
Nel portale di Azure verificare che le orchestrazioni siano in esecuzione correttamente.
Copiare il nome del gruppo di risorse dall'output del terminale.
Accedere al portale di Azure e cercare il nome del gruppo di risorse.
Nella pagina delle informazioni generali del gruppo di risorse, fare clic sulla risorsa relativa all'app contenitore cliente.
Selezionare Monitoraggio>Flusso di log.
Verificare che il contenitore client registri le attività di concatenamento delle funzioni.
Screenshot del flusso di log del container client nel portale di Azure.
Tornare alla pagina del gruppo di risorse per selezionare il
workercontenitore.Selezionare Monitoraggio>Flusso di log.
Verificare che il contenitore del ruolo di lavoro registri le attività di concatenamento delle funzioni.
Informazioni sul scaler personalizzato
Questo esempio include un azure.yaml file di configurazione. Quando hai eseguito azd up, hai distribuito l'intera soluzione di esempio in Azure, incluso uno scalatore personalizzato per le applicazioni container che si ridimensionano automaticamente in base al carico di lavoro dello Scheduler di Attività Durable.
Scaler personalizzato:
- monitora il numero di orchestrazioni in sospeso nell'hub attività.
- Aumenta il numero di repliche dei lavoratori con l'aumentare del carico di lavoro.
- Riduce le prestazioni quando il carico diminuisce.
- Fornisce un utilizzo efficiente delle risorse associando la capacità alla domanda.
Verificare la configurazione del scaler
Verificare che la scalabilità automatica funzioni correttamente nella soluzione distribuita.
Nel portale di Azure passare all'app di lavoro.
Dal menu a sinistra, selezionare Applicazione>Revisioni e repliche.
Selezionare la scheda Repliche per verificare se l'applicazione stia scalando.
Nel menu a sinistra, selezionare Applicazione>Scala.
Selezionare il nome della regola di scalabilità per visualizzare le impostazioni del ridimensionatore.