Come posso risolvere i problemi di dimensionamento con il mio fornitore di capacità Amazon ECS?

10 minuti di lettura
0

Ho creato un fornitore di capacità per il mio cluster Amazon Elastic Container Service (Amazon ECS). Tuttavia, il fornitore di capacità non aumenta orizzontalmente quando il cluster esaurisce le risorse o non si riduce orizzontalmente quando la capacità è impegnata in misura minore.

Breve descrizione

Il fornitore di capacità per il cluster Amazon ECS non aumenta o si riduce orizzontalmente in modo automatico per uno o più dei seguenti motivi:

  • Il servizio Amazon ECS non è associato al fornitore di capacità.
  • Le policy di dimensionamento relative al fornitore di capacità non sono collegate al gruppo Auto Scaling.
  • Le policy di dimensionamento con monitoraggio degli obiettivi non sono configurate correttamente.
  • La percentuale di capacità obiettivo non è configurata correttamente nel fornitore di capacità.
  • La strategia di collocamento delle attività non è definita in base al carico di lavoro.
  • Il servizio ECS sta fallendo con alcuni errori e sta bloccando il dimensionamento del fornitore di capacità.
  • Stai utilizzando la scalabilità gestita per il fornitore di capacità e al gruppo Auto Scaling sono associate policy di dimensionamento personalizzate.
  • Il gruppo Auto Scaling ha avviato l'istanza di container, ma non è in grado di entrare a far parte del cluster.
  • Le istanze di container sono protette dal dimensionamento.
  • Il fornitore di capacità è bloccato in uno stato di errore.
  • Il gruppo Auto Scaling è bloccato in un ciclo di dimensionamento (aumento e riduzione) orizzontale.

Risoluzione

Il servizio Amazon ECS non è associato al fornitore di capacità

Per verificare se il servizio ECS è associato al fornitore di capacità, esegui il comando describe-services di AWS Command Line Interface (AWS CLI).

aws ecs describe-services --cluster example-cluster --services example-service --region example-region --query services[].capacityProviderStrategy

Se il servizio ECS è associato al fornitore di capacità, l'output deve essere simile al seguente:

[
  [
    {
      "capacityProvider": "example-capacity-provider",
      "weight": 1,
      "base": 1
    }
  ]
]

Assicurati che il campo CapacityProviderStrategy non sia nullo nell'output. Puoi visualizzare la configurazione del servizio esaminando gli eventi AWS CloudTrail per le chiamate API CreateService e UpdateService.

Per risolvere questo problema, aggiorna il servizio ECS utilizzando i comandi di AWS CLI update-service, run-task o put-cluster-capacity-providers. Puoi anche aggiornare il servizio utilizzando la console Amazon ECS.

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

Le policy di dimensionamento relative al fornitore di capacità non sono collegate al gruppo Auto Scaling

Quando un fornitore di capacità viene creato e associato a un gruppo Auto Scaling, il gruppo Auto Scaling crea una policy di dimensionamento che utilizza il monitoraggio degli obiettivi per modificare la capacità desiderata per gestire i carichi del cluster.

Per risolvere questo problema, esamina gli eventi CloudTrail per le API UpdateAutoScalingGroup, CreateCapacityProvider, UpdateCapacityProvider e PutScalingPolicy.

Verifica che il gruppo Auto Scaling sia stato creato come elemento collegato al cluster eseguendo il seguente comando:

aws ecs describe-clusters --clusters example-cluster --include ATTACHMENTS --region example-region --query clusters[].attachments[]

L'output del comando deve essere simile al seguente:

[
  {
    "id": "100a23456-5f0b-4abc-b998-d6789d111a",
    "type": "asp",
    "status": "CREATED",
    "details": [
      {
        "name": "capacityProviderName",
        "value": "example-capacityProvider"
      },
      {
        "name": "scalingPlanName",
        "value": "ECSManagedAutoScalingPlan-bb60c8fa-3ed7-4808-b39c-abcdef2345"
      }
    ]
  }
]

