Uso de estratégias para definir o posicionamento de tarefas do Amazon ECS
Para tarefas que usam o tipo de execução do EC2, o Amazon ECS deve determinar onde posicionar a tarefa com base nos requisitos especificados na definição da tarefa, como CPU e memória. Do mesmo modo, quando você reduz proporcionalmente a contagem de tarefas, o Amazon ECS deve determinar que tarefas serão concluídas. É possível aplicar estratégias e limitações de posicionamento de tarefas para personalizar como o Amazon ECS posiciona e finaliza tarefas.
As estratégias padrão de posicionamento de tarefas dependem de você executar as tarefas manualmente (tarefas autônomas) ou em um serviço. Para tarefas executadas como parte de um serviço Amazon ECS, a estratégia de colocação de tarefas será spread
usando attribute:ecs.availability-zone
. Não existe uma restrição padrão de colocação de tarefas para tarefas que não estão em serviços. Para ter mais informações, consulte Programação de contêineres no Amazon ECS.
nota
As estratégias de posicionamento de tarefas têm como base o melhor esforço. O Amazon ECS ainda tenta posicionar tarefas mesmo quando a opção de posicionamento ideal está indisponível. No entanto, as restrições de posicionamento de tarefas são vinculativas e podem impedir o posicionamento delas.
É possível usar estratégias e restrições de posicionamento de tarefas em conjunto. Por exemplo, você pode usar uma estratégia de posicionamento de tarefas e uma restrição de posicionamento de tarefas para distribuir tarefas entre zonas de disponibilidade e tarefas de compartimento com base na memória dentro de cada zona de disponibilidade, mas apenas para instâncias G2.
Quando o Amazon ECS posiciona as tarefas, ele usa o processo a seguir para selecionar as instâncias de contêiner:
-
Identificar instâncias de contêiner que atendam aos requisitos de CPU, GPU, memória e porta na definição de tarefa.
-
Identificar instâncias de contêiner que atendam às limitações de posicionamento de tarefas.
-
Identificar instâncias de contêiner que atendam às estratégias de posicionamento de tarefas.
-
Selecionar instâncias de contêiner para o posicionamento de tarefas.
Você especifica estratégias de posicionamento de tarefas na definição do serviço ou na definição da tarefa usando o parâmetro placementStrategy
.
"placementStrategy": [ { "field": "The field to apply the placement strategy against", "type": "The placement strategy to use" } ]
Você pode especificar as estratégias ao executar uma tarefa (RunTask), criar um serviço (CreateService) ou atualizar um serviço existente (UpdateService).
A tabela a seguir descreve os tipos e campos disponíveis.
type | Valores de campo válidos |
---|---|
binpack As tarefas são colocadas em instâncias de contêiner para deixar a menor quantidade de CPU ou memória não utilizada. Essa estratégia minimiza o número de instâncias de contêiner em uso. Quando essa estratégia é usada e uma ação de redução de escala na horizontal é executada, o Amazon ECS encerra as tarefas. Ele faz isso com base na quantidade de recursos que são deixados na instância de contêiner após o encerramento da tarefa. A instância de contêiner que tiver os recursos mais disponíveis após o encerramento da tarefa fará com que essa tarefa seja encerrada. |
|
random As tarefas são colocadas aleatoriamente. |
Não usado |
spread As tarefas são colocadas uniformemente com base no valor especificado. As tarefas de serviço são distribuídas com base nas tarefas desse serviço. Tarefas autônomas são distribuídas com base nas tarefas do mesmo grupo de tarefas. Para obter mais informações sobre grupos de tarefas, consulte Tarefas do Amazon ECS relacionadas a grupos .Quando a estratégia |
|
As estratégias de posicionamento de tarefas também podem ser atualizadas para os serviços existentes. Para ter mais informações, consulte Como o Amazon ECS posiciona tarefas em instâncias de contêineres.
É possível criar uma estratégia de posicionamento de tarefas que use várias estratégias criando matrizes de estratégias na ordem em que você desejar que elas sejam executadas. Por exemplo, se você quiser distribuir tarefas entre zonas de disponibilidade e, em seguida, agrupar tarefas com base na memória dentro de cada zona de disponibilidade, especifique a estratégia de zona de disponibilidade seguida pela estratégia de memória. Para obter exemplos de estratégias, consulte Exemplo de estratégias de posicionamento de tarefas do Amazon ECS.