Como escalar automaticamente o serviço do Amazon ECS
Escalabilidade automática é a capacidade de aumentar ou diminuir automaticamente o número de tarefas desejadas 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:
-
Use uma métrica de destino para escalar os serviços do Amazon ECS: aumenta ou diminui o número de tarefas que o serviço executa com base em um valor de destino para uma métrica específica. Isso é semelhante à forma como o termostato mantém a temperatura da casa. Você seleciona a temperatura, e o termostato faz o resto.
-
Usar incrementos predefinidos com base em alarmes do CloudWatch para ajustar a escala de serviços do Amazon ECS: aumenta ou diminui o número de tarefas que o serviço executa com base em um conjunto de ajustes de escalabilidade, conhecidos como ajustes em etapas, que variam conforme o tamanho da violação do alarme.
-
Usar ações programadas para escalar os serviços do Amazon ECS: aumenta ou diminui o número de tarefas que o serviço executa com base na data e hora.
-
Usar padrões históricos para escalar os serviços do Amazon ECS com escalabilidade preditiva: aumenta ou diminui o número de tarefas que o serviço executa com base na análise de dados de carga histórica para detectar padrões diários ou semanais nos fluxos de tráfego.
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.
-
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. -
Chame o comando register-scalable-target, especificando o ID, o namespace e a dimensão escalável do recurso. Especifique
true
paraDynamicScalingInSuspended
eDynamicScalingOutSuspended
. -
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.