Perché il mio processo Batch AWS è bloccato nello stato RUNNABLE?

11 minuti di lettura
0

Il mio processo su Batch AWS è bloccato nello stato RUNNABLE.

Breve descrizione

Batch AWS sposta un processo allo stato RUNNABLE quando non presenta dipendenze in sospeso e può essere programmato su un host. I processi RUNNABLE si avviano non appena sono disponibili risorse sufficienti in uno degli ambienti di elaborazione mappati alla coda del processo.

Se le risorse necessarie per eseguire un processo non sono disponibili, il processo potrebbe rimanere in stato RUNNABLE a tempo indeterminato. Per ulteriori informazioni, consulta Processi bloccati nello stato RUNNABLE.

Per risolvere il problema del processo Batch AWS bloccato nello stato RUNNABLE, usa il runbook AWSSupport-TroubleshootAWSBatchJob. Quindi, fai riferimento alla sezione Output per determinare la possibile causa del problema e i passaggi per risolverlo.

Nota: Questo articolo tratta della risoluzione dei problemi per Amazon Elastic Container Service (Amazon ECS) su Amazon Elastic Compute Cloud (Amazon EC2) e Amazon ECS su AWS Fargate. Per risolvere i problemi di Batch AWS su Amazon Elastic Kubernetes Service (Amazon EKS), consulta Batch AWS su Amazon EKS.

Soluzione

Usa il runbook AWSSupport-TroubleshootAWSBatchJob SAW

Usa i Flussi di lavoro di automazione del Supporto AWS (AWS SAW) per automatizzare questo processo di risoluzione dei problemi. Per utilizzare il runbook AWSSupport-TroubleshootAWSBatchJob, vedi Come posso usare un runbook SAW per risolvere i problemi del mio processo Batch AWS bloccato nello stato RUNNABLE?

Se questo runbook non ti aiuta a identificare il problema, consulta le seguenti sezioni per risolvere manualmente il problema del processo bloccato.

Verifica che il tuo ambiente di elaborazione disponga di risorse sufficienti per eseguire il tuo processo

1.    Apri la console Batch AWS.

2.    Scegli Dashboard.

3.    Nel riquadro Panoramica della coda del processi, nella colonna RUNNABLE, scegli il processo bloccato nello stato RUNNABLE. Viene visualizzata la pagina Dettagli del processo.

4.    Nella pagina Dettagli del processo, nella sezione Container, esamina i valori per vCPU, Memoria e GPU. Questi valori sono necessari per completare i passaggi 9-10.

5.    Nella pagina Code dei processi, seleziona una coda di processi ed esamina gli ambienti di elaborazione associati, poiché qualsiasi ambiente di elaborazione potrebbe eseguire il tuo processo. Quindi, ripeti i passaggi 6-10 per ogni ambiente di elaborazione.

6.    Nella pagina Ambienti di elaborazione, seleziona un ambiente di elaborazione per esaminarne le autorizzazioni.

7.    Verifica che la colonna Stato dell'ambiente di elaborazione sia impostata su **VALIDO.**Assicurati inoltre che il ruolo di servizio che è associato all'ambiente disponga di tutte le autorizzazioni necessarie.

**Nota:**In caso di errori intermittenti o transitori, potrebbero essere necessari alcuni minuti prima che lo Stato dell'ambiente di elaborazione passi da VALIDO a NON VALIDO.

8.    Verifica che la colonna Stato sia impostata su ABILITATO.

9.    Verifica che il valore Max vCPU sia sufficientemente alto da consentire a Batch AWS di aumentare il numero di vCPU richieste per eseguire i processi.

Nota: Se utilizzi un ambiente di elaborazione AWS Fargate, consulta la sezione Verifica le impostazioni di rete e sicurezza dell'ambiente di elaborazione.

10.    Verifica che il valore vCPU richieste sia uguale o superiore al numero di vCPU che il processo deve eseguire.

