Otimização do ajuste de escala automático do ECS
Por padrão, o Amazon ECS publica métricas CPUUtilization e MemoryUtilization com resolução de 60 segundos. É possível configurar uma resolução de 20 segundos para acelerar o ajuste de escala automático do serviço.
As seguintes métricas predefinidas de alta resolução estão disponíveis para as políticas de escalabilidade do rastreamento de destinos:
| PredefinedMetricType | Descrição |
|---|---|
ECSServiceAverageCPUUtilizationHighResolution |
Utilização média da CPU com resolução de 20 segundos |
ECSServiceAverageMemoryUtilizationHighResolution |
Utilização média da memória com resolução de 20 segundos |
Criar um novo serviço com métricas de alta resolução para um ajuste de escala automático mais rápido
-
Na página Clusters, selecione o cluster no qual deseja criar o serviço.
-
Na seção Serviços, selecione Criar.
-
No formulário Criar serviço, na seção Configuração de monitoramento, selecione Adicionar configuração de métrica.
-
Em Nome da métrica, selecione a métrica que você deseja coletar em alta resolução. Selecione
CPUUtilizationouMemoryUtilization. -
Em Resolução (segundos), selecione 20.
-
(Opcional) Para adicionar as duas métricas em alta resolução, escolha Adicionar configuração métrica novamente e repita as duas etapas anteriores para a outra métrica.
-
Na seção Autoescala do serviço, selecione Usar ajuste de escala automático do serviço.
-
Em Número mínimo de tarefas, insira o limite inferior do número de tarefas a serem usadas pelo ajuste de escala automático. A contagem desejada não será inferior a essa contagem.
-
Em Número máximo de tarefas, insira o limite superior do número de tarefas a serem usadas pelo ajuste de escala automático. A contagem desejada não ultrapassará essa contagem.
-
Em Scaling policy type (Tipo de política de escalabilidade), escolha Target tracking (Rastreamento de destino).
-
Em Tipo de métrica, selecione a métrica de alta resolução correspondente. Por exemplo, escolha
ECSServiceAverageCPUUtilizationHighResolutionse você configurouCPUUtilizationna resolução de 20 segundos ouECSServiceAverageMemoryUtilizationHighResolutionse você configurouMemoryUtilizationna resolução de 20 segundos. -
Em Valor alvo, insira a porcentagem de utilização-alvo. O ajuste de escala automático do serviço aumenta horizontalmente a escala da sua capacidade até que a utilização média atinja o valor alvo ou até que seja atingido o número máximo de tarefas que você especificou.
-
Na seção Configurações adicionais, configure o seguinte:
-
Em Período de espera após aumentar a escala horizontalmente, insira a quantidade de tempo em segundos para aguardar que uma atividade de ajuste de escala anterior entre em vigor.
-
Em Período de espera após reduzir a escala horizontalmente, insira a quantidade de tempo em segundos após a conclusão de uma ação de redução antes que uma outra atividade de redução possa iniciar.
-
-
Escolha Criar para criar o serviço.
-
Crie o serviço com a configuração de monitoramento usando o comando create-service.
aws ecs create-service --regionus-east-1\ --clustermy-cluster\ --service-namemy-service\ --task-definitionmy-app:1\ --desired-count 2 \ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]" -
Registre seu serviço como um destino escalável usando o comando register-scalable-target.
aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --min-capacity1\ --max-capacity10\ --regionus-east-1 -
Crie uma política de dimensionamento com acompanhamento de metas utilizando uma métrica predefinida de alta resolução por meio do comando put-scaling-policy.
aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --policy-namemy-highres-cpu-policy\ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue":50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --regionus-east-1 -
Verifique se a política foi criada usando o comando describe-scaling-policies.
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1
Atualizar um serviço existente para usar métricas de alta resolução, a fim de acelerar o ajuste de escala automático
A atualização de um serviço existente para utilizar métricas de alta resolução, a fim de acelerar o autoescalonamento do serviço, é um processo que ocorre em duas etapas. Primeiro, é necessário atualizar a resolução de monitoramento, o que aciona a implantação de um serviço. Após a conclusão bem-sucedida da implantação e quando todas as tarefas estiverem gerando métricas com resolução de 20 segundos, você poderá configurar uma política de escalonamento de alta resolução.
Importante
Se o seu serviço utilizava anteriormente uma resolução de métricas de 60 segundos, as métricas de alta resolução para a política de escalonamento só estarão disponíveis no console do Amazon ECS depois que você atualizar o serviço para usar uma resolução de métricas de 20 segundos e a implantação do serviço for concluída.
Etapa 1: Atualizar a resolução do monitoramento
-
Na página Clusters, escolha o cluster que contém o serviço que você deseja atualizar.
-
Na seção Serviços, selecione o serviço e escolha Atualizar.
-
No formulário Atualizar serviço, na seção Configuração de monitoramento, selecione Adicionar configuração de métrica.
-
Em Nome da métrica, selecione a métrica que você deseja coletar em alta resolução. Selecione
CPUUtilizationouMemoryUtilization. -
Em Resolução (segundos), selecione 20.
-
(Opcional) Para adicionar as duas métricas em alta resolução, escolha Adicionar configuração métrica novamente e repita as duas etapas anteriores para a outra métrica.
-
Escolha Atualizar para enviar a alteração. Isso aciona a implantação de um serviço.
-
Aguarde até que a implantação seja concluída. É possível acompanhar o andamento na página de detalhes do serviço, na guia Implantações.
nota
As opções de métricas de ajuste de escala automático de alta resolução ficam desativadas na seção de escalonamento automático do serviço até que a implantação seja bem-sucedida e todas as tarefas estejam gerando dados com resolução de 20 segundos.
Etapa 2: Configurar a política de escalabilidade em alta resolução
Após a conclusão da implantação, configure a política de escalabilidade usando um dos métodos a seguir:
- Opção A: Página de detalhes do serviço
-
-
Na página de detalhes do serviço, selecione a guia Ajuste de escala automático do serviço.
-
Escolha Criar política de escalabilidade (ou editar uma política existente).
-
Em Scaling policy type (Tipo de política de escalabilidade), escolha Target tracking (Rastreamento de destino).
-
Em Tipo de métrica, selecione a métrica de alta resolução. Por exemplo, o
ECSServiceAverageCPUUtilizationHighResolutionou oECSServiceAverageMemoryUtilizationHighResolution. -
Em Valor alvo, insira a porcentagem de utilização-alvo.
-
Na seção Configurações adicionais, configure o seguinte:
-
Em Período de espera após aumentar a escala horizontalmente, insira a quantidade de tempo em segundos para aguardar que uma atividade de ajuste de escala anterior entre em vigor.
-
Em Período de espera após reduzir a escala horizontalmente, insira a quantidade de tempo em segundos após a conclusão de uma ação de redução antes que uma outra atividade de redução possa iniciar.
-
-
Escolha Criar política de escalabilidade.
-
- Opção B: Formulário do Serviço de Atualização
-
-
Na página de detalhes da implantação, escolha Atualizar.
-
Na seção Ajuste de escala automático do serviço, selecione Usar autoescala do serviço (caso ainda não esteja habilitada).
-
Em Número mínimo de tarefas, insira o limite inferior.
-
Em Número máximo de tarefas, insira o limite superior.
-
Em Scaling policy type (Tipo de política de escalabilidade), escolha Target tracking (Rastreamento de destino).
-
Em Tipo de métrica, selecione a métrica de alta resolução (agora habilitada após a conclusão da implantação).
-
Em Valor alvo, insira a porcentagem de utilização-alvo.
-
Em Configurações adicionais, defina o Período de espera para aumentar a escala horizontalmente e Período de espera para reduzir a escala horizontalmente.
-
Escolha Atualizar para enviar a alteração.
-
Etapa 1: Atualizar a resolução do monitoramento
-
Atualize o serviço com a configuração de monitoramento usando o comando update-service.
aws ecs update-service --regionus-east-1\ --clustermy-cluster\ --servicemy-service\ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]" -
Aguarde até que a implantação seja concluída. Você pode monitorar o progresso usando o comando describe-services e verificando o status da implantação.
aws ecs describe-services --regionus-east-1\ --clustermy-cluster\ --servicesmy-service -
Após a conclusão da implantação, verifique se a configuração de monitoramento está ativa, consultando a revisão do serviço. Obtenha o ARN da revisão do serviço ativo na
describe-servicessaída e execute:aws ecs describe-service-revisions --regionus-east-1\ --service-revision-arnsarn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789Confirme se a configuração de monitoramento aparece na resposta:
{ "serviceRevisions": [ { ... "monitoring": { "metricConfigurations": [ { "metricNames": ["CPUUtilization", "MemoryUtilization"], "resolutionSeconds": 20 } ] } } ] }
Etapa 2: Configurar a política de escalabilidade em alta resolução
-
Registre o serviço como um destino escalável, caso ainda não esteja registrado, usando o comando register-scalable-target.
aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --min-capacity1\ --max-capacity10\ --regionus-east-1 -
Crie uma política de dimensionamento com acompanhamento de metas utilizando uma métrica predefinida de alta resolução por meio do comando put-scaling-policy. O exemplo a seguir tem como destino uma utilização de 50% da CPU:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --policy-namemy-highres-cpu-policy\ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue":50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --regionus-east-1 -
Verifique se a política foi criada:
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1
Validar o ajuste de escala automático do serviço mais rápido
Parte 1: Verifique se as métricas de alta resolução estão sendo publicadas
-
Navegue até o console do CloudWatch.
-
No painel de navegação, escolha Metrics e, em seguida, All metrics.
-
Escolha o namespace AWS/ECS.
-
Escolha ClusterName, ServiceName.
-
Localize as métricas
CPUUtilizationeMemoryUtilizationdo seu serviço. -
Defina o período para 20 segundos. Você deverá ver pontos de dados a cada 20 segundos, o que confirma que as métricas de alta resolução estão ativas.
Parte 2: Verifique se a política de escalabilidade está utilizando a métrica de alta resolução
-
Na página de detalhes do serviço, selecione a guia Ajuste de escala automático do serviço.
-
Visualize suas políticas de escalabilidade atuais e confirme se a métrica está configurada para uma variante de alta resolução (
ECSServiceAverageCPUUtilizationHighResolutionouECSServiceAverageMemoryUtilizationHighResolution). -
Como alternativa, verifique usando a CLI:
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1Confirme se
PredefinedMetricTypea resposta está definida como uma métrica de alta resolução.
Considerações
-
O monitoramento de alterações na configuração cria uma nova revisão do serviço e é necessário realizar uma implantação do serviço. A métrica de escalabilidade de alta resolução não estará disponível até que a implantação seja concluída e todas as tarefas estejam gerando dados com resolução de 20 segundos.
-
Métricas de alta resolução são compatíveis com serviços que utilizam Application Load Balancers e Network Load Balancers. Serviços que utilizam Classic Load Balancers sem grupos de destino não são compatíveis.
-
Métricas de alta resolução não são compatíveis com serviços que utilizam os tipos de controlador de implantação
CODE_DEPLOYouEXTERNAL. -
Você pode visualizar a configuração de monitoramento do seu serviço usando
DescribeServiceRevisions. A configuração de monitoramento não é retornada em nossas respostasCreateServiceouUpdateService.