Clústeres de Amazon ECS para el tipo de lanzamiento de Fargate - Amazon Elastic Container Service

Clústeres de Amazon ECS para el tipo de lanzamiento de Fargate

Los proveedores de capacidad de Amazon ECS administran el escalado de la infraestructura para las tareas de los clústeres. Cada clúster puede tener uno o más proveedores de capacidad y, opcionalmente, una estrategia de proveedor de capacidad. La estrategia del proveedor de capacidad determina cómo se distribuyen las tareas entre los proveedores de capacidad del clúster. Cuando ejecuta una tarea individual o crea un servicio, utiliza la estrategia de proveedores de capacidad predeterminada del clúster o una estrategia de proveedores de capacidad que anule la estrategia predeterminada.

Cuando ejecuta las tareas en AWS Fargate, no necesita crear ni administrar la capacidad. Solo tiene que asociar al clúster cualquiera de los siguientes proveedores de capacidad predefinidos:

  • Fargate

  • Fargate Spot

Los proveedores de capacidad de Amazon ECS en AWS Fargate le permiten utilizar la capacidad de Fargate y de Fargate Spot para las tareas de Amazon ECS.

Con Fargate Spot, puede ejecutar tareas de Amazon ECS tolerantes a interrupciones con un descuento respecto al precio de Fargate. Fargate Spot ejecuta las tareas en la capacidad de cómputo adicional. Cuando AWS necesita recuperar esa capacidad, las tareas se interrumpen previa advertencia con dos minutos de antelación. Fargate Spot solo admite tareas de Linux con la arquitectura X86_64 en la versión 1.3.0 o posterior de la plataforma.

Cuando se detienen las tareas que utilizan los proveedores de capacidad de Fargate y Fargate Spot, se envía un evento de cambio de estado de la tarea a Amazon EventBridge. En el motivo de la parada se describe la causa. Para obtener más información, consulte Eventos de cambio de estado de tarea de Amazon ECS.

Un clúster puede contener una combinación de proveedores de capacidad del grupo de escalado automático y Fargate. Sin embargo, una estrategia de proveedores de capacidad solo puede contener proveedores de capacidad de grupos de escalado automático o Fargate, pero no ambos. Para obtener más información, consulte Proveedores de capacidad de grupos de escalado automático.

Cuando utilice proveedores de capacidad, tenga en cuenta lo siguiente:

  • Debe asociar un proveedor de capacidad con un clúster para poder asociarlo con la estrategia de proveedores de capacidad.

  • Puede especificar un máximo de 20 proveedores de capacidad para una estrategia de proveedores de capacidad.

  • No puede actualizar un servicio que utiliza un proveedor de capacidad de grupos de escalado automático para que utilice un proveedor de capacidad de Fargate. En caso de que sea lo contrario, tampoco puede hacerlo.

  • En una estrategia de proveedores de capacidad, si no se especifica ningún valor weight para un proveedor de capacidad en la consola, entonces se utiliza el valor predeterminado 1. Si utiliza la API o la AWS CLI, se utiliza el valor predeterminado 0.

  • Cuando se especifican varios proveedores de capacidad dentro de una estrategia de proveedores de capacidad, al menos uno de los proveedores de capacidad deberá tener un valor de peso superior a cero. Los proveedores de capacidad con un peso de cero no se usan para realizar tareas. Si especifica varios proveedores de capacidad en una estrategia en la que todos tienen el mismo peso de 0, se producirá un error en cualquiera de las acciones RunTask o CreateService que utilicen la estrategia de proveedores de capacidad.

  • En una estrategia de proveedores de capacidad, solo un proveedor de capacidad puede tener un valor base definido. Si no se especifica ningún valor base, se utiliza el valor predeterminado 0.

  • Un clúster puede contener una combinación de proveedores de capacidad del grupo de escalado automático y proveedores de capacidad de Fargate. Sin embargo, una estrategia de proveedores de capacidad solo puede incluir proveedores de capacidad de grupo de escalado automático o de Fargate, pero no ambos.

  • Un clúster puede contener una combinación de servicios y tareas independientes que utilicen proveedores de capacidad y tipos de lanzamiento. Un servicio se puede actualizar para que utilice una estrategia de proveedores de capacidad en lugar de un tipo de lanzamiento. Sin embargo, al hacerlo, debe forzar una nueva implementación.

Avisos de terminación de Fargate Spot

Durante los períodos de demanda extremadamente alta, es posible que la capacidad de Fargate Spot no esté disponible. Esto puede provocar que las tareas de Fargate Spot se retrasen. Cuando sucede esto, los servicios de Amazon ECS vuelven a intentar iniciar las tareas hasta que se disponga de la capacidad necesaria. Fargate no sustituye la capacidad de Spot por la capacidad bajo demanda.

Cuando se detienen tareas que utilizan capacidad de Fargate Spot debido a una interrupción de spot, se envía una advertencia dos minutos antes de la detención de la tarea. La advertencia se envía como un evento de cambio de estado de tarea a Amazon EventBridge y como una señal SIGTERM a la tarea en ejecución. Si utiliza Fargate Spot como parte de un servicio, en esta situación, el programador de servicio recibe la señal de interrupción e intenta lanzar tareas adicionales en Fargate Spot si hay capacidad disponible. Un servicio con una sola tarea se interrumpirá hasta que haya capacidad disponible. Para obtener más información sobre un cierre correcto, consulte Cierres correctos con ECS.

Para asegurarse de que los contenedores realicen una salida correcta antes de que se detenga la tarea, puede configurar lo siguiente:

  • Se puede especificar un valor de stopTimeout de 120 segundos o menos en la definición del contenedor que la tarea utiliza. El valor de stopTimeout predeterminado es de 30 segundos. Puede especificar un valor de stopTimeout mayor para disponer de más tiempo desde el momento en que se recibe el evento de cambio de estado de tarea hasta el punto en el que se detiene forzosamente el contenedor. Para obtener más información, consulte Tiempos de espera de contenedor.

  • La señal SIGTERM debe recibirse desde dentro del contenedor para realizar cualquier acción de limpieza. Si no se procesa esta señal, la tarea recibirá una señal SIGKILL una vez transcurrido el stopTimeout configurado, lo que puede provocar pérdida o corrupción de datos.

A continuación, se ofrece un fragmento de un evento de cambio de estado de tarea. Este fragmento muestra el motivo y el código de detención de una interrupción de Fargate Spot.

{ "version": "0", "id": "9bcdac79-b31f-4d3d-9410-fbd727c29fab", "detail-type": "ECS Task State Change", "source": "aws.ecs", "account": "111122223333", "resources": [ "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef" ], "detail": { "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default", "createdAt": "2016-12-06T16:41:05.702Z", "desiredStatus": "STOPPED", "lastStatus": "RUNNING", "stoppedReason": "Your Spot Task was interrupted.", "stopCode": "SpotInterruption", "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6fEXAMPLE", ... } }

El siguiente patrón de eventos se utiliza para crear una regla de EventBridge para los eventos de cambio de estado de tarea de Amazon ECS. Si lo desea, puede especificar un clúster en el campo detail. Al hacerlo, recibirá eventos de cambio de estado de la tarea para ese clúster. Para obtener más información, consulte Creación de una regla de EventBridge en la Guía del usuario de Amazon EventBridge.

{ "source": [ "aws.ecs" ], "detail-type": [ "ECS Task State Change" ], "detail": { "clusterArn": [ "arn:aws:ecs:us-west-2:111122223333:cluster/default" ] } }