Programação de contêineres no Amazon ECS
O Amazon Elastic Container Service (Amazon ECS) é um sistema de estado compartilhado e de simultaneidade otimista que oferece recursos de agendamento flexíveis para as workloads em contêineres. Os programadores do Amazon ECS utilizam as mesmas informações de estado de cluster que as da API do Amazon ECS para tomar decisões apropriadas de posicionamento.
O Amazon ECS oferece um programador de serviços para tarefas e aplicações de longa duração. Ele também fornece a capacidade de executar tarefas autônomas ou programadas para trabalhos em lote ou tarefas de execução única. É possível especificar as estratégias e restrições de posicionamento de tarefas para executar tarefas que melhor atendam às suas necessidades. Por exemplo, você pode especificar se as tarefas são executadas em várias zonas de disponibilidade ou em uma única zona de disponibilidade. E, opcionalmente, você pode integrar tarefas com seus próprios programadores personalizados ou de terceiros.
Opção | Quando usar | Mais informações |
---|---|---|
Serviço | O programador de serviços é adequado para serviços e aplicações sem estado de longa duração. O programador de serviços, opcionalmente, também se certifica de que as tarefas estejam registradas em um balanceador de carga do Elastic Load Balancing. É possível atualizar os serviços mantidos pelo programador de serviços. Isso pode incluir a implantação de uma nova definição de tarefa ou a alteração do número de tarefas desejadas que estão sendo executadas. Por padrão, o programador de serviços distribui tarefas em várias zonas de disponibilidade. Entretanto, você pode usar estratégias e limitações de posicionamento de tarefas para personalizar decisões de posicionamento de tarefas. | Serviços do Amazon ECS |
Tarefa autônoma | Uma tarefa independente é adequada para processos como trabalhos em lote que realizam o trabalho e, em seguida, são interrompidos. Por exemplo, você pode ter uma chamada de processo RunTask quando o trabalho entra em uma fila. A tarefa extrai o trabalho da fila, realiza o trabalho e acaba saindo. Ao usar o RunTask , você pode permitir que a estratégia de posicionamento da tarefa padrão distribua tarefas aleatoriamente pelo cluster. Isso minimiza as probabilidades de uma única instância obter um número desproporcional de tarefas. |
Tarefas autônomas do Amazon ECS |
Tarefas programadas | Uma tarefa programada é adequada quando há necessidade de executar tarefas em intervalos definidos no seu cluster. É possível usar o Agendador do EventBridge para criar uma programação. É possível executar tarefas para uma operação de backup ou uma varredura de log. O programa que você criar do programador do EventBridge pode executar uma ou mais tarefas em seu cluster em horários especificados. Seu evento programado pode ser definido para um intervalo específico (executar a cada N minutos, horas ou dias). Caso contrário, para agendamento mais complicado, você pode usar uma expressão do cron . |
Uso do Agendador do Amazon EventBridge para programar tarefas do Amazon ECS |
Opções de computação
Com o Amazon ECS, é possível especificar a infraestrutura em que as tarefas ou os serviços serão executados. Você pode usar uma estratégia do provedor de capacidade ou um tipo de inicialização.
Para o Fargate, os provedores de capacidade são o Fargate e o Fargate Spot. Para o EC2, o provedor de capacidade é o grupo do Auto Scaling com as instâncias de contêiner registradas.
A estratégia do provedor de capacidade distribui as tarefas entre os provedores de capacidade associados ao seu cluster.
Somente provedores de capacidade que já estejam associados a um cluster e tenham status de UPDATING
ou ACTIVE
podem ser usados em uma estratégia de provedor de capacidade. Ao criar um cluster, é possível associar um provedor de capacidade a um cluster.
Em uma estratégia de provedor de capacidade, o valor opcional da base designa o número mínimo de tarefas que serão executadas em um provedor de capacidade especificado. Somente um provedor de capacidade em uma estratégia de provedor de capacidade pode ter uma base definida.
O valor do weight (peso) designa a porcentagem relativa do número total de tarefas inicializadas que usam o provedor de capacidade especificado. Considere o seguinte exemplo. Você tem uma estratégia que contém dois provedores de capacidade e ambos têm um peso de 1
. Quando o percentual da base é atingido, as tarefas se dividem igualmente entre os dois provedores de capacidade. Com base nessa mesma lógica, imagine que você especifica um peso de 1
para o capacityProviderA e um peso de 4
para o capacityProviderB. Em seguida, para cada tarefa executada usando capacityProviderA, existem quatro tarefas que usam o capacityProviderB.
O tipo de inicialização inicia as tarefas diretamente no Fargate ou nas instâncias do Amazon EC2 que foram registradas manualmente em seus clusters.