Saltar al contenido

¿Cómo soluciono los problemas de anulación del registro de objetivos para mi tarea de Amazon ECS?

5 minutos de lectura
0

Se ha anulado el registro de mi tarea de Amazon Elastic Container Service (Amazon ECS) en el grupo objetivo.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Si se anula el registro de tu tarea de Amazon ECS en el grupo objetivo, comprueba si hay mensajes de error en la tarea. O bien, ejecuta el siguiente comando describe-tasks de la AWS CLI:

aws ecs describe-tasks \
    --cluster cluster-name \
    --tasks task-ARN

Nota: Sustituye cluster-name por el nombre del clúster y task-ARN por el ARN de la tarea. Los detalles de las tareas detenidas están disponibles solo durante 1 hora después de que se detengan las tareas.

Comprueba exitCode, reason, stopCode y stoppedReason en la salida del comando y, a continuación, soluciona los problemas de la tarea detenida.

Comprobar si un contenedor esencial ha salido de la tarea

Todas las tareas deben tener al menos un contenedor esencial. Si el contenedor esencial falla o se detiene, Amazon ECS detiene todos los contenedores de la tarea. Para investigar más a fondo, consulta los registros de la aplicación.

Si la tarea usa el controlador de registro awslogs, ejecuta el siguiente comando get-log-events para comprobar los registros de la aplicación en Amazon CloudWatch:

aws logs get-log-events \
--log-group-name awslogs-group \
--log-stream-name awslogs-stream-prefix/container-name/task-id

Nota: Sustituye awslogs-group por el nombre del grupo de registro, awslogs-stream-prefix por el nombre de la secuencia de registro, container-name por el nombre del contenedor y task-id por el ID de la tarea.

Para ver un ejemplo de definición de tarea que envía registros a CloudWatch, consulta Ejemplo de definición de tarea de Amazon ECS: enrutamiento de los registros a CloudWatch.

Comprobar si hay problemas de falta de memoria

Si los procesos del contenedor consumen más memoria que la cantidad asignada en la definición de la tarea, el contenedor de tareas se cierra.

Para resolver este problema, asigna más memoria al contenedor. Se recomienda probar la carga y ajustar los parámetros de la memoria en un entorno que no sea de producción. También se recomienda aumentar la memoria de forma gradual y, a continuación, supervisar el rendimiento. Por ejemplo, aumenta 256 MB a 512 MB. Cuando actualices la memoria de tareas, revisa también la asignación de la CPU. Para obtener más información, consulta Prácticas recomendadas de tamaños de tareas de Amazon EC2.

Para actualizar la memoria, comprueba si ha definido la memoria en el contenedor o en la definición de la tarea. Actualiza la definición de la tarea y, a continuación, actualiza el servicio para usar la nueva revisión de la definición de la tarea. Supervisa el servicio para asegurarte de que la definición de la tarea se despliega correctamente con la nueva configuración de memoria.

Para obtener más pasos de solución de problemas, consulta ¿Cómo soluciono los errores de falta de memoria en Amazon ECS?

Comprobar la configuración de comprobación de estado

Para solucionar los errores de comprobación de estado de las tareas de AWS Fargate, consulta ¿Cómo soluciono los errores de comprobación de estado de las tareas de Amazon ECS en Fargate?

Los errores de anulación del registro pueden producirse cuando una tarea no pasa las comprobaciones de estado de Elastic Load Balancing (ELB) y se produce uno de los siguientes errores:

  • «(service AWS-service) (port 8080) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed with these codes: [5xx]/[4xx]/[3xx]) or (Request timed out)».
  • «(service AWS-Service) (task eaa3ec9e9f104070b461490987654321) failed container health checks».
  • «(service AWS-Service) (instance 10.122.144.145) (port 8080) is unhealthy in (target-group arn:aws:elasticloadbalancing:ap-south-1:120987654321:targetgroup/AWS-Service-TG/159c835dc9d8cf84) due to (reason Target is in an Availability Zone that is not enabled for the load balancer)».

Puede que también se muestre el siguiente error en la consola de Amazon ECS:

«Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789)»

Para resolver este problema, asegúrate de que el punto de enlace que has configurado en la comprobación de estado del grupo objetivo sea correcto.

Si las tareas de Amazon ECS tardan en responder a las comprobaciones de estado, se recomienda aumentar el valor del parámetro healthCheckGracePeriodSeconds. Además, usa el modo de inicio lento para permitir que los objetivos se preparen antes de que el equilibrador de carga les envíe las solicitudes de comprobación de estado.

Comprobar la configuración de las tareas y servicios

Comprueba las métricas de CPU y memoria del servicio. El uso elevado de recursos puede hacer que la aplicación deje de responder y provocar un error 5xx. Para resolver estos problemas relacionados con las tareas con los tipos de lanzamiento de Fargate y Amazon EC2, consulta ¿Cómo puedo supervisar el uso elevado de memoria para las tareas de Amazon ECS en Fargate?

Comprueba que la interfaz de red elástica de la tarea o los grupos de seguridad de instancias de contenedor permitan el tráfico desde el equilibrador de carga en los puertos requeridos del modo de red:

  • Para el modo de red awsvpc, permite el puerto que has definido como containerPort en la definición de la tarea.
  • Para el modo de red bridge, permite los puertos efímeros (32768-60999).

Información relacionada

Mensajes de error de tareas detenidas de Amazon ECS

Uso de un equilibrador de carga de aplicación para Amazon ECS

Registro y supervisión en Amazon Elastic Container Service

OFICIAL DE AWSActualizada hace un año
Sin comentarios