Come posso risolvere i problemi di scalabilità automatica dei servizi in Amazon ECS?

Ultimo aggiornamento: 30/03/2022

La scalabilità automatica del servizio configurato per il mio servizio Amazon Elastic Container Service (Amazon ECS) non sta riducendo o aumentando orizzontalmente il numero di attività desiderato come richiesto.

Breve descrizione

Puoi aggiornare automaticamente il numero di attività desiderato per il tuo servizio Amazon ECS integrando il servizio ECS con il servizio Application Auto Scaling e gli allarmi Amazon CloudWatch.

La scalabilità automatica del servizio potrebbe non essere in grado di aggiungere o rimuovere attività come previsto a causa di uno o più dei seguenti motivi:

  • Le policy di dimensionamento non sono configurate correttamente.
  • L'allarme CloudWatch che attiva le policy di dimensionamento viene eliminato o modificato.
  • Il formato dell'espressione cron non è specificato correttamente nell'azione pianificata.
  • Il numero di attività desiderato è stato aggiornato manualmente o tramite AWS CloudFormation o il Kit di sviluppo per il cloud AWS a un valore inferiore a quello minimo o superiore a quello massimo impostato nella scalabilità automatica del servizio.
  • Il cluster ECS non dispone di risorse o capacità sufficienti per eseguire nuove attività.

Risoluzione

Risoluzione dei problemi relativi agli allarmi e alle policy di dimensionamento di CloudWatch

Destinazione scalabile

aws application-autoscaling register-scalable-target --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-service-name --min-capacity 1 --max-capacity 10 --region example-region
  • Utilizza i seguenti comandi per recuperare informazioni sulla scalabilità automatica del servizio ECS:
aws application-autoscaling describe-scalable-targets --service-namespace ecs --region example-region 
aws application-autoscaling describe-scaling-policies --service-namespace ecs --region example-region
aws application-autoscaling describe-scaling-activities --service-namespace ecs \ 
--scalable-dimension ecs:service:DesiredCount --resource-id service/your-cluster/your-service-name --region example-region
  • Quando crei o aggiorni gli allarmi CloudWatch per la scalabilità automatica del servizio ECS, assicurati che i parametri, le dimensioni, le statistiche, il periodo, la condizione e i valori di soglia siano specificati correttamente. In caso contrario, l'avviso non viene attivato per aggiornare la policy di dimensionamento associata.

Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Dimensionamento in fasi

  • Verifica se gli allarmi CloudWatch associati alle policy di dimensionamento vengono attivati. Verifica se ci sono stati errori visualizzando la cronologia degli allarmi di CloudWatch.
  • Per le policy di dimensionamento dei passaggi, controlla se la soglia di utilizzo fuori limite, le regolazioni delle fasi e il tipo di regolazione del dimensionamento sono impostati nell'allarme CloudWatch. Se non è presente alcuna regolazione della fase corrispondente per il delta dell'utilizzo fuori limite, ovvero la soglia sottratta dal valore dei parametri, puoi visualizzare il seguente messaggio di errore nella cronologia degli allarmi: Impossibile eseguire l'operazione AutoScaling: Nessuna regolazione della fase trovata per il valore del parametro [xx, xx] e per il delta dell'utilizzo fuori limite xx
    Pertanto, assicurati che tutte le regolazioni delle fasi, che vanno da -infinito a 0 per la riduzione orizzontale e da 0 a +infinito per l'aumento orizzontale, siano coperte nelle tue policy.
    Nota: in genere, per una policy di riduzione orizzontale, nelle regolazioni delle fasi, solo il limite superiore può essere nullo (infinito positivo). Per una policy di riduzione orizzontale, solo il limite inferiore può essere nullo (infinito negativo). Per ulteriori informazioni, consulta Regolazioni delle fasi.

Dimensionamento del monitoraggio degli obiettivi

  • Poiché le policy di dimensionamento del monitoraggio degli obiettivi sono gestite da AWS, Application Auto Scaling crea allarmi CloudWatch per il dimensionamento verticale e orizzontale in base al valore o alla soglia di destinazione specificati durante la creazione di queste policy. Pertanto, non modificare o eliminare questi allarmi. La modifica o l'eliminazione di questi allarmi influisce sul comportamento di dimensionamento. Se hai modificato o eliminato questi allarmi, assicurati di ricreare nuovamente la policy di monitoraggio degli obiettivi.
  • È possibile avere più policy di dimensionamento del monitoraggio degli obiettivi per un servizio ECS purché ciascuna policy utilizzi un parametro diverso. Lo scopo di Application Auto Scaling è dare priorità alla disponibilità. Pertanto, il comportamento di queste policy varia a seconda che le policy di monitoraggio degli obiettivi siano pronte per essere dimensionate orizzontalmente o verticalmente. Application Auto Scaling aumenta orizzontalmente le attività se una qualsiasi delle policy di monitoraggio degli obiettivi è pronta per l'aumento orizzontale, ma si riduce orizzontalmente solo se tutte le policy di monitoraggio degli obiettivi (con la parte ridotta orizzontalmente abilitata) sono pronte per la riduzione orizzontale.
  • Quando più policy di dimensionamento, tra cui le policy di monitoraggio degli obiettivi e quelle di dimensionamento delle fasi, sono configurate per un servizio ECS, assicurati che non siano in conflitto. Questi conflitti potrebbero causare comportamenti indesiderati, ad esempio dimensionamenti orizzontali o verticali consecutivi, con conseguente oscillazione non necessaria del numero delle attività.

Per ulteriori informazioni, consulta Policy di dimensionamento del monitoraggio degli obiettivi per Application Auto Scaling.

Risoluzione dei problemi di espressione cron errata

Assicurati che l'espressione cron specificata nella pianificazione sia corretta nella configurazione delle operazioni pianificate per Application Auto Scaling. Il formato cron supportato da Application Auto Scaling è costituito da sei campi separati da spazi bianchi: [Minutes] [Hours] [Day_of_Month] [Month] [Day_of_Week] [Year].

Per ulteriori informazioni, consulta Esempio di operazioni pianificate per Application Auto Scaling.

Risoluzione dei problemi relativi all'aggiornamento del numero delle attività desiderato

Tieni presente quanto segue quando aggiorni manualmente o utilizzi CloudFormation o AWS CDK per aggiornare il numero delle attività desiderato per il servizio ECS:

  • Se è stato aggiornato il numero delle attività desiderato per il servizio ECS a un valore inferiore al valore di capacità minima e un allarme attiva un'attività di aumento orizzontale, il servizio Auto Scaling dimensiona il numero desiderato fino al valore di capacità minima. Quindi, la scalabilità automatica del servizio continua ad aumentare orizzontalmente secondo necessità, in base alla policy di dimensionamento associata all'allarme. Tuttavia, un'attività di riduzione orizzontale non regola il conteggio desiderato, perché il conteggio desiderato è già inferiore al valore di capacità minima.
  • Se è stato aggiornato il numero delle attività desiderato per il servizio ECS a un valore superiore al valore di capacità massima e un allarme attiva un'attività di riduzione orizzontale, il servizio Auto Scaling dimensiona il numero desiderato fino al valore di capacità massima. Quindi, il dimensionamento automatico del servizio continua a ridursi orizzontalmente come richiesto, in base alla policy di dimensionamento associata all'allarme. Tuttavia, un'attività di aumento orizzontale non regola il conteggio desiderato, perché il conteggio desiderato è già superiore al valore di capacità massima.
  • Se hai creato il tuo servizio ECS con CloudFormation o CDK senza specificare il campo DesiredCount, il numero desiderato viene impostato su un valore di default di 1. Tuttavia, quando lo stesso servizio viene aggiornato tramite CloudFormation o CDK senza specificare il campo DesiredCount, il numero desiderato esistente nell'implementazione corrente viene utilizzato per la nuova implementazione. Pertanto, quando il valore del numero desiderato viene specificato nello stack CloudFormation o nel CDK AWS, assicuati che il valore sia compreso tra i valori minimo e massimo durante l'aggiornamento del servizio.

Risoluzione dei problemi relativi alla capacità del cluster

Quando il cluster ECS non dispone di risorse sufficienti, ad esempio istanze di container Amazon Elastic Compute Cloud (Amazon EC2), per eseguire le attività, l'attività di dimensionamento avviata dalle policy di dimensionamento rimane incompiuta. In questo caso, viene registrato un messaggio di errore negli eventi del servizio. Per evitare questi problemi di capacità di Amazon EC2 e avviare le attività con successo, utilizza i fornitori di capacità di Amazon ECS per eseguire il provisioning automatico delle istanze EC2, come richiesto.

Nota: durante le attività di dimensionamento, la scalabilità automatica del servizio utilizza il numero delle attività effettivamente in esecuzione in un servizio come punto di partenza, anziché il numero desiderato. Ciò impedisce un dimensionamento eccessivo che potrebbe non essere adeguato, ad esempio, se non ci sono risorse sufficienti per l'istanza del container per inserire le attività aggiuntive. Se la capacità dellistanza di container è disponibile in seguito, l'attività di dimensionamento in sospeso potrebbe avere esito positivo. Quindi, ulteriori attività di dimensionamento continuano dopo il tempo di raffreddamento.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?