Gerenciamento automático da capacidade do Amazon ECS com ajuste de escala automático de cluster
O Amazon ECS pode gerenciar a escalabilidade de instâncias do Amazon EC2 registradas no seu cluster. Isso se chama ajuste de escala automático do cluster do Amazon ECS. Você ativa o ajuste de escala gerenciado ao criar o provedor de capacidade do grupo do Amazon ECS Auto Scaling. Em seguida, você define uma porcentagem para o destino (a targetCapacity
) para a utilização da instância neste grupo do Auto Scaling. O Amazon ECS cria duas métricas personalizadas do CloudWatch e uma política de ajuste de escala de rastreamento de destino para o grupo do Auto Scaling. O Amazon ECS gerencia as ações reduzir a escala horizontalmente e aumentar a escala horizontalmente com base na utilização de recursos por parte das suas tarefas.
Para cada provedor de capacidade do grupo do Auto Scaling associado a um cluster, o Amazon ECS cria e gerencia os seguintes recursos:
-
Um alarme do CloudWatch de baixo valor métrico
-
Um alarme do CloudWatch de alto valor métrico
-
Uma política de escalabilidade de rastreamento de destino.
nota
O Amazon ECS cria a política de escalabilidade de rastreamento de destino e a anexa ao grupo do Auto Scaling. Para atualizar a política de escalabilidade de rastreamento de destino, atualize as configurações de escalabilidade gerenciadas pelo provedor de capacidade em vez de atualizar a política de escalabilidade diretamente.
Quando a escalabilidade gerenciada é desativada ou o provedor de capacidade é desassociado de um cluster, o Amazon ECS remove as métricas do CloudWatch e os recursos da política de escalabilidade de rastreamento de destino.
O Amazon ECS usa as seguintes métricas para determinar quais ações realizar:
CapacityProviderReservation
-
A porcentagem de instâncias de contêiner em uso para um provedor de capacidade específico. O Amazon ECS gera essa métrica.
O Amazon ECS define o valor
CapacityProviderReservation
como um número entre 0 e 100. O Amazon ECS usa a fórmula a seguir para representar a proporção de quanta capacidade permanece no grupo do Auto Scaling. Em seguida, o Amazon ECS publica a métrica no CloudWatch. Para obter mais informações sobre como a métrica é calculada, consulte Deep Dive on Amazon ECS Cluster Auto Scaling. CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
DesiredCapacity
-
A quantidade de capacidade para o grupo do Auto Scaling. Esta métrica não é publicada no CloudWatch.
O Amazon ECS publica a métrica CapacityProviderReservation
no CloudWatch, no namespace AWS/ECS/ManagedScaling
. A métrica CapacityProviderReservation
faz com que ocorra uma das seguintes ações:
- O valor
CapacityProviderReservation
é igual atargetCapacity
-
O grupo do Auto Scaling não precisa aumentar nem reduzir a escala horizontalmente. O percentual de utilização pretendido foi atingido.
- O valor
CapacityProviderReservation
é maior quetargetCapacity
-
Há mais tarefas usando um percentual maior da capacidade do que seu percentual de
targetCapacity
. O aumento do valor da métricaCapacityProviderReservation
faz com que o alarme do CloudWatch associado se ative. Esse alarme atualiza o valorDesiredCapacity
para o grupo do Auto Scaling. O grupo do Auto Scaling usa esse valor para iniciar instâncias do EC2 e registrá-las no cluster.Quando a
targetCapacity
for o valor padrão de 100%, as novas tarefas ficam no estadoPENDING
durante o aumento de escala na horizontal, pois não há capacidade disponível nas instâncias para executar as tarefas. Depois que as novas instâncias se registrarem no ECS, essas tarefas serão iniciadas nas novas instâncias. - O valor
CapacityProviderReservation
é menor quetargetCapacity
-
Há menos tarefas usando um percentual menor da capacidade do que seu percentual de
targetCapacity
, e há pelo menos uma instância que pode ser encerrada. O valor reduzido da métricaCapacityProviderReservation
faz com que o alarme do CloudWatch associado se ative. Esse alarme atualiza o valorDesiredCapacity
para o grupo do Auto Scaling. O grupo do Auto Scaling usa esse valor para terminar instâncias de contêiner do EC2 e, em seguida, cancelar seus registros no cluster.O grupo do Auto Scaling segue as políticas de término de grupo para determinar quais instâncias ele encerrará primeiro durante os eventos de redução de escala na horizontal. Além disso, ele evita instâncias com a configuração de proteção contra redução de escala na horizontal de instâncias ativada. O ajuste de escala automático de clusters pode gerenciar quais instâncias têm a configuração de proteção contra redução de escala na horizontal de instância se você ativar a proteção contra encerramento gerenciada. Para obter mais informações sobre proteção contra encerramento gerenciada, consulte Controle das instâncias encerradas pelo Amazon ECS. Para obter mais informações sobre como os grupos do Auto Scaling encerram instâncias, consulte Controlar quais instâncias do Auto Scaling são encerradas durante uma redução de escala na horizontal no Guia do usuário do Amazon EC2 Auto Scaling.
Ao usar o ajuste de escala automático de clusters, leve em consideração o seguinte:
-
Não altere nem gerencie a capacidade desejada para o grupo do Auto Scaling associado a um provedor de capacidade com quaisquer políticas de escalabilidade diferentes da que o Amazon ECS gerencia.
-
Quando o Amazon ECS aumenta a escala horizontalmente a partir de 0 instâncias, ele inicia 2 instâncias automaticamente.
-
O Amazon ECS usa o perfil do IAM vinculado ao serviço
AWSServiceRoleForECS
para as permissões das quais ele precisa para chamar o AWS Auto Scaling em seu nome. Para ter mais informações, consulte Uso de perfis vinculados ao serviço para o Amazon ECS. -
Ao usar provedores de capacidade com grupos do Auto Scaling, é necessária a permissão
autoscaling:CreateOrUpdateTags
para que o usuário, o grupo ou o perfil crie os provedores de capacidade. Isso ocorre porque o Amazon ECS adiciona uma etiqueta ao grupo do Auto Scaling quando ele o associa ao provedor de capacidade.Importante
Certifique-se de usar ferramentas que não removam a tag
AmazonECSManaged
do grupo do Auto Scaling. Se essa tag for removida, o Amazon ECS não conseguirá gerenciar o ajuste de escala. -
O ajuste de escala automático de clusters não modifica a MinimumCapacity (Capacidade mínima) nem a MaximumCapacity (Capacidade máxima) do grupo. Para que o grupo aumente a escala horizontalmente, o valor de MaximumCapacity deve ser maior que zero.
-
Quando o Auto Scaling (escalabilidade gerenciada) está ativado, um provedor de capacidade só pode ser conectado a um cluster ao mesmo tempo. Se o seu provedor de capacidade tiver a escalabilidade gerenciada desativada, será possível associá-lo a vários clusters.
-
Quando a escalabilidade gerenciada está desativada, o provedor de capacidade não reduz nem aumenta a escala horizontalmente. É possível usar uma estratégia de provedor de capacidade para equilibrar as tarefas entre provedores de capacidade.
-
A estratégia
binpack
é a mais eficiente em termos de capacidade. -
Quando a capacidade de destino é inferior a 100%, a estratégia de posicionamento precisa usar a estratégia
binpack
sem que a estratégiaspread
tenha uma ordem maior do que a estratégiabinpack
. Isso evita que o provedor de capacidade aumente a escala horizontalmente até que cada tarefa tenha uma instância dedicada ou que o limite seja atingido.
Ativar o ajuste de escala automático de clusters
É possível ativar o ajuste de escala automático de clusters usando o console ou a AWS CLI.
Quando você cria um cluster para o tipo de execução do EC2 usando o console, o Amazon ECS cria um grupo do Auto Scaling em seu nome e define sua capacidade de destino. Para ter mais informações, consulte Criar um cluster do Amazon ECS para o tipo de inicialização do Amazon EC2.
Você também pode criar um grupo do Auto Scaling e depois atribuí-lo a um cluster. Para ter mais informações, consulte Atualização de um provedor de capacidade do Amazon ECS.
Ao usar a AWS CLI após criar o cluster
-
Antes de criar o provedor de capacidade, você precisa criar um grupo do Auto Scaling. Para obter mais informações, consulte Grupos do Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling.
-
Use
put-cluster-capacity-providers
para modificar o provedor de capacidade do cluster. Para ter mais informações, consulte Ativação do ajuste de escala automático de cluster do Amazon ECS.