Programar sus contenedores en Amazon ECS - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Programar sus contenedores en Amazon ECS

Amazon Elastic Container Service (Amazon ECS) es un sistema de simultaneidad optimista y de estado compartido que proporciona capacidades de programación flexibles para sus cargas de trabajo en contenedores. Los programadores de Amazon ECS utilizan la misma información de estado de clúster que proporciona la API de Amazon ECS para tomar decisiones adecuadas de colocación.

Amazon ECS proporciona un programador de servicio para las tareas y aplicaciones de ejecución prolongada. También ofrece la posibilidad de ejecutar tareas independientes o tareas programadas para trabajos por lotes o tareas de ejecución única. Puede especificar las estrategias de ubicación de tareas y las restricciones para ejecutar las tareas que mejor se adapten a sus necesidades. Por ejemplo, puede especificar si las tareas se ejecutan en varias zonas de disponibilidad o dentro de una sola. Tiene la opción de integrar las tareas con programadores propios personalizados o de terceros.

Programador de servicios

El programador de servicios es adecuado para aplicaciones y servicios sin estado de funcionamiento prolongado. El programador de servicios garantiza el cumplimiento de la estrategia de programación especificada y reprograma las tareas cuando alguna de ellas falla. Por ejemplo, si falla la infraestructura subyacente, el programador de servicios puede reprogramar las tareas.

El programador de servicios también reemplaza las tareas que se determina que están en mal estado después de que se produzca un error en una comprobación de estado del contenedor o en una comprobación de estado del grupo objetivo del equilibrador de cargas. Este reemplazo depende de los parámetros de definición del servicio maximumPercent y desiredCount. Si una tarea está marcada como en mal estado, el programador de servicios iniciará primero una tarea de reemplazo. Si la tarea de reemplazo tiene un estado de HEALTHY, el programador de servicios puede detener la tarea en mal estado. Si la tarea de reemplazo tiene un estado de UNHEALTHY, el programador detendrá la tarea de reemplazo en mal estado o la tarea existente en mal estado para igualar el recuento total de tareas en desiredCount. Si el parámetro maximumPercent impide que el programador inicie primero una tarea de reemplazo, detendrá las tareas en mal estado de forma aleatoria de una en una para liberar capacidad y, a continuación, iniciará una tarea de reemplazo. El proceso de inicio y parada continúa hasta que todas las tareas en mal estado se sustituyan por tareas en buen estado. Una vez que se hayan reemplazado todas las tareas en mal estado y solo se estén ejecutando las tareas en buen estado, si el recuento total de tareas supera el límite de desiredCount, las tareas en buen estado se detienen aleatoriamente hasta que el recuento total de tareas sea igual a desiredCount. Para obtener más información sobre maximumPercent y desiredCount, consulte Parámetros de definición de servicios.

nota

Este comportamiento no se aplica a las tareas que ejecutan y mantienen los servicios que utilizan el tipo de implementación de actualizaciones continuas. Durante una actualización continua, el programador de servicios primero detiene las tareas en mal estado y, a continuación, inicia las tareas de reemplazo.

Existen dos estrategias del programador de servicio:

  • REPLICA: la estrategia de programación de réplicas sitúa y mantiene en el clúster el número de tareas deseado. De forma predeterminada, el programador de servicio distribuye las tareas en zonas de disponibilidad. Puede utilizar estrategias y restricciones de ubicación de tareas para personalizar las decisiones de ubicación de las tareas. Para obtener más información, consulte Réplica.

  • DAEMON: la estrategia de programación del daemon implementa exactamente una tarea en cada instancia de contenedor activa que cumpla todas las restricciones de ubicación de tareas que se especifiquen para el clúster. Cuando se utiliza esta estrategia, no es necesario especificar un número deseado de tareas, ni una estrategia de ubicación de tareas ni utilizar políticas de Auto Scaling de servicios. Para obtener más información, consulte Daemon.

    nota

    Las tareas de Fargate no admiten la estrategia de programación de DAEMON.

El programador de servicios también puede asegurarse de que las tareas se registren en una balanceador de carga de Elastic Load Balancing. Puede actualizar los servicios que mantiene el programador de servicios. Esto podría incluir la implementación de una nueva definición de tareas o el cambio del número de tareas deseadas que se ejecutan. De forma predeterminada, el programador de servicios distribuye las tareas en varias zonas de disponibilidad. Sin embargo, puede utilizar estrategias y restricciones de ubicación de tareas para personalizar las decisiones de ubicación de tareas. Para obtener más información, consulte Servicios de Amazon ECS.

Tareas independientes

Puede ejecutar una tarea independiente cuando hay procesos, como trabajos por lotes, que realizan un trabajo y, después, se detienen. Por ejemplo, puede tener una llamada de procesos RunTask cuando el trabajo entra en una cola. La tarea extrae trabajo de la cola, realiza el trabajo y, a continuación, se cierra. Al utilizar RunTask, puede permitir que la estrategia predeterminada de ubicación de tareas distribuya las tareas aleatoriamente en el clúster. Esto minimiza las posibilidades de que una sola instancia reciba un número desproporcionado de tareas. Como opción, puede utilizar RunTask para personalizar cómo el programador coloca las tareas utilizando restricciones y estrategias de colocación de tareas.

Programadores personalizados

Con Amazon ECS, puede crear sus propios programadores o utilizar programadores de terceros. Para obtener más información, consulte Cómo crear un programador personalizado para Amazon ECS. Los programadores personalizados utilizan la operación de la StartTaskAPI para colocar tareas en instancias de contenedor específicas de su clúster.

nota

Los programadores personalizados solo son compatibles con las tareas alojadas en instancias EC2. Si usa Amazon ECS en Fargate, la StartTask API no funciona.