Otimização do ajuste de escala automático de cluster do Amazon ECS - Amazon Elastic Container Service

Otimização do ajuste de escala automático de cluster do Amazon ECS

Os clientes que executam o Amazon ECS no Amazon EC2 podem aproveitar o ajuste de escala automático de cluster para gerenciar o ajuste de escala de grupos do Amazon EC2 Auto Scaling. Com o ajuste de escala automático de cluster, é possível configurar o Amazon ECS para escalar o grupo do Auto Scaling automaticamente e se concentrar apenas na execução das tarefas. O Amazon ECS garante que o grupo do Auto Scaling reduza ou aumente a escala horizontalmente, conforme necessário, sem a necessidade de intervenção adicional. Os provedores de capacidade do Amazon ECS são usados ​​para gerenciar a infraestrutura do cluster ao garantir que haja instâncias de contêiner suficientes para atender às demandas da aplicação. Para saber como o ajuste de escala automático de cluster funciona internamente, consulte Deep Dive on Amazon ECS Cluster Auto Scaling.

O ajuste de escala automático de cluster depende de uma integração baseada no CloudWatch com o grupo do Auto Scaling para ajustar a capacidade do cluster. Portanto, ele tem uma latência inerente associada a

  • Publicar as métricas do CloudWatch,

  • O tempo necessário para a métrica CapacityProviderReservation violar os alarmes do CloudWatch (altos e baixos)

  • O tempo gasto por uma instância do Amazon EC2 recém-iniciada para entrar em modo de operação estável. É possível executar as seguintes ações para tornar o ajuste de escala automático de cluster mais responsivo com a finalidade de obter implantações mais rápidas:

Tamanhos do ajuste de escala para as etapas do provedor de capacidade

Os provedores de capacidade do Amazon ECS aumentarão ou reduzirão as instâncias de contêiner para atender às demandas da aplicação. Por padrão, o número mínimo de instâncias que o Amazon ECS iniciará está definido como um. Isso poderá adicionar mais tempo às implantações, se forem necessárias diversas instâncias para a atribuição das tarefas pendentes. É possível aumentar o minimumScalingStepSize por meio da API do Amazon ECS com a finalidade de aumentar o número mínimo de instâncias em que o Amazon ECS aumenta ou reduz a escala horizontalmente ao mesmo tempo. Um maximumScalingStepSize muito baixo pode limitar quantas instâncias de contêiner terão aumento ou redução da escala horizontalmente por vez, o que pode atrasar as implantações.

nota

No momento, essa configuração está disponível somente por meio das APIs CreateCapacityProvider ou UpdateCapacityProvider.

Período de aquecimento da instância

O período de aquecimento da instância corresponde ao período após o qual uma instância do Amazon EC2 iniciada recentemente pode contribuir para as métricas do CloudWatch relacionadas ao grupo do Auto Scaling. Depois que o período de aquecimento especificado expirar, a instância será contabilizada nas métricas agregadas do grupo do Auto Scaling, e o ajuste de escala automático de cluster continuará com sua próxima iteração de cálculos para estimar o número de instâncias necessárias.

O valor padrão para instanceWarmupPeriod é de 300 segundos, e você pode configurar para um valor mais baixo por meio das APIs CreateCapacityProvider ou UpdateCapacityProvider para obter um ajuste de escala mais responsivo.

Capacidade não utilizada

Se o provedor de capacidade não tiver instâncias de contêiner disponíveis para a atribuição de tarefas, ele precisará aumentar (aumentar a escala horizontalmente) a capacidade do cluster ao iniciar instâncias do Amazon EC2 rapidamente e aguardar a inicialização antes de iniciar os contêineres nelas. Isso pode reduzir significativamente a taxa de inicialização de tarefas. Você tem duas opções disponíveis para lidar com isso.

Nesse caso, ter a capacidade não utilizada do Amazon EC2 já iniciada e pronta para executar tarefas aumentará a taxa efetiva de inicialização de tarefas. É possível usar a configuração Target Capacity para indicar que deseja manter a capacidade não utilizada em seus clusters. Por exemplo, ao definir a Target Capacity como 80%, você indica que o cluster precisa de 20% de capacidade não utilizada disponível em todos os momentos. Essa capacidade não utilizada pode permitir que qualquer tarefa independente seja iniciada imediatamente, garantindo que a inicialização de tarefas não sofra o controle de utilização. A desvantagem desta abordagem é o potencial aumento dos custos de manutenção da capacidade não utilizada do cluster.

Uma abordagem alternativa que pode ser considerada é adicionar reserva de capacidade ao seu serviço e não ao provedor de capacidade. Isso significa que, em vez de reduzir a configuração Target Capacity para iniciar a capacidade não utilizada, é possível aumentar o número de réplicas em seu serviço ao modificar a métrica de ajuste de escala de rastreamento de destino ou os limites de ajuste de escala em etapas do ajuste de escala automático do serviço. Observe que essa abordagem será útil somente para workloads com picos, mas não terá efeito ao implantar novos serviços e escalar de zero a determinado número de tarefas pela primeira vez. Para obter mais informações sobre as políticas de ajuste de escala relacionadas, consulte Target Tracking Scaling Policies ou Step Scaling Policies no Guia do desenvolvedor do Amazon Elastic Container Service.