Como escalar automaticamente o serviço do Amazon ECS - Amazon Elastic Container Service

Como escalar automaticamente o serviço do Amazon ECS

Escalabilidade automática é a capacidade de aumentar ou diminuir automaticamente a contagem de tarefas desejada no serviço do Amazon ECS. O Amazon ECS utiliza o serviço do Application Auto Scaling para fornecer essa funcionalidade. Para obter mais informações, consulte o Guia do usuário do Application Auto Scaling.

O Amazon ECS publica métricas do CloudWatch com o uso médio, pelo serviço, da CPU e da memória. Para ter mais informações, consulte Métricas de utilização do serviço do Amazon ECS. É possível usar essas e outras métricas do CloudWatch para expandir o serviço (adicionar mais tarefas) para lidar com alta demanda em horários de pico e para reduzir o serviço (executar menos tarefas) de modo a reduzir os custos durante períodos de baixa utilização.

O Auto Scaling do serviço do Amazon ECS oferece suporte aos seguintes tipos de escalabilidade automática:

Considerações

Ao usar políticas de escalabilidade, considere o seguinte:

  • O Amazon ECS envia dados de métricas ao CloudWatch em intervalos de um minuto. As métricas não estarão disponíveis até que os clusters e os serviços enviem as métricas para o CloudWatch, e você não poderá criar alarmes do CloudWatch para métricas não existentes.

  • As políticas de escalabilidade são compatíveis com um período de desaquecimento. Esse é o número de segundos para esperar que uma ação de escalabilidade anterior entre em vigor.

    • Para eventos de aumento, a intenção é aumentar de forma contínua (mas não excessiva). Depois que o Auto Scaling do serviço é expandido com êxito usando uma política de escalabilidade, ele começará a calcular o tempo de desaquecimento. A política de escalabilidade não aumentará novamente a capacidade desejada, a menos que um aumento da escala horizontalmente seja iniciado ou que o período de esfriamento termine. Enquanto o período de desaquecimento após expansão estiver em vigor, a capacidade adicionada pela ação de expansão de início será calculada como parte da capacidade desejada para a próxima ação de expansão.

    • Para eventos de redução, a intenção é reduzir de forma conservadora para proteger a disponibilidade da aplicação, de modo que as ações de redução sejam bloqueadas até que o período de desaquecimento tenha expirado. Porém, se outro alarme acionar uma ação de aumento da escala na horizontal durante o período de esfriamento da redução da escala na horizontal, o Service Auto Scaling aumentará a escala horizontalmente do destino imediatamente. Nesse caso, o período de desaquecimento após redução é interrompido e não é concluído.

  • O programador de serviço respeita a contagem desejada em todos os momentos, mas desde que você tenha políticas de escalabilidade e alarmes ativos em um serviço, o Auto Scaling do serviço pode alterar uma contagem desejada que você definiu manualmente.

  • Se a contagem desejada de um serviço estiver definida abaixo do valor de capacidade mínimo e um alarme acionar uma atividade de aumento horizontal de escala, o Auto Scaling do serviço aumenta a escala da contagem desejada até o valor de capacidade mínimo e continua aumentando conforme necessário, com base na política de ajuste de escala associada ao alarme. Porém, uma atividade de redução não ajusta a contagem desejada, pois ela já está abaixo do valor mínimo de capacidade.

  • Se a contagem desejada de um serviço for definida acima do valor máximo de capacidade e um alarme acionar uma atividade de redução de escala, o Auto Scaling do serviço aumenta a contagem desejada até o valor máximo de capacidade e continua a reduzir conforme necessário, com base na política de ajuste de escala associada ao alarme. Porém, uma atividade de expansão não ajusta a contagem desejada, pois ela já está acima do valor máximo de capacidade.

  • Durante ações de escalabilidade, a contagem real de tarefas em execução em um serviço é o valor que o Auto Scaling do serviço usa como ponto de partida, ao contrário da contagem desejada. Esta deve ser a capacidade de processamento. Isso evita a escalabilidade excessiva (sem controle) que não pode ser atendida, por exemplo, caso não haja recursos de instância de contêiner suficientes para colocar as tarefas adicionais. Se a capacidade da instância de contêiner estiver disponível depois, a ação de escalabilidade pendente poderá continuar, e as ações de escalabilidade adicionais poderão continuar depois do período de desaquecimento.

  • Se quiser que a contagem de tarefas seja dimensionada em zero quando não houver trabalho a ser feito, defina uma capacidade mínima de 0. Com políticas de dimensionamento com monitoramento do objetivo, quando a capacidade real é 0 e a métrica indica que há demanda de workload, o Auto Scaling do serviço aguarda o envio de um ponto de dados antes da expansão. Nesse caso, ele é expandido pela quantidade mínima possível como ponto de partida e, em seguida, retoma a escalabilidade com base na contagem real de tarefas em execução.

  • O Application Auto Scaling desativa processos de redução da escala na horizontal enquanto as implantações do Amazon ECS estão em andamento. No entanto, processos de aumento continuam a ocorrer, a menos que sejam suspensos, durante uma implantação. Para ter mais informações, consulte Escalabilidade automática e implantações do serviço.

  • Você tem várias opções de ajuste de escala automático de aplicação para tarefas do Amazon ECS. O rastreamento de destinos é o modo mais fácil de usar. Com isso, tudo o que você precisa fazer é definir um valor de destino para uma métrica, como a utilização média da CPU. Em seguida, o escalador automático gerencia automaticamente o número de tarefas necessárias para atingir esse valor. Com a escalabilidade por etapas, é possível reagir mais rapidamente às mudanças na demanda, pois define os limites específicos para suas métricas de escalabilidade e quantas tarefas adicionar ou remover quando os limites são ultrapassados. E, o mais importante, é possível reagir rapidamente às mudanças na demanda minimizando a quantidade de tempo em que um alarme de limite é violado.

Escalabilidade automática e implantações do serviço

O Application Auto Scaling desativa processos de redução da escala na horizontal enquanto as implantações do Amazon ECS estão em andamento. No entanto, processos de aumento continuam a ocorrer, a menos que sejam suspensos, durante uma implantação. Se você quiser suspender processos de aumento enquanto as implantações estiverem em andamento, siga as etapas a seguir.

  1. Chame o comando describe-scalable-targets, especificando o ID do recurso do serviço associado ao destino escalável no Application Auto Scaling (Exemplo: service/default/sample-webapp). Registre a saída. Você precisará dela quando chamar o próximo comando.

  2. Chame o comando register-scalable-target, especificando o ID, o namespace e a dimensão escalável do recurso. Especifique true para DynamicScalingInSuspended e DynamicScalingOutSuspended.

  3. Depois que a implantação estiver concluída, será possível chamar o comando register-scalable-target para retomar a escalabilidade.

Para obter mais informações, consulte Suspender e retomar a escalabilidade do Application Auto Scaling.