Clusters do Amazon ECS para o tipo de inicialização do Fargate
Provedores de capacidade do Amazon ECS gerenciam a escalabilidade da infraestrutura das tarefas dos clusters. Cada cluster pode ter um ou mais provedores de capacidade e uma estratégia opcional de provedor de capacidade. A estratégia do provedor de capacidade determina como as tarefas são distribuídas entre os provedores de capacidade de clusters. Ao executar uma tarefa autônoma ou criar um serviço, você pode usar a estratégia padrão de provedor de capacidade do cluster ou uma estratégia de provedor de capacidade que substitua a estratégia padrão.
Ao executar suas tarefas no AWS Fargate, não há necessidade de criar ou de gerenciar a capacidade. Para isso, você só precisa associar qualquer um dos seguintes provedores de capacidade definidos previamente ao cluster:
-
Fargate
-
Fargate Spot
Com o Amazon ECS em provedores de capacidade do AWS Fargate, é possível usar a capacidade do Fargate e do Fargate Spot com as tarefas do Amazon ECS.
Com o Fargate Spot, é possível executar tarefas tolerantes a interrupções do Amazon ECS a uma taxa com desconto em comparação com o preço do Fargate. O Fargate Spot executa tarefas com capacidade adicional de computação. Quando a AWS precisar recuperar a capacidade, as tarefas serão interrompidas com um aviso de dois minutos.
Quando as tarefas que usam os provedores de capacidade do Fargate e do Fargate Spot são interrompidas, o evento de alteração de estado da tarefa é enviado para o Amazon EventBridge. O motivo da interrupção descreve a causa. Para ter mais informações, consulte Eventos de alteração de estado de tarefa do Amazon ECS.
Um cluster pode conter uma combinação de provedores de capacidade do Fargate e do grupo do Auto Scaling. Entretanto, uma estratégia de provedor de capacidade só pode conter provedores de capacidade do Fargate ou do grupo do Auto Scaling, mas não ambos. Para obter mais informações, consulte Auto Scaling Group Capacity Providers.
Leve em consideração o seguinte, quando usar provedores de capacidade:
-
Você deve associar um provedor de capacidade a um cluster antes de associá-lo à estratégia do provedor de capacidade.
-
É possível especificar, no máximo, 20 provedores de capacidade para uma estratégia do provedor de capacidade.
-
Não é possível atualizar um serviço que usa um provedor de capacidade do grupo do Auto Scaling para usar um provedor de capacidade do Fargate. O inverso também é verdadeiro.
-
Em uma estratégia de provedor de capacidade, se não houver um valor de
weight
especificado para um provedor de capacidade no console, será usado o valor padrão1
. Se a API ou a AWS CLI estiver sendo usada, será usado o valor padrão0
. -
Quando vários fornecedores de capacidade são especificados dentro de uma estratégia de provedor de capacidade, pelo menos um dos provedores de capacidade deve ter um valor de peso superior a zero. Quaisquer provedores de capacidade com peso zero não serão usados na atribuição de tarefas. Se você especificar vários provedores de capacidade em uma estratégia em que todos tenham um peso zero, quaisquer ações
RunTask
ouCreateService
que usarem a estratégia de provedor de capacidade apresentarão falha. -
Somente um provedor de capacidade em uma estratégia de provedor de capacidade pode ter um valor de base definido. Se nenhum valor de base for especificado, será usado o valor padrão de zero.
-
Um cluster pode conter uma combinação de provedores de capacidade de grupo do Auto Scaling e provedores de capacidade do Fargate. Entretanto, uma estratégia de provedor de capacidade só pode conter provedores de capacidade do grupo do Auto Scaling ou do Fargate, mas não ambos.
-
Um cluster pode conter uma combinação de serviços e tarefas autônomas que usem tanto provedores de capacidade quanto tipos de inicialização. Um serviço pode ser atualizado para usar uma estratégia de provedor de capacidade em vez de um tipo de inicialização. Entretanto, você deve forçar uma nova implantação ao fazer isso.
Avisos de encerramento do Fargate Spot
Durante períodos de demanda extremamente alta, a capacidade do Fargate Spot pode estar indisponível. Isso pode atrasar as tarefas do Fargate Spot. Quando isso acontece, os serviços do Amazon ECS tentam iniciar tarefas novamente até que a capacidade necessária se torne disponível. O Fargate não substitui a capacidade spot pela capacidade sob demanda.
Quando as tarefas que usam a capacidade do Fargate Spot são interrompidas devido a uma interrupção do Spot, um aviso de dois minutos é enviado antes da interrupção de uma tarefa. O aviso é enviado como um evento de alteração de estado da tarefa para o Amazon EventBridge e como um sinal de SIGTERM para a tarefa em execução. Se você usar o Fargate Spot como parte de um serviço, então, nesse cenário, o programador de serviços receberá o sinal de interrupção e tentará iniciar tarefas adicionais no Fargate Spot se houver capacidade disponível. Um serviço com apenas uma tarefa será interrompido até que a capacidade esteja disponível. Para obter mais informações sobre um desligamento normal, consulte Desligamentos normais com o ECS
Para garantir que seus contêineres saiam normalmente antes que a tarefa seja interrompida, é possível configurar o seguinte:
-
Um valor de
stopTimeout
120
segundos ou menos pode ser especificado na definição de contêiner que a tarefa está usando. O valor padrão destopTimeout
é 30 segundos. É possível especificar um valor mais longo destopTimeout
para ter mais tempo entre o momento em que o evento de alteração de estado da tarefa é recebido e o instante no qual o contêiner é interrompido forçosamente. Para ter mais informações, consulte Tempos limite de contêiner. -
Para executar ações de limpeza, o sinal de SIGTERM deve ser recebido de dentro do contêiner. A falha ao processar esse sinal fará com que a tarefa receba um sinal de SIGKILL após a configuração do
stopTimeout
e poderá causar perda ou corrupção de dados.
Veja a seguir o trecho de um evento de alteração de estado da tarefa. Esse trecho exibe o motivo e o código de uma interrupção do 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", ... } }
Veja a seguir um padrão de evento que é usado para criar uma regra do Eventbridge para eventos de alteração de estado da tarefa do Amazon ECS. Opcionalmente, você pode especificar um cluster no campo detail
. Isso significa que você receberá eventos de alteração do estado da tarefa para esse cluster. Para obter mais informações, consulte Criar uma regra para o EventBridge no Guia do usuário do Amazon EventBridge.
{ "source": [ "aws.ecs" ], "detail-type": [ "ECS Task State Change" ], "detail": { "clusterArn": [ "
arn:aws:ecs:us-west-2:111122223333:cluster/default
" ] } }