Se vCPU richieste è 0, controlla la quantità di memoria e di risorse CPU disponibili per il tuo tipo di istanza Amazon EC2.

-oppure-

Se vCPU richieste è superiore a 0 o il tuo processo è ancora in stato RUNNABLE, completa i passaggi indicati nella sezione successiva.

Importante: Almeno uno dei tipi di istanza per l'ambiente di elaborazione deve avere più memoria di quella specificata dal processo. Inoltre, il tipo di istanza deve disporre di risorse della CPU uguali o superiori a quelle specificate dal processo. Se almeno un tipo di istanza non dispone di risorse di memoria o CPU sufficienti per eseguire il processo, annulla il processo. Esegui un nuovo processo che richiede meno CPU o memoria. Oppure, crea un nuovo ambiente di elaborazione con risorse sufficienti per eseguire il processo, quindi assegna il processo alla coda dei processi appropriata.

Verifica che il tuo ambiente di elaborazione contenga istanze e che le istanze siano disponibili per eseguire il tuo processo

Per l'ambiente di elaborazione che hai identificato come quello che deve eseguire il tuo processo, completa i passaggi seguenti:

1.    Apri la console Amazon ECS.

2.    Nel pannello di navigazione, scegli Cluster. Quindi, scegli il cluster che contiene il tuo processo.

Per istruzioni generali sulla risoluzione dei problemi ECS, consulta la sezione Risoluzione dei problemi di Amazon ECS.

Nota: Il nome del cluster inizia con il nome dell'ambiente di elaborazione. Questo è seguito da _Batch_ e un hash casuale di numeri e lettere.

3.    Scegli la vista Istanze ECS. Quindi, verifica che le istanze di container siano disponibili per eseguire il tuo processo.

4.    Se il cluster ha un'istanza di container disponibile per eseguire il tuo processo, controlla lo stato del daemon Docker. Quindi, controlla lo stato dell'agente container Amazon ECS.

**Nota:**Per ulteriori informazioni, consulta Come posso risolvere i problemi di un agente Amazon ECS disconnesso?

Se non ci sono istanze nel cluster Amazon ECS, verifica che le istanze possano essere create nel tuo ambiente di elaborazione. Per verificare che le istanze possano essere create, completa una delle seguenti procedure in base al tuo ambiente di elaborazione.

Per verificare che le istanze possano essere create in un ambiente di elaborazione su richiesta:

1.    Apri la console Amazon EC2.

2.    Nel riquadro di navigazione a sinistra, scegli Gruppi con dimensionamento automatico.

3.    Per Filtro, inserisci il nome del tuo ambiente di elaborazione.

**Nota:**Amazon EC2 può creare più di un gruppo con dimensionamento automatico per lo stesso ambiente di elaborazione.

4.    Per ogni gruppo con dimensionamento automatico, scegli la vista Cronologia attività. Quindi, cerca eventuali problemi di blocco.

La colonna Stato mostra Non riuscito in caso di problemi che impediscono l'avvio delle istanze.

Ad esempio, se il tuo account raggiunge il numero massimo di istanze, Amazon EC2 potrebbe restituire un messaggio simile all'esempio seguente:

Launching a new EC2 instance. Status Reason: Your quota allows for 0 more running instance(s). You requested at least 1. Launching EC2 instance failed.

L'evento include un timestamp in UTC a partire da quando hai inviato il processo:

At 2018-09-03T05:54:30Z a user request update of AutoScalingGroup constraints to min: 0, max: 1, desired: 1 changing the desired capacity from 0 to 1.
At 2018-09-03T05:54:52Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.

Nota: Batch AWS richiede istanze per tuo conto. Se modifichi manualmente i gruppi con dimensionamento automatico, il tuo ambiente di elaborazione potrebbe essere invalidato. Per ulteriori informazioni sui limiti delle istanze e su come richiedere un aumento dei limiti, consulta le Service Quotas di Amazon EC2.

5.    Se il gruppo con dimensionamento automatico mostra solo gli eventi riusciti negli eventi recenti, completa i passaggi indicati nella sezione seguente.

Importante: È necessario impostare determinate autorizzazioni per il ruolo AWS Identity and Access Management (IAM) collegato ai servizi AWS AWSServiceRoleForAutoScaling. Il ruolo IAM AWSServiceRoleForAutoScaling deve avere accesso utente almeno alla chiave del Sistema AWS di gestione delle chiavi (AWS KMS) gestita dal cliente. Ciò è necessario in ambienti con Amazon Machine Images (AMI) personalizzate, volumi Amazon Elastic Block Store (Amazon EBS) crittografati e chiavi AWS KMS gestite dal cliente. Per ulteriori informazioni, consulta le sezioni relative alle policy della chiave che consentono l'accesso alla chiave gestita dal cliente.

Per verificare che le istanze possano essere create in un ambiente di elaborazione spot:

1.    Apri la console Amazon EC2.

2.    Nel riquadro di navigazione, scegli Istanze. Quindi, scegli Richieste spot.

3.    Nel filtro, per Tipo di richiesta, scegli parco istanze.

4.    Per Stato, scegli attivo.

5.    Scegli Descrizione. Quindi, esamina il valore Capacità totale target per verificare se la richiesta dell'istanza spot è stata soddisfatta. Se non è stata creata alcuna istanza, controlla la vista Cronologia per visualizzare un messaggio che ne spieghi il motivo. Ad esempio, le richieste che non riescono a raggiungere un prezzo di offerta restituiscono un messaggio simile al seguente esempio:

m4.large, ami-aff65ad2, Linux/UNIX (Amazon VPC), us-east-1a, Spot bid price is less than Spot market price $0.0324

6.    Scegli una percentuale di offerta appropriata per il tuo ambiente di elaborazione. Assicurati di creare un nuovo ambiente di elaborazione se modifichi il prezzo dell'offerta. Per ulteriori informazioni, consulta la cronologia dei prezzi delle istanze spot.

**Nota:**Batch AWS crea richieste di serie di istanze spot per tuo conto. Evita di modificare manualmente le richieste di serie di istanze spot, altrimenti il tuo ambiente di elaborazione potrebbe essere invalidato.

7.    Se gli eventi più recenti del gruppo con dimensionamento automatico mostrano solo eventi riusciti, completa i passaggi indicati nella sezione seguente.

Verifica il ruolo IAM dell'istanza di container

1.    Apri la console Batch AWS.

2.    Nel riquadro di navigazione, scegli Ambienti di elaborazione. Quindi, scegli il tuo ambiente di elaborazione.

3.    Nella sezione Dettagli dell'ambiente di elaborazione, copia il nome del Ruolo dell'istanza.

4.    Apri la console IAM.

5.    Nella casella di ricerca, inserisci il nome del Ruolo dell'istanza. Quindi, scegli il ruolo dell'istanza tra i risultati.

6.    Scegli la scheda Autorizzazioni. Quindi, conferma che la policy gestita AmazonEC2ContainerServiceforEC2Role sia associata al ruolo. Se la policy è associata, il ruolo dell'istanza è configurato correttamente e puoi passare al passaggio 11.

7.    Scegli Collega policy.

8.    Nella casella di ricerca, inserisci AmazonEC2ContainerServiceforEC2Role.

9.    Per la policy AmazonEC2ContainerServiceforEC2Role, seleziona la casella di controllo. Quindi, scegli Collega policy.

10.    Scegli la vista Relazioni di fiducia. Quindi scegli Modifica relazione di fiducia.

11.    Conferma che la relazione di fiducia contenga la seguente policy:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

12.    Se la relazione di fiducia corrisponde alla policy dell'esempio precedente, scegli Annulla.

-oppure-

Se la relazione di fiducia non corrisponde alla policy dell'esempio precedente, copia la policy nella console Documento policy. Quindi, scegli Aggiorna policy di fiducia.

Se la tua istanza non si unisce ancora al cluster Amazon ECS, completa i passaggi indicati nella prossima sezione.

Verifica le impostazioni di rete e di sicurezza dell'ambiente di elaborazione

1.    Apri la console Batch AWS.

2.    Nel riquadro di navigazione, scegli Ambienti di elaborazione. Quindi, scegli il tuo ambiente di elaborazione.

3.    Nella sezione Risorse di elaborazione, copia i valori Sottoreti e Gruppi di sicurezza.

4.    Apri la console Amazon Virtual Private Cloud (Amazon VPC).

5.    Nel pannello di navigazione, scegli Sottoreti.

6.    Per ogni sottorete nell'ambiente di elaborazione, scegli Descrizione. Quindi, esamina i valori Assegna automaticamente indirizzi IPv4 pubblici.

Se il valore Assegna automaticamente indirizzi IPv4 pubblici è , le istanze avviate nella sottorete presenteranno le proprietà seguenti:

  • Un indirizzo IPv4 pubblico
  • Una tabella di routing con una destinazione di 0.0.0.0/0
  • Un gateway Internet impostato su Target (ad esempio: igw-1a2b3c4d)

Se il valore Assegna automaticamente indirizzi IPv4 pubblici è No, le istanze avviate nella sottorete presenteranno le proprietà seguenti:

  • Un indirizzo IPv4 privato
  • Una tabella di routing con una destinazione di 0.0.0.0/0
  • Un gateway NAT impostato su Target (ad esempio: nat-12345678901234567).

**Nota:**Per ulteriori informazioni, consulta la sezione Routing nell' Esempio: VPC con server in sottoreti private e NAT.

7.    Nel riquadro di navigazione, scegli Gruppi di sicurezza.

8.    Per ogni gruppo di sicurezza specificato nell'ambiente di elaborazione, scegli la vista Regole in uscita. Quindi, verifica che esista una regola con le seguenti impostazioni:

  • Per Tipo, scegli TUTTO il traffico.
  • Per Protocollo, scegli TUTTO.
  • Per Intervallo porte, scegli TUTTO.
  • Per Destinazione, scegli 0.0.0.0/0.

**Importante:**Se la regola non esiste, scegli Modifica. Quindi, crea la regola. Per una regola più restrittiva per il traffico in uscita, scegli HTTPS (443) per Tipo e 0.0.0.0/0 per Destinazione.

9.    Nel riquadro di navigazione, scegli ACL di rete.

10.    Scegli la lista di controllo degli accessi alla rete (ACL) del VPC.

11.    Verifica che l'ACL di rete predefinito sia configurato per consentire a tutto il traffico di entrare e uscire dalle sottoreti associate.

**Importante:**Se hai modificato l'ACL, aggiungi una regola che consenta il traffico HTTPS IPv4 in uscita dalla sottorete a Internet. Per ulteriori informazioni, consulta Controlla il traffico verso le istanze EC2 utilizzando gruppi di sicurezza e Controllare il traffico verso le sottoreti con ACL di rete. Per modificare il VPC, le sottoreti o i gruppi di sicurezza, crea un nuovo ambiente di elaborazione.

Se la tua istanza non si unisce ancora al cluster Amazon ECS, connettiti alla tua istanza. Controlla lo stato del daemon Docker e dell'agente container Amazon ECS.

**Nota:**Le procedure descritte in questo articolo non coprono tutte le possibili cause principali e i modi per risolverle. Per un'ulteriore risoluzione dei problemi per un processo Batch AWS bloccato nello stato RUNNABLE, usa AWS CloudTrail. Cerca gli eventi con l'attributo Username impostato su aws-batch per analizzare gli errori che si verificano durante le attività pianificate.

Informazioni correlate

Connessione all'istanza Linux

Connessione all'istanza Windows

AWS UFFICIALE
AWS UFFICIALEAggiornata 6 mesi fa