Perché il mio servizio Amazon ECS non è stabile?
Il mio servizio Amazon Elastic Container Service (Amazon ECS) si riavvia periodicamente. Desidero che il mio servizio Amazon ECS sia stabile.
Breve descrizione
Il servizio Amazon ECS può non essere stabile per uno dei seguenti motivi:
- I controlli dell'integrità del container non vengono superati.
- I controlli dell'integrità di Elastic Load Balancing (ELB) hanno esito negativo.
- Un'attività Amazon ECS esce con codici di uscita diversi da zero.
- Un'istanza di container non soddisfa i requisiti delle attività Amazon ECS.
- Un'istanza di container termina in modo imprevisto.
- Le attività Amazon ECS nel servizio non vengono avviate.
Risoluzione
Utilizza gli eventi Amazon ECS sulla console Amazon ECS per verificare perché il servizio non è stabile.
I controlli dell'integrità del container non vengono superati
Prima di distribuire l'applicazione su Amazon ECS, utilizza i controlli dell'integrità per assicurarti che il container funzioni come previsto. Se il servizio Amazon ECS non supera improvvisamente i controlli dell'integrità del container, controlla i log dell'applicazione. Se l'applicazione utilizza il driver awslogs, controlla i log in Amazon CloudWatch.
**Nota:**i parametri di controllo dell'integrità specificati nella definizione di un container sovrascrivono i controlli dell'integrità di Docker presenti nell'immagine del container.
Controlli dell’integrità di ELB non superati
I bilanciatori del carico eseguono periodicamente controlli sull'integrità dei container su ciascun server per determinare i server verso i quali è sicuro indirizzare il traffico. Quando un servizio Amazon ECS non funziona a causa dei controlli dell’integrità di ELB, potrebbe esserci un problema di comunicazione tra il bilanciatore del carico e il servizio.
Per verificare se hai configurato correttamente i bilanciatori del carico e il servizio Amazon ECS, esegui le seguenti azioni:
-
Verifica che il gruppo di sicurezza del container consenta il traffico proveniente dal bilanciatore del carico.
-
Esegui il seguente comando all'interno del container per assicurarti che l'applicazione ascolti la porta corretta:
netstat -tulpn | grep LISTEN -
Assicurati che il percorso di controllo dell’integrità sia corretto.
-
Verifica la presenza di errori nei log dell'applicazione.
-
Esegui un comando curl per il percorso di controllo dell’integrità all'interno di Amazon Elastic Compute Cloud (Amazon EC2). Oppure attiva ECS exec su AWS Fargate ed esegui un comando curl per il controllo dell’integrità all'interno del container per verificare il codice di risposta.
-
Monitora le metriche della CPU e della memoria del servizio perché un utilizzo elevato della CPU può causare la mancata risposta dell'applicazione e il mancato superamento dei controlli dell’integrità di ELB.
-
Imposta il tempo minimo di tolleranza per il controllo dell’integrità in modo che sia pari a 1,5 - 2,0 volte il tempo impiegato dall'applicazione per raggiungere lo stato ATTIVO.
Un'attività Amazon ECS esce con codici di uscita diversi da zero
Se è presente un problema in un container, le attività di Amazon ECS all'interno del servizio escono con un codice di uscita diverso da zero. Tutte le attività devono avere almeno un container essenziale. Se il container essenziale esce per qualsiasi motivo, l'intera attività ha esito negativo e il servizio Amazon ECS diventa instabile.
I seguenti codici di uscita sono i motivi per cui un'attività Amazon ECS potrebbe avere esito negativo:
- Il codice di uscita 1 viene generato quando è presente un errore dell'applicazione. Per ulteriori informazioni su questo errore, consulta i log dell'applicazione.
- I codice di uscita 137 viene generato quando l'attività è stata forzata a uscire (SIGKILL) per il container o si verifica un errore di memoria insufficiente (OOM). Per controllare se è presente un errore OOM, esamina le metriche di CloudWatch.
- Il codice di uscita 139 viene generato quando è presente un errore di segmentazione. Questo di solito accade quando l'applicazione tenta di accedere alla memoria che non è disponibile o quando è presente una variabile di ambiente non impostata o non valida.
- Il codice di uscita 255 viene generato quando il comando ENTRYPOINT CMD nel container non è riuscito a causa di un errore. Per confermare che questa sia la causa, rivedi le metriche di CloudWatch.
Nota: puoi utilizzare l'API DescribeTasks per visualizzare i dettagli di un'attività interrotta. Tuttavia, i dettagli relativi all'attività interrotta vengono visualizzati nei risultati solo per 1 ora.
Un'istanza di container non soddisfa i requisiti delle attività Amazon ECS
Per ulteriori informazioni sulla modifica dei requisiti dei container, consulta Come posso risolvere l'errore "no container instance met all of its requirements" in Amazon ECS?
Un'istanza di container termina in modo imprevisto
Se utilizzi un provider di capacità nel cluster Amazon ECS senza terminazione gestita, il provider di capacità potrebbe terminare le istanze con attività in esecuzione. Ciò accade in presenza un'azione di dimensionamento e il servizio AWS ECS diventa instabile. Attiva la protezione dalla terminazione gestita in modo che il provider di capacità non termini le istanze di container con attività in esecuzione.
Per attivare la protezione dalla terminazione gestita, devi attivare la protezione dalla riduzione orizzontale delle istanze per il gruppo Auto Scaling.
Per attivare la protezione dalla riduzione orizzontale, completa i seguenti passaggi:
- Apri la console Amazon EC2.
- Nel pannello di navigazione, scegli Gruppi Auto Scaling, quindi seleziona il gruppo Auto Scaling.
- Nella scheda Dettagli, in Configurazioni avanzate, scegli Modifica.
- In Protezione del ridimensionamento verticale dell'istanza, seleziona Abilita la protezione di scalabilità delle istanze.
- Seleziona Aggiorna.
Per attivare la protezione dalla terminazione gestita, completa i seguenti passaggi:
- Apri la console Amazon ECS.
- Nel pannello di navigazione, scegliCluster.
- Nella pagina Cluster, seleziona il cluster.
- Nella pagina Cluster : name (Cluster: nome), scegli Infrastruttura, quindi scegli ** Aggiorna**.
- Nella pagina Create capacity providers (Crea provider di capacità), in Gruppo Auto Scaling, alla voce Policy di dimensionamento, configura le seguenti opzioni:
Seleziona Turn on managed scaling (Attiva il ridimensionamento gestito).
Seleziona Turn on scaling protection (Attiva la protezione dal ridimensionamento). - Seleziona Aggiorna.
Nota: assicurati che gli altri strumenti che utilizzi non rimuovano il tag AmazonECSManaged dal gruppo Auto Scaling. Quando uno strumento rimuove il tag, Amazon ECS non è in grado di gestire il ridimensionamento.
Le attività Amazon ECS nel servizio non vengono avviate
Quando crei o aggiorni un servizio, il servizio potrebbe non essere stabile perché l'attività Amazon ECS non è in grado di estrarre l'immagine.
Per risolvere il problema, consulta i seguenti articoli di AWS Knowledge Service:
- Come posso risolvere un errore "ResourceInitializationError" quando cerco di estrarre segreti o recuperare l'autenticazione Amazon ECR per attività ECS?
- How do I resolve the "cannotpullcontainererror" error for my Amazon ECS tasks on Fargate? (Come posso risolvere l'errore "cannotpullcontainererror" per le mie attività Amazon ECS su Fargate?)
Informazioni correlate
Perché la mia attività Amazon ECS viene interrotta?
Controlla le istanze terminate da Amazon ECS
AWS service event metadata (Metadati degli eventi di un servizio AWS)
- Argomenti
- Containers
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata un anno fa