Come posso risolvere i problemi di scalabilità del provider di capacità Amazon ECS?
Ho impostato un provider di capacità per il mio cluster Amazon Elastic Container Service (Amazon ECS). Tuttavia, il provider di capacità non esegue le operazioni di scalabilità come previsto.
Breve descrizione
Il provider di capacità per il cluster Amazon ECS non esegue automaticamente le operazioni di scalabilità orizzontale per uno o più dei motivi seguenti:
- Il servizio Amazon ECS non è associato al provider di capacità.
- Le policy di scalabilità relative al provider di capacità non sono collegate al gruppo Auto Scaling.
- La percentuale di capacità target non è configurata in modo corretto nel provider di capacità.
- Usi la scalabilità gestita per il provider di capacità e al gruppo Auto Scaling sono collegate policy di scalabilità personalizzate.
- Il gruppo Auto Scaling ha avviato l'istanza di container, ma non può entrare a far parte del cluster.
- Le istanze di container sono protette dalla terminazione e non possono essere ridotte orizzontalmente.
- Il provider di capacità è bloccato in stato di errore.
- Il gruppo Auto Scaling è bloccato in un ciclo di aumento e riduzione di istanze.
Risoluzione
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per dimensionare i provider di capacità, completa le attività seguenti.
Il servizio Amazon ECS non è associato al provider di capacità
Per verificare che il servizio Amazon ECS sia associato al provider di capacità, esegui il comando describe-services:
aws ecs describe-services --cluster example-cluster --services example-service --region example-region --query services[].capacityProviderStrategy
Se il servizio Amazon ECS è associato al provider di capacità, l'output sarà simile all'esempio seguente:
[ [ { "capacityProvider": "example-capacity-provider", "weight": 1, "base": 1 } ] ]
Assicurati che il campo CapacityProviderStrategy non sia nullo nell'output. Per visualizzare la configurazione del servizio, esamina gli eventi AWS CloudTrail e cerca le chiamate API CreateService e UpdateService.
Per risolvere il problema, esegui il comando update-service per aggiornare il servizio Amazon ECS. Puoi anche usare la console Amazon ECS per aggiornare il servizio.
Le policy di scalabilità relative al provider di capacità non sono collegate al gruppo Auto Scaling
Quando si crea un provider di capacità e lo si associa a un gruppo Auto Scaling, il gruppo crea una policy di scalabilità. La policy utilizza il monitoraggio degli obiettivi per modificare la capacità adattandola ai carichi del cluster.
Per risolvere il problema, esamina gli eventi CloudTrail e cerca le API UpdateAutoScalingGroup, CreateCapacityProvider e UpdateCapacityProvider.
Per verificare che il gruppo Auto Scaling sia stato creato come collegamento al cluster, esegui il comando describe-clusters:
aws ecs describe-clusters --clusters example-cluster --include ATTACHMENTS --region example-region --query clusters[].attachments[]
L'output del comando sarà simile all'esempio seguente:
[ { "id": "100a23456-5f0b-4abc-b998-d6789d111a", "type": "as_policy", "status": "CREATED", "details": [ { "name": "capacityProviderName", "value": "example-capacityProvider" }, { "name": "scalingPlanName", "value": "ECSManagedAutoScalingPlan-bb60c8fa-3ed7-4808-b39c-abcdef2345" } ] } ]
Se usi una policy di scalabilità gestita, completa i passaggi seguenti per verificare se la policy è collegata al gruppo Auto Scaling:
- Apri la console Amazon ECS.
- Apri il cluster che desideri controllare.
- Scegli la scheda Infrastruttura.
- Nella scheda Provider di capacità scegli il gruppo Auto Scaling per il provider di capacità che desideri controllare. Nella console Amazon EC2 verrà visualizzata la pagina Gruppi Auto Scaling.
- Scegli la scheda Dimensionamento automatico.
- Per il Gruppo Auto Scaling, verifica che la policy di scalabilità utilizzi la metrica CapacityProviderReservation.
La percentuale di capacità target non è configurata correttamente nel provider di capacità
La metrica CloudWatch utilizza gli stessi valori di capacità target della policy di scalabilità del monitoraggio degli obiettivi gestita di Amazon ECS. Il valore della capacità target è usato per la metrica CloudWatch utilizzata nella policy di scalabilità del monitoraggio degli obiettivi gestita di Amazon ECS. Questo valore della capacità target viene rispettato nella massima misura possibile. I valori consentiti per questa metrica sono numeri interi compresi tra 1 e 100. Ad esempio, se imposti la capacità target al 100%, vengono utilizzate tutte le istanze. Tutte le istanze che non eseguono attività vengono rimosse. Per configurare capacità di riserva, imposta la capacità target su un valore inferiore al 100%, in base alle tue esigenze.
Per aggiornare il provider di capacità con la percentuale di capacità target corretta, consulta Updating an Amazon ECS capacity provider.
Il gruppo Auto Scaling ha avviato l'istanza di container, ma non può entrare a far parte del cluster
Completa i passaggi seguenti:
- Verifica le possibili cause dei problemi.
- Per verificare se un'istanza di container è associata al provider di capacità, esamina gli eventi CloudTrail e cerca le chiamate API DescribeContainerInstances.
- Per consentire l'aumento orizzontale del gruppo, imposta il valore Massimo per il gruppo Auto Scaling su un valore maggiore di zero.
Le istanze di container sono protette e non è possibile ridurle orizzontalmente
Per i provider di capacità che utilizzano la protezione dalla terminazione gestita, Amazon ECS impedisce la terminazione delle istanze Amazon EC2 che eseguono attività durante un'operazione di riduzione orizzontale. Per ulteriori informazioni, consulta Control the instances Amazon ECS terminates.
Per assicurarti che il gruppo Auto Scaling possa terminare le vecchie istanze quando modifichi la capacità desiderata, completa le attività seguenti:
- Disattiva la protezione dalla terminazione gestita per il provider di capacità.
- Disattiva la protezione dalla riduzione orizzontale delle istanze per il gruppo Auto Scaling.
Per ulteriori informazioni, consulta Come posso risolvere l'errore "L'impostazione di protezione dalla terminazione gestita per il provider di capacità non è valida" in Amazon ECS?
Il provider di capacità è bloccato in stato di errore
Quando si usa un provider di capacità, è consigliabile creare un nuovo gruppo Auto Scaling e non riutilizzare un gruppo esistente. Le istanze con stato in esecuzione associate al gruppo esistente e registrate in un cluster Amazon ECS potrebbero non venire registrate correttamente.
Per visualizzare lo stato del provider di capacità, esegui il comando describe-capacity-providers. Esamina inoltre gli eventi CloudTrail e verifica se sono presenti errori relativi all'API CreateCapacityProvider.
Il gruppo Auto Scaling è bloccato in un ciclo di aumento e riduzione di istanze
Quando il valore della metrica specificato nella policy di scalabilità del servizio Amazon ECS raggiunge un picco, il gruppo Auto Scaling inizia ad avviare nuove istanze. Tuttavia, se il valore della metrica diminuisce dopo il picco improvviso, il gruppo Auto Scaling tenta di ridurre le istanze. Se il valore della metrica oscilla più volte in breve tempo, il gruppo Auto Scaling può rimanere bloccato in un ciclo di aumento e riduzione. Per evitare questo problema, definisci il valore di soglia della metrica nella policy di scalabilità in modo che corrisponda al tuo carico di lavoro.
Informazioni correlate
Deep dive on Amazon ECS cluster auto scaling
Come posso risolvere l'errore DELETE_FAILED quando elimino il provider di capacità in Amazon ECS?
Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 anni fa