Se utilizzi una policy di dimensionamento gestita, verifica se la policy è collegata al gruppo Auto Scaling effettuando le seguenti operazioni:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, scegli Clusters (Cluster).
  3. Scegli il cluster che vuoi controllare.
  4. Scegli la scheda Capacity Providers (Fornitori di capacità).
  5. Per il fornitore di capacità che desideri controllare, scegli il gruppo Auto Scaling.
    Verrai indirizzato alla pagina Auto Scaling groups (Gruppi Auto Scaling) nella console Amazon EC2.
  6. Scegli la scheda Automatic Scaling (Scalabilità automatica).
    È possibile visualizzare le policy di dimensionamento.
  7. Verifica se la policy di dimensionamento che stai utilizzando è inclusa.

Inoltre, assicurati di includere il prefisso AutoScaling-ECSManagedAutoScalingPlan nel nome della policy di dimensionamento del gruppo Auto Scaling. In caso contrario, il gruppo Auto Scaling utilizza una policy di dimensionamento diversa da quella gestita dal fornitore di capacità. Nota: i fornitori di capacità possono essere utilizzati insieme ad altri tipi di policy di dimensionamento. Per ulteriori informazioni, consulta la sezione Scalabilità automatica dei servizi.

Le policy di dimensionamento con monitoraggio degli obiettivi non sono configurate correttamente

Una policy di dimensionamento con monitoraggio degli obiettivi tiene traccia di un valore obiettivo per il parametro definito. La scalabilità automatica del servizio Amazon ECS crea e gestisce allarmi Amazon CloudWatch che attivano la policy di dimensionamento e calcola la regolazione del dimensionamento in base al parametro e al valore obiettivo. Se la policy di monitoraggio degli obiettivi non è configurata correttamente, le attività potrebbero non dimensionarsi automaticamente in base alle esigenze.

Supponiamo che la policy di dimensionamento automatico con monitoraggio degli obiettivi stia monitorando il parametro di utilizzo della CPU in CloudWatch e che tu specifichi una percentuale di monitoraggio degli obiettivi pari a 60. In questo caso, il fornitore di capacità lavora sulla base del massimo sforzo per mantenere l'utilizzo aggregato della CPU al 60%. Ciò si traduce in un evento di aumento orizzontale quando l'utilizzo della CPU è superiore al 60% e in una riduzione orizzontale nel caso in cui l'utilizzo sia inferiore al 60%.

Per risolvere questo problema, scegli il parametro corretto e imposta i valori di riduzione e aumento orizzontali corretti nella policy di monitoraggio degli obiettivi in base al tuo carico di lavoro. Per ulteriori informazioni, consulta la sezione Policy di dimensionamento con monitoraggio degli obiettivi.

La percentuale di capacità obiettivo non è configurata correttamente nel fornitore di capacità

Il valore della capacità obiettivo viene utilizzato come valore obiettivo per il parametro CloudWatch utilizzato nella policy di dimensionamento con monitoraggio degli obiettivi gestita da Amazon ECS. Questo valore di capacità obiettivo viene raggiunto sulla base del massimo impegno. I valori consentiti per questo valore sono numeri interi compresi tra 1 e 100. Ad esempio, se imposti la capacità obiettivo al 100%, vengono utilizzate tutte le istanze e tutte le istanze che non eseguono attività vengono ridotte orizzontalmente. Tuttavia, questo comportamento non è sempre garantito. Se hai bisogno di capacità inutilizzata, imposta la capacità obiettivo su un valore leggermente inferiore al 100% in base alle tue esigenze.

Per aggiornare il fornitore di capacità con la percentuale di capacità obiettivo corretta, segui le istruzioni riportate in Aggiornamento di un fornitore di capacità di gruppo Auto Scaling utilizzando la console classica.

La strategia di collocamento delle attività non è definita in base al carico di lavoro

Le strategie di collocamento delle attività possono essere specificate quando crei un servizio o esegui un'attività. Inoltre, puoi aggiornare le strategie di collocamento delle attività per i servizi esistenti. Ad esempio, se il carico di lavoro richiede molta memoria e la strategia di collocamento delle attività non è stata configurata di conseguenza, le attività non vengono ridotte orizzontalmente in base all'utilizzo della memoria. Assicurati di controllare i tipi di strategia di collocamento delle attività e definisci queste strategie in base al tuo carico di lavoro.

Il servizio ECS non riesce con alcuni errori e sta bloccando il dimensionamento del fornitore di capacità

Se il servizio ECS non riesce con errori, il dimensionamento orizzontale del fornitore di capacità è bloccato. Per risolvere il motivo per cui il servizio ECS non è riuscito, controlla i messaggi degli eventi del servizio nella console Amazon ECS.

Stai utilizzando la scalabilità gestita per il fornitore di capacità e al gruppo Auto Scaling sono associate policy di dimensionamento personalizzate

Quando il cluster non viene dimensionato automaticamente, è possibile che venga visualizzato il seguente errore:

"StatusCode": "ActiveWithProblems"
"StatusMessage": "Scaling plan has been created but failed to be applied to all resources. Problems were encountered for 1 resource. See scaling plan resources for the failure details."

Questo errore viene visualizzato quando si verificano entrambe le seguenti condizioni:

  • Stai utilizzando la scalabilità gestita da AWS per il fornitore di capacità.
  • Il gruppo Auto Scaling ha policy di dimensionamento personalizzate che non sono state create da elementi Amazon ECS collegati.

Per risolvere questo errore, consulta la sezione Evitare l'errore ActiveWithProblems. Quando abiliti la scalabilità gestita, Amazon ECS gestisce le operazioni di dimensionamento orizzontale del gruppo Auto Scaling con i piani di dimensionamento Auto Scaling. Come best practice, è consigliabile creare sempre un nuovo gruppo Auto Scaling e collegare questo gruppo al fornitore di capacità.

Il gruppo Auto Scaling ha avviato l'istanza di container, ma non è in grado di entrare a far parte del cluster

Le istanze di container sono protette dalla riduzione orizzontale

Se hai abilitato la protezione da terminazione gestita durante la configurazione del fornitore di capacità, Amazon ECS impedisce che le istanze Amazon EC2 in un gruppo Auto Scaling che contengono attività vengano terminate durante un'operazione di dimensionamento.

Per assicurarti che il gruppo Auto Scaling possa terminare le vecchie istanze quando modifichi la capacità desiderata, esegui le seguenti operazioni:

Per ulteriori informazioni, consulta la sezione In che modo è possibile risolvere l'errore "The managed termination protection setting for the capacity provider is invalid" (L'impostazione di protezione da terminazione per il fornitore di capacità non è valida) in Amazon ECS?

Il fornitore di capacità è bloccato in uno stato di errore

Come best practice, è consigliabile creare un nuovo gruppo Auto Scaling da utilizzare con il fornitore di capacità anziché utilizzare un gruppo esistente. Se utilizzi un gruppo Auto Scaling esistente, è possibile che si verifichino problemi nell'utilizzo del fornitore di capacità. Ciò è dovuto al fatto che le istanze Amazon EC2 nello stato di esecuzione associate al gruppo esistente e registrate in un cluster Amazon ECS potrebbero non essere registrate correttamente presso il fornitore di capacità.

Per vedere lo stato del fornitore di capacità, esegui il comando di AWS CLI describe-capacity-providers.

Inoltre, esamina gli eventi CloudTrail e verifica la presenza di errori relativi all'API CreateCapacityProvider.

Il gruppo Auto Scaling è bloccato in un ciclo di dimensionamento (aumento e riduzione) orizzontale

Quando il valore del parametro specificato nella policy di dimensionamento per il servizio ECS aumenta, il gruppo Auto Scaling aumenta orizzontalmente e avvia le istanze secondo necessità. Tuttavia, se il valore del parametro scende dopo il picco improvviso, il gruppo Auto Scaling tenta di ridurre orizzontalmente le istanze. Se il valore del parametro oscilla più volte in un breve lasso di tempo, il gruppo Auto Scaling potrebbe rimanere bloccato in un ciclo di dimensionamento orizzontale. Per evitare questo problema, assicurati di definire il valore di soglia del parametro nella policy di dimensionamento in base al tuo carico di lavoro.


Informazioni correlate

Approfondimento sulla scalabilità automatica dei cluster Amazon ECS

Come posso risolvere gli errori relativi ai fornitori di capacità in Amazon ECS?

Fornitori di capacità di AWS Fargate

Fornitori di capacità del gruppo Auto Scaling

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa