¿Por qué se ha bloqueado mi trabajo de AWS Batch en estado EJECUTABLE?

12 minutos de lectura
0

Mi trabajo de AWS Batch está bloqueado en estado EJECUTABLE.

Breve descripción

AWS Batch pasa un trabajo al estado EJECUTABLE cuando no tiene dependencias pendientes y está listo para programarse en un host. Los trabajos EJECUTABLES se inician en cuanto haya suficientes recursos disponibles en uno de los entornos informáticos asignados a la cola de trabajos.

Si los recursos necesarios para ejecutar un trabajo no están disponibles, el trabajo puede permanecer en estado EJECUTABLE indefinidamente. Para obtener más información, consulte Jobs stuck in a RUNNABLE status.

Para solucionar los problemas de bloqueo de trabajos de AWS Batch en estado EJECUTABLE, utilice el runbook AWSSupport-TroubleshootAWSBatchJob. Luego consulte la sección Salidas para averiguar la posible causa del problema y los pasos para solucionarlo.

Nota: Este artículo aborda la solución de problemas de Amazon Elastic Container Service (Amazon ECS) en Amazon Elastic Compute Cloud (Amazon EC2) y Amazon ECS en AWS Fargate. Para solucionar problemas de AWS Batch en Amazon Elastic Kubernetes Service (Amazon EKS), consulte AWS Batch on Amazon EKS.

Solución

Utilización del runbook de SAW AWSSupport-TroubleshootAWSBatchJob

Utilice los flujos de trabajo de automatización de AWS Support (AWS SAW) para automatizar este proceso de solución de problemas. Para usar el runbook AWSSupport-TroubleshootAWSBatchJob, consulte How can I use a SAW runbook to troubleshoot my AWS Batch job stuck in the RUNNABLE status?

Si este runbook no le ayuda a identificar el problema, consulte las siguientes secciones para solucionar el bloqueo del trabajo manualmente.

Verificación de si el entorno informático tiene suficientes recursos para ejecutar el trabajo

1.    Abra la consola de AWS Batch.

2.    Seleccione Panel.

3.    En el panel Información general sobre la cola de trabajos, en la columna EJECUTABLE, elija el trabajo bloqueado en estadoEJECUTABLE. Aparecerá la página Detalles del trabajo.

4.    En la página Detalles del trabajo, en la sección Contenedor, revise los valores de vCPUs, Memoria y GPUs. Necesitará estos valores para completar los pasos 9 a 10.

5.    En la página Colas de trabajo, seleccione una cola de trabajo y revise los entornos informáticos asociados, ya que cualquier entorno informático puede ejecutar su trabajo. A continuación, repita los pasos 6 a 10 para cada entorno informático.

6.    En la página Entornos informáticos, seleccione un entorno informático para revisar sus permisos.

7.    Compruebe que la columna Estado del entorno informático tenga el valor VÁLIDO. Asegúrese también de que el rol de servicio asociado al entorno tenga todos los permisos necesarios.

Nota: Si se producen errores intermitentes o transitorios, es posible que el estado del entorno informático tarde unos minutos en cambiar de VÁLIDO a NO VÁLIDO.

8.    Compruebe que la columna Estado tenga el valor HABILITADO.

9.    Compruebe que el valor Máx. de CPU virtuales sea lo suficientemente alto como para permitir que AWS Batch aumente la cantidad de CPU virtuales deseadas para ejecutar los trabajos.

Nota: Si utiliza un entorno informático de AWS Fargate, consulte la sección Verificación de la configuración de redes y seguridad del entorno informático.

10.    Compruebe que el valor de las CPU virtuales deseadas sea igual o superior a la cantidad de vCPU que el trabajo necesita para ejecutarse.

Si las CPU virtuales deseadas son 0, compruebe la cantidad de memoria y recursos disponibles en la CPU para su tipo de instancia de Amazon EC2.

Alternativa:

Si el valor de CPU virtuales deseadas es superior a 0 o su trabajo sigue en estadoEJECUTABLE, siga los pasos de la siguiente sección.

Importante: Al menos uno de los tipos de instancias de su entorno informático debe tener más memoria de la que especifica el trabajo. Además, el tipo de instancia debe tener recursos de CPU iguales o superiores a los especificados en el trabajo. Si algún tipo de instancia no tiene suficiente memoria o recursos de CPU para ejecutar su trabajo, cancele el trabajo. A continuación, ejecute un nuevo trabajo que requiera menos CPU o memoria. Como alternativa, puede crear un nuevo entorno informático con recursos suficientes para ejecutar el trabajo y, a continuación, asignar el trabajo a la cola de trabajos correspondiente.

Comprobación de si el entorno informático tiene instancias y estas están disponibles para ejecutar el trabajo

En el entorno informático que identificó como el que debe ejecutar su trabajo, siga estos pasos:

1.    Abra la consola de Amazon ECS.

2.    En el panel de navegación, seleccione Clústeres. A continuación, elija el clúster que contiene su trabajo.

Si desea instrucciones generales para solucionar problemas de ECS, consulte Amazon ECS troubleshooting.

Nota: El nombre del clúster comienza por el nombre del entorno informático. A esto le sigue _Batch_ y un hash aleatorio de números y letras.

3.    Elija la vista Instancias de ECS. A continuación, compruebe que las instancias del contenedor estén disponibles para ejecutar su trabajo.

4.    Si el clúster tiene una instancia de contenedor disponible para ejecutar su trabajo, compruebe el estado del daemon de Docker. A continuación, compruebe el estado del agente de contenedores de Amazon ECS.

Nota: Para obtener más información, consulte How do I troubleshoot a disconnected Amazon ECS agent?

Si no hay instancias en el clúster de Amazon ECS, compruebe si se pueden crear instancias en su entorno informático. Para ello, complete uno de los siguientes procedimientos en función de su entorno informático.

Para comprobar si sus instancias se pueden crear en un entorno informático bajo demanda, siga estos pasos:

1.    Abra la consola de Amazon EC2.

2.    En el panel de navegación de la izquierda, elija Grupos de Auto Scaling.

3.    En Filtrar, introduzca el nombre de su entorno informático.

Nota: Amazon EC2 puede crear más de un grupo de escalamiento automático para el mismo entorno informático.

4.    Para cada grupo de escalamiento automático, seleccione la vista Historial de actividad. A continuación, busque cualquier problema de bloqueo.

En la columna Estado se indica No se ha realizado correctamente si hay algún problema que bloquea el lanzamiento de las instancias.

Por ejemplo, si su cuenta alcanza el número máximo de instancias, es posible que Amazon EC2 devuelva un mensaje similar al siguiente:

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.

El evento incluye una marca temporal en UTC que corresponde al momento en que envió el trabajo:

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: AWS Batch solicita instancias en su nombre. Si modifica los grupos de escalamiento automático manualmente, es posible que su entorno informático deje de ser válido. Para obtener más información sobre los límites de instancias y cómo solicitar un aumento del límite, consulte Cuotas de servicio de Amazon EC2.

5.    Si los eventos recientes que se muestran en el grupo de escalamiento automático son todos correctos, complete los pasos de la siguiente sección.

Importante: Se deben configurar ciertos permisos para el rol de AWS Identity and Access Management (IAM) vinculado al servicio AWSServiceRoleForAutoScaling. El rol de IAM AWSServiceRoleForAutoScaling debe tener, como mínimo, acceso de usuario a la clave de AWS Key Management Service (AWS KMS) administrada por el cliente. Esto es necesario en entornos con imágenes de máquina de Amazon (AMI) personalizadas, volúmenes cifrados de Amazon Elastic Block Store (Amazon EBS) y claves de AWS KMS administradas por el cliente. Para obtener más información, consulte Key policy sections that allow access to the customer managed key.

Para comprobar si sus instancias se pueden crear en un entorno informático de spot, siga estos pasos:

1.    Abra la consola de Amazon EC2.

2.    En el panel de navegación, seleccione Instancias. A continuación, seleccione Solicitudes de spot.

3.    En el filtro, en Tipo de solicitud, elija Flota.

4.    En Estado, elija Activo.

5.    Elija Descripción. A continuación, revise el valor de Capacidad de destino total para ver si se ha cumplido la solicitud de instancia de spot. Si no se creó ninguna instancia, consulte la vista Historial para ver un mensaje de explicación. Por ejemplo, las solicitudes que no pueden alcanzar el precio de oferta devuelven un mensaje similar al siguiente:

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

6.    Elija un porcentaje de oferta adecuado para su entorno informático. Asegúrese de crear un nuevo entorno informático si cambia el precio de la oferta. Para obtener más información, consulte Historial de precios de instancias de spot.

Nota: AWS Batch crea solicitudes de flota de spot en su nombre. Evite modificar las solicitudes de flota de spot manualmente; en caso contrario, su entorno informático podría dejar de ser válido.

7.    Si en los eventos más recientes del grupo de escalamiento automático solo se muestran eventos correctos, complete los pasos de la siguiente sección.

Verificación del rol de IAM de la instancia de contenedor

1.    Abra la consola de AWS Batch.

2.    En el panel de navegación, seleccione Entornos informáticos. A continuación, elija su entorno informático.

3.    En la sección Detalles del entorno informático, copie el nombre en Rol de instancia.

4.    Abra la consola de IAM.

5.    En el cuadro de búsqueda, introduzca el nombre del rol de instancia. A continuación, elija su rol de instancia de entre los resultados.

6.    Seleccione la vista Permisos. A continuación, confirme si la política administrada de AmazonEC2ContainerServiceforEC2Role está asociada al rol. Si lo está, entonces su rol de instancia está configurado correctamente y puede pasar al paso 11.

7.    Elija Asociar políticas.

8.    En el cuadro de búsqueda, introduzca AmazonEC2ContainerServiceforEC2Role.

9.    Marque la casilla de la política AmazonEC2ContainerServiceforEC2Role. A continuación, elija Asociar política.

10.    Elija la vista Relaciones de confianza. A continuación, seleccione Editar la relación de confianza.

11.    Confirme si la relación de confianza contiene la siguiente política:

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

12.    Si la relación de confianza coincide con la política del ejemplo anterior, elija Cancelar.

Alternativa:

Si la relación de confianza no coincide con la política del ejemplo anterior, copie la política en la consola Documento de política. A continuación, seleccione Actualizar la política de confianza.

Si su instancia sigue sin unirse al clúster de Amazon ECS, complete los pasos de la siguiente sección.

Verificación de la configuración de redes y seguridad del entorno informático

1.    Abra la consola de AWS Batch.

2.    En el panel de navegación, seleccione Entornos informáticos. A continuación, elija su entorno informático.

3.    En la sección Recursos informáticos, copie los valores de Subredes y Grupos de seguridad.

4.    Abra la consola de Amazon Virtual Private Cloud (Amazon VPC).

5.    En el panel de navegación, elija Subredes.

6.    Para cada subred del entorno informático, elija Descripción. A continuación, revise los valores de Asignar automáticamente la dirección IPv4 pública.

Si el valor de Asignar automáticamente la dirección IPv4 pública es , las instancias lanzadas en la subred tendrán estas propiedades:

  • Una dirección IPv4 pública
  • Una tabla de enrutamiento con un destino de enrutamiento de 0.0.0.0/0
  • Una puerta de enlace de Internet configurada como Destino (por ejemplo: igw-1a2b3c4d)

Si el valor de Asignar automáticamente la dirección IPv4 pública es No, las instancias lanzadas en la subred tendrán estas propiedades:

  • Una dirección IPv4 privada
  • Una tabla de enrutamiento con un destino de enrutamiento de 0.0.0.0/0
  • Una puerta de enlace NAT configurada como Destino (por ejemplo: nat-12345678901234567)

Nota: Para obtener más información, consulte la sección Enrutamiento en Ejemplo: una VPC con servidores en subredes privadas y NAT.

7.    En el panel de navegación, seleccione Grupos de seguridad.

8.    Para cada grupo de seguridad especificado en el entorno informático, elija la vista Reglas de salida. A continuación, compruebe si existe una regla con la siguiente configuración:

  • En Tipo, elija TODO el tráfico.
  • En Protocolo, elija TODOS.
  • En Rango de puertos, elija TODOS.
  • En Destino, elija 0.0.0.0/0.

Importante: Si la regla no existe, elija Editar. A continuación, cree la regla. Para obtener una regla más restrictiva respecto al tráfico de salida, elija HTTPS (443) en Tipo y 0.0.0.0/0 en Destino.

9.    En el panel de navegación, seleccione ACL de red.

10.    Elija la lista de control de acceso de la red (ACL de la red) de la VPC.

11.    Confirme que la ACL de red predeterminada esté configurada de modo que permita todo el tráfico de entrada y salida en las subredes asociadas.

Importante: Si ha modificado la ACL, agregue una regla que permita el tráfico HTTPS IPv4 de salida de la subred a Internet. Para obtener más información, consulte Controlar el tráfico hacia los recursos de AWS mediante grupos de seguridad y Controlar el tráfico hacia las subredes utilizando las ACL de red. Para cambiar la VPC, las subredes o los grupos de seguridad, cree un nuevo entorno informático.

Si su instancia aún no se ha unido al clúster de Amazon ECS, conéctese a ella. Compruebe el estado del daemon de Docker y del agente de contenedores de Amazon ECS.

Nota: Los procedimientos que se describen en este artículo no cubren todas las causas raíz posibles ni todas las formas de solucionarlas. Para solucionar otros problemas relacionados con un trabajo de AWS Batch bloqueado en el estado EJECUTABLE, utilice AWS CloudTrail. Busque eventos con el atributo Username establecido en aws-batch para investigar los errores que se producen durante las tareas programadas.

Información relacionada

Conexión con la instancia de Linux

Conectarse a su instancia de Windows

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses