Comportamento de escalabilidade gerenciada do Amazon ECS
Quando você tem provedores de capacidade do grupo do Auto Scaling que usam ajuste de escala gerenciado, o Amazon ECS estima o número ideal de instâncias a serem adicionadas ao cluster e usa o valor para determinar quantas instâncias solicitar ou liberar.
Comportamento gerenciado de aumento
O Amazon ECS seleciona um provedor de capacidade para cada tarefa com base na estratégia do provedor de capacidade do serviço, da tarefa independente ou do padrão do cluster. O Amazon ECS segue o restante dessas etapas para um único provedor de capacidade.
Tarefas sem uma estratégia de provedor de capacidade são ignoradas pelos provedores de capacidade. Uma tarefa pendente que não tenha uma estratégia de provedor de capacidade não fará com que nenhum provedor de capacidade sofra aumento de escala na horizontal. Tarefas ou serviços não podem definir uma estratégia de provedor de capacidade se essa tarefa ou serviço definir um tipo de inicialização.
Veja a seguir a descrição do comportamento de aumento com mais detalhes.
-
Agrupe todas as tarefas de provisionamento desse provedor de capacidade para que cada grupo tenha os mesmos exatos requisitos de recursos.
-
Quando você usa vários tipos de instância em um grupo do Auto Scaling, os tipos de instância no grupo do Auto Scaling são ordenadas por seus parâmetros. Esses parâmetros incluem vCPU, memória, interfaces de rede elástica (ENIs), portas e GPUs. Os menores e maiores tipos de instância para cada parâmetro são selecionados. Para obter mais informações sobre como escolher o tipo de instância, consulte Instâncias de contêiner do Amazon EC2 para o Amazon ECS.
Importante
Se um grupo de tarefas tiver requisitos de recursos maiores do que o menor tipo de instância no grupo do Auto Scaling, esse grupo de tarefas não poderá ser executado com esse provedor de capacidade. O provedor de capacidade não escala o grupo do Auto Scaling. As tarefas permanecem no estado
PROVISIONING.Para evitar que as tarefas permaneçam no estado
PROVISIONING, recomendamos que você crie grupos do Auto Scaling e provedores de capacidade separados para diferentes requisitos mínimos de recursos. Ao executar tarefas ou criar serviços, adicione somente provedores de capacidade à estratégia do provedor de capacidade que possa executar a tarefa no menor tipo de instância no grupo do Auto Scaling. Para outros parâmetros, é possível usar restrições de posicionamento -
Para cada grupo de tarefas, o Amazon ECS calcula o número de instâncias necessárias para executar as tarefas não colocadas. Esse cálculo usa uma estratégia
binpack. Essa estratégia leva em consideração os requisitos de vCPU, memória, interfaces de rede elásticas (ENI), portas e GPUs das tarefas. Ela também leva em consideração a disponibilidade de recursos das instâncias do Amazon EC2. Os valores para o maior tipo de instância são tratados como a contagem máxima de instâncias calculada. Os valores para o menor tipo de instância são usados como proteção. Se o menor tipo de instância não puder executar pelo menos uma instância da tarefa, o cálculo considerará a tarefa como não compatível. Como resultado, a tarefa será excluída do cálculo do aumento da escala horizontalmente. Quando todas as tarefas não são compatíveis com o menor tipo de instância, o ajuste de escala automático do cluster é interrompido e o valorCapacityProviderReservationpermanece com o valortargetCapacity. -
O Amazon ECS publicará a métrica
CapacityProviderReservationpara o CloudWatch em relação aominimumScalingStepSizese ocorrer qualquer um dos eventos a seguir.-
A contagem máxima de instâncias calculadas é menor que o tamanho mínimo da etapa de ajuste de escala.
-
O valor mais baixo para
maximumScalingStepSizeou para a contagem máxima de instâncias calculadas.
-
-
Os alarmes do CloudWatch usam a métrica
CapacityProviderReservationpara provedores de capacidade. Quando a métricaCapacityProviderReservationé maior que o valor datargetCapacity, os alarmes também aumentam aDesiredCapacitydo grupo do Auto Scaling. O valortargetCapacityé uma configuração do provedor de capacidade que é enviada para o alarme do CloudWatch durante a fase de ativação da autoescalabilidade do cluster.O padrão para
targetCapacityé de 100%. -
O grupo do Auto Scaling inicia instâncias do EC2 adicionais. Para evitar o excesso de provisionamento, o Auto Scaling garante que a capacidade das instâncias do EC2 executadas recentemente esteja estabilizada antes de executar novas instâncias. O Auto Scaling verifica se todas as instâncias existentes passaram pelo
instanceWarmupPeriod(agora, subtraindo o tempo de inicialização da instância). O aumento horizontal da escala é bloqueado para instâncias que estão dentro doinstanceWarmupPeriod.O número padrão de segundos para o aquecimento de uma instância recém-ativada é 300.
Para obter mais informações, consulte Deep dive on Amazon ECS cluster auto scaling
Considerações sobre aumento de escala na horizontal
Considere o seguinte para o processo de aumento de escala na horizontal:
-
Embora existam várias restrições de posicionamento, recomendamos usar a restrição de posicionamento de tarefas
distinctInstance. Isso impede que o processo de aumento de escala horizontalmente seja interrompido porque você está usando uma restrição de posicionamento que não é compatível com as instâncias amostradas. -
A escalabilidade gerenciada funciona melhor se o grupo do Auto Scaling usa os mesmos tipos de instância ou semelhantes.
-
Quando um processo de aumento de escala na horizontal for necessário e não houver instâncias de contêiner em execução no momento, o Amazon ECS sempre aumentará a escala horizontalmente para duas instâncias no início e, em seguida, executará processos adicionais de redução ou aumento da escala na horizontal. Qualquer aumento de escala na horizontal adicional aguardará o período de aquecimento da instância. Para processos de redução de escala na horizontal, o Amazon ECS espera 15 minutos após um processo de aumento de escala na horizontal antes de iniciar os processos de redução de escala na horizontal a qualquer momento.
-
A segunda etapa de aumento da escala na horizontal precisa aguardar até que o
instanceWarmupPeriodexpire, o que pode afetar o limite geral da escala. Caso precise reduzir esse tempo, certifique-se de queinstanceWarmupPeriodseja grande o suficiente para que a instância do EC2 seja executada e inicie o agente do Amazon ECS (o que impede o excesso de provisionamento). -
O ajuste de escala automático de clusters oferece suporte à configuração de execução, aos modelos de execução e a vários tipos de instâncias no grupo do Auto Scaling do provedor de capacidade. Também é possível usar a seleção de tipo de instância baseada em atributos sem vários tipos de instâncias.
-
Ao usar um grupo do Auto Scaling com instâncias sob demanda e vários tipos de instância ou instâncias spot, coloque os tipos de instância maiores acima na lista de prioridades e não especifique um peso. Não há suporte para a especificação de um peso, no momento. Para obter mais informações, consulte Grupos do Auto Scaling com vários tipos de instância no Guia do usuário do AWS Auto Scaling.
-
O Amazon ECS iniciará o
minimumScalingStepSizese a contagem máxima de instâncias calculada for menor do que o tamanho mínimo da etapa de escalabilidade ou o que for menor entremaximumScalingStepSizee o valor máximo calculado da contagem de instâncias. -
Se um serviço ou
run-taskdo Amazon ECS iniciar uma tarefa e as instâncias de contêiner do provedor de capacidade não tiverem recursos suficientes para iniciá-la, o Amazon ECS limitará o número de tarefas com esse status para cada cluster e impedirá que qualquer tarefa ultrapasse esse limite. Para obter mais informações, consulte Cotas de serviço do Amazon ECS.
Comportamento gerenciado de redução de escala na horizontal
O Amazon ECS monitora instâncias de contêiner para cada provedor de capacidade dentro de um cluster. Quando uma instância de contêiner não executa nenhuma tarefa, ela é considerada vazia e o Amazon ECS inicia o processo de redução de escala na horizontal.
Os alarmes de escalabilidade do CloudWatch exigem 15 pontos de dados (15 minutos) antes do início do processo de escalabilidade para o grupo do Auto Scaling. Depois que o processo de redução de escala na horizontal é iniciado, até que o Amazon ECS precise reduzir o número de instâncias de contêiner registradas, o grupo do Auto Scaling define o valor DesireCapacity como sendo maior que uma instância e menor que 50% a cada minuto.
Quando o Amazon ECS solicitar um aumento da escala horizontalmente (quando CapacityProviderReservation for maior que 100) enquanto um processo de redução da escala horizontalmente estiver em andamento, o processo de redução da escala horizontalmente será interrompido e começará do início, se necessário.
Veja a seguir a descrição do comportamento de redução de escala na horizontal com mais detalhes:
-
O Amazon ECS calcula o número de instâncias de contêiner vazias. Uma instância de contêiner é considerada vazia mesmo quando houver tarefas de daemon em execução.
-
O Amazon ECS define o valor
CapacityProviderReservationcomo um número entre 0 e 100 que usa a fórmula a seguir para representar a proporção de quão grande o grupo do Auto Scaling precisa ser em relação ao quão grande ele realmente é, expressa como um percentual. Em seguida, o Amazon ECS publica a métrica no CloudWatch. Para obter mais informações sobre como a métrica é calculada, consulte Análise profunda do ajuste de escala automático de clusters do Amazon ECS. CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100 -
A métrica
CapacityProviderReservationgera um alarme do CloudWatch. Esse alarme atualiza o valorDesiredCapacitypara o grupo do Auto Scaling. Em seguida, ocorre uma das seguintes ações:-
Se você não usar o encerramento gerenciado do provedor de capacidade, o grupo do Auto Scaling selecionará instâncias do EC2 usando a política de encerramento do grupo do Auto Scaling e encerrará as instâncias até que o número de instâncias do EC2 atinja a
DesiredCapacity. As instâncias de contêiner são canceladas do registro do cluster. -
Se todas as instâncias de contêiner usarem proteção contra encerramento gerenciado, o Amazon ECS removerá a proteção de redução de escala na horizontal nas instâncias de contêiner que estiverem vazias. O grupo do Auto Scaling poderá, então, terminar as instâncias do EC2. As instâncias de contêiner são canceladas do registro do cluster.
-