Autoescalabilidade do serviço
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 obter mais informações, consulte Utilização de serviço. É 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:
-
Políticas de escalabilidade de rastreamento de destino: 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.
-
Políticas de escalabilidade em etapas: 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.
-
Escalabilidade programada: aumenta ou diminui o número de tarefas executadas pelo serviço com base na data e na hora.
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.
Permissões do IAM necessárias para a autoescalabilidade do serviço
O Auto Scaling do serviço se torna possível por uma combinação das APIs do Amazon ECS, do CloudWatch e do Application Auto Scaling. Os serviços são criados e atualizados com o Amazon ECS, são criados alarmes com o CloudWatch e são criadas políticas de escalabilidade com o Application Auto Scaling.
Além das permissões padrão do IAM para a criação e atualização de serviços, você deve conceder aos usuários, grupos ou perfis permissões para que interajam com as configurações do Auto Scaling do serviço, conforme mostrado no exemplo de política a seguir.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "ecs:DescribeServices", "ecs:UpdateService", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:DisableAlarmActions", "cloudwatch:EnableAlarmActions", "iam:CreateServiceLinkedRole", "sns:CreateTopic", "sns:Subscribe", "sns:Get*", "sns:List*" ], "Resource": [ "*" ] } ] }
Os exemplos Exemplo de criação de serviço e Exemplo de atualização de serviço de política do IAM mostram as permissões necessárias para o uso do Auto Scaling do serviço no AWS Management Console.
O serviço do Application Auto Scaling também precisa de permissão para descrever os serviços do Amazon ECS e os alarmes do CloudWatch, além de permissões para modificar a contagem desejada do serviço em seu nome. As permissões sns:
são para as notificações que o CloudWatch envia para um tópico do Amazon SNS quando um limite for excedido. Se você usar a escalabilidade automática para os serviços do Amazon ECS, será criada uma função vinculada ao serviço denominada AWSServiceRoleForApplicationAutoScaling_ECSService
. Essa função vinculada ao serviço concede permissão ao Application Auto Scaling para descrever os alarmes das políticas, monitorar a contagem atual de tarefas em execução do serviço e modificar a contagem desejada do serviço. A função gerenciada original do Amazon ECS para o Application Auto Scaling era ecsAutoscaleRole
, mas ela não é mais necessária. Essa função vinculada ao serviço é a função padrão do Application Auto Scaling. Para ter mais informações, consulte Funções vinculadas a serviço do Application Auto Scaling, no Guia do usuário do Application Auto Scaling.
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, o Auto Scaling do serviço aumentará a contagem desejada até o valor de capacidade mínimo e continuará aumentando conforme necessário, com base na política de escalabilidade 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 disparar uma atividade de redução, o Auto Scaling do serviço aumentará a contagem desejada até o valor máximo de capacidade e continuará a reduzir conforme necessário, com base na política de escalabilidade 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 obter 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.
Experiência da AWS CLI e do SDK
O Auto Scaling do serviço se torna possível por uma combinação das APIs do Amazon ECS, do CloudWatch e do Application Auto Scaling. Os serviços são criados e atualizados com o Amazon ECS, são criados alarmes com o CloudWatch e são criadas políticas de escalabilidade com o Application Auto Scaling.
Para obter mais informações sobre essas operações de API específicas, consulte a Referência da API do Amazon Elastic Container Service, a Referência da API do Amazon CloudWatch, e a Referência da API do Application Auto Scaling. Para obter mais informações sobre os comandos da AWS CLI desses serviços, consulte as seções ecs, cloudwatch e application-autoscaling da .Referência de comando da AWS CLI.
Para configurar políticas de escalabilidade para o serviço do Amazon ECS usando a AWS CLI
-
Registre seu serviço do Amazon ECS como um destino escalável usando o comando register-scalable-target.
-
Crie uma política de escalabilidade usando o comando put-scaling-policy.
-
[Escalabilidade em etapas] Crie um alarme que acione as políticas de escalabilidade usando o comando put-metric-alarm.
Para obter mais informações sobre a configuração das políticas de escalabilidade usando a AWS CLI, consulte o Guia do usuário do Application Auto Scaling.