Escala preditiva para o Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Escala preditiva para o Amazon EC2 Auto Scaling

Use a escalabilidade preditiva para aumentar o número de instâncias do EC2 em seu grupo do Auto Scaling em antecipação aos padrões diários e semanais nos fluxos de tráfego.

A escalabilidade preditiva é adequada para situações em que há:

  • Tráfego cíclico, como alta utilização de recursos durante o horário comercial e baixa utilização de recursos durante a noite e nos fins de semana

  • Padrões recorrentes de execução de workloads, como processamento em lote, testes ou análise periódica

  • Aplicações que demoram muito para inicializar, causando um impacto de latência considerável na performance da aplicação durante eventos de aumento da escala na horizontal

Em geral, se houver padrões regulares de aumento de tráfego e aplicações que demoram muito para inicializar, considere o uso da escalabilidade preditiva. A escalabilidade preditiva pode ajudar você a expandir mais rapidamente, lançando a capacidade antes da carga prevista, em comparação com o uso apenas da escalabilidade dinâmica, que é reativa por natureza. A escalabilidade preditiva também pode economizar dinheiro em sua fatura do EC2 ao ajudar você a evitar a necessidade de provisionar a capacidade de forma excessiva.

Por exemplo, considere uma aplicação com elevado índice de utilização durante o horário comercial e baixo uso durante a noite. No início de cada dia útil, a escalabilidade preditiva pode adicionar capacidade antes do primeiro fluxo de tráfego. Isso ajuda sua aplicação a manter alta disponibilidade e performance ao passar de um período de menor utilização para um período de maior utilização. Você não precisa esperar que a escalabilidade dinâmica reaja à mudança de tráfego. Você também não precisa gastar tempo revisando os padrões de carga da aplicação e tentando alocar a quantidade certa de capacidade usando a escalabilidade programada.

Usar o AWS Management Console, a AWS CLI ou um dos SDKs para adicionar uma política de escalabilidade preditiva a qualquer grupo do Auto Scaling.

Como a escalabilidade preditiva funciona

A escalabilidade preditiva usa machine learning para prever requisitos de capacidade com base em dados históricos do CloudWatch. O algoritmo de machine learning consome os dados históricos disponíveis e calcula a capacidade que melhor se ajusta ao padrão de carga histórico e, em seguida, aprende continuamente com base em novos dados para tornar as previsões futuras mais precisas.

Para usar a escalabilidade preditiva, crie primeiro uma política de escalabilidade com um par de métricas e uma utilização-alvo. A criação da previsão começará imediatamente após a criação da política se houver pelo menos 24 horas de dados históricos. A escalabilidade preditiva localiza padrões nos dados métricos do CloudWatch ao longo dos 14 dias anteriores para criar uma previsão horária para as próximas 48 horas. Os dados de previsão são atualizados diariamente com base nos dados métricos mais recentes do CloudWatch.

Você pode configurar a escalabilidade preditiva no modo forecast only (somente previsão) para avaliar a previsão antes que a escalabilidade preditiva comece a modificar ativamente a capacidade. Em seguida, você pode visualizar os dados de previsão e métricas recentes do CloudWatch em forma de gráfico no console do Amazon EC2 Auto Scaling. Também é possível acessar dados de previsão usando a AWS CLI ou um dos SDKs.

Quando estiver pronto para começar a escalar com a escalabilidade preditiva, alterne a política do modo somente previsão para o modo previsão e escalabilidade. Depois de mudar para o modo previsão e escalabilidade, o grupo do Auto Scaling começa escalar a capacidade com base na previsão.

Usando a previsão, o Amazon EC2 Auto Scaling escala o número de instâncias no início de cada hora:

  • Se a capacidade real for menor que a capacidade prevista, o Amazon EC2 Auto Scaling aumentará a escala do seu grupo do Auto Scaling na horizontal para que sua capacidade desejada seja igual à capacidade prevista.

  • Se a capacidade real for maior do que a capacidade prevista, o Amazon EC2 Auto Scaling não terá a capacidade modificada.

  • Os valores definidos para a capacidade mínima e máxima do grupo do Auto Scaling serão respeitados se a capacidade prevista estiver fora desse intervalo.

Práticas recomendadas

  • Confirme se a escalabilidade preditiva é adequada para sua workload. Uma workload será uma boa opção para o uso da escalabilidade preditiva se ela apresentar padrões de carga recorrentes específicos do dia da semana ou da hora do dia. Para verificar isso, configure políticas de escalabilidade preditiva no modo somente previsão.

  • Avalie a previsão e sua precisão antes de permitir que a escalabilidade preditiva modifique de fato a capacidade para sua aplicação. A escalabilidade preditiva precisa de pelo menos 24 horas de dados históricos para começar a previsão. No entanto, as previsões serão mais eficazes se os dados históricos abrangerem as duas semanas completas. Se você atualizar sua aplicação criando um novo do grupo do Auto Scaling e excluindo o antigo, o novo grupo do Auto Scaling precisará de 24 horas de dados históricos de carga antes que a escalabilidade preditiva possa começar a gerar previsões novamente. Nesse caso, talvez seja necessário esperar alguns dias para obter uma previsão mais precisa.

  • Crie várias políticas de escalabilidade preditiva no modo somente previsão para testar os efeitos potenciais de diferentes métricas. Você pode criar várias políticas de escalabilidade preditiva para cada grupo do Auto Scaling, mas somente uma das políticas pode ser usada para a escalabilidade ativa.

  • Se escolher um par personalizado de métricas, você poderá definir uma combinação diferente de métrica de carga e métrica de escalabilidade. Para evitar problemas, certifique-se de que a métrica de carga escolhida representa a carga total da aplicação.

  • Use a escalabilidade preditiva com a escalabilidade dinâmica. A escalabilidade dinâmica é usada para dimensionar automaticamente a capacidade em resposta a alterações em tempo real na utilização de recursos. Usá-la com a escalabilidade preditiva ajuda você a seguir de perto a curva de demanda para a aplicação, reduzindo a escala na horizontal durante períodos de baixo tráfego e aumentando-a quando o tráfego é maior do que o esperado. Quando várias políticas de escalabilidade estão ativas, cada política determina a capacidade desejada de forma independente e a capacidade desejada é definida como a capacidade máxima entre essas. Por exemplo, se 10 instâncias forem necessárias para permanecer na utilização-alvo em uma política de escalabilidade com monitoramento do objetivo e 8 instâncias forem necessárias para permanecer na utilização-alvo em uma política de dimensionamento preditiva, a capacidade desejada do grupo será definida como 10.

Criar uma política de escalabilidade preditiva (console)

Você pode criar, visualizar e excluir as políticas de escalação preditiva com o console do Amazon EC2 Auto Scaling.

Siga o procedimento a seguir para criar uma política de escalação preditiva usando métricas predefinidas (CPU, E/S da rede ou contagem de solicitações do Application Load Balancer por destino). A maneira mais fácil de criar uma política de escalação preditiva é usar métricas predefinidas. Se você preferir usar métricas personalizadas, consulte Criar uma política de escalação preditiva no console (métricas personalizadas).

Se o grupo do Auto Scaling for novo, ele deverá fornecer pelo menos 24 horas de dados antes que o Amazon EC2 Auto Scaling possa gerar uma previsão para ele.

Para criar uma política de escalabilidade preditiva

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Marque a caixa de seleção ao lado do seu grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página.

  3. Na guia Automatic scaling (Escalabilidade automática), em Scaling policies (Políticas de escalabilidade), escolha Create predictive scaling policy (Criar política de escalabilidade preditiva).

  4. Insira um nome para a política.

  5. Ativar a opção Scale based on forecast (Escala baseada em previsão) para conceder ao Amazon EC2 Auto Scaling permissão para começar a escalar imediatamente.

    Para manter a política no modo somente previsão, deixe a opção Scale based on forecast(Escala baseada em previsão) desativada.

  6. Em Metrics (Métricas), escolha suas métricas na lista de opções. As opções incluem CPU, Network In (Entrada de rede), Network Out (Saída de rede), Application Load Balancer request count (Número de solicitações do Application Load Balancer) e Custom metric pair (Par de métricas personalizadas).

    Se tiver escolhido Application Load Balancer request count per target (Número de solicitações do Application Load Balancer por destino), escolha um grupo de destino em Target group (Grupo de destino). A opção Application Load Balancer request count per target (Número de solicitações do Application Load Balancer por destino) só será válida de você tiver anexado um grupo de destino do Application Load Balancer ao seu grupo do Auto Scaling.

    Se você escolheu Custom metric pair (Par de métricas personalizadas), escolha métricas individuais nas listas suspensas para Load metric (Métrica de carga) e Scaling metric (Métrica de escalabilidade).

  7. Em Target utilization (Utilização-alvo), insira o valor-alvo que o Amazon EC2 Auto Scaling deveria manter. O Amazon EC2 Auto Scaling aumentará a escala na horizontal até que a utilização média seja igual à utilização-alvo ou até atingir o número máximo de instâncias especificado.

    Se sua métrica de escalabilidade for... Então a utilização-alvo representará...
    CPU

    A porcentagem de CPU que cada instância deve idealmente usar.

    Entrada de rede

    O número médio de bytes por minuto que cada instância deve idealmente receber.

    Saída de rede

    O número médio de bytes por minuto que cada instância deve idealmente enviar.

    Número de solicitações do Application Load Balancer por destino

    O número médio de solicitações por minuto que cada instância deve idealmente receber.

  8. (Opcional) Em Pre-launch instances (Iniciar instâncias previamente), escolha com que antecedência você deseja que suas instâncias sejam iniciadas antes que a previsão solicite o aumento de carga.

  9. (Opcional) Em Max capacity behavior (Comportamento na capacidade máxima), escolha se será permitido que o Amazon EC2 Auto Scaling aumente a escala horizontalmente além da capacidade máxima do grupo quando a capacidade prevista exceder o máximo definido. A ativação dessa configuração permite aumentar a escala horizontalmente nos períodos em que estão previstos picos de tráfego.

  10. (Opcional) Em Buffer maximum capacity above the forecasted capacity (Capacidade máxima do buffer acima da capacidade prevista), escolha a quantidade de capacidade adicional a ser usada quando a capacidade prevista estiver próxima de ou exceder a capacidade máxima. O valor é especificado como um percentual em relação à capacidade de prevista. Por exemplo, se o buffer é 10, isso significa um buffer de 10%. Portanto, se a capacidade prevista for 50 e a capacidade máxima for 40, a capacidade máxima real será 55.

    Se esse valor for definido como 0, o Amazon EC2 Auto Scaling poderá escalar a capacidade acima da capacidade máxima para igualar, mas não exceder, a capacidade prevista.

  11. Selecione Create predictive scaling policy (Criar política de escalabilidade preditiva).

Use o procedimento a seguir para criar uma política de escalação preditiva usando métricas personalizadas. As métricas personalizadas podem incluir outras métricas fornecidas pelo CloudWatch ou as métricas que você publicar no CloudWatch. Para usar a contagem de solicitações de CPU, E/S de rede ou Application Load Balancer por destino, consulte Criar uma política de escalação preditiva no console (métricas predefinidas).

Para criar uma política de escalação preditiva usando métricas personalizadas, você deve fazer o seguinte:

  • Você deve fornecer as consultas brutas que permitem que o Amazon EC2 Auto Scaling interaja com as métricas no CloudWatch. Para mais informações, consulte Configurações avançadas de política de escalabilidade preditiva usando métricas personalizadas. Para ter certeza de que o Amazon EC2 Auto Scaling possa extrair os dados de métrica do CloudWatch, confirme se cada consulta está retornando pontos de dados. Confirme isso usando o console do CloudWatch ou a operação de API GetMetricData do CloudWatch.

    nota

    Fornecemos exemplos de cargas úteis JSON no editor de JSON no console do Amazon EC2 Auto Scaling. Esses exemplos oferecem uma referência para os pares de chave-valor exigidos para a adição de outras métricas do CloudWatch fornecidas pela AWS ou as métricas que você publicou anteriormente no CloudWatch. Você pode usá-las como ponto de partida e depois personalizá-las de acordo com as suas necessidades.

  • Se você usar qualquer matemática de métricas, deverá estruturar manualmente o JSON para adequá-lo ao seu cenário específico. Para mais informações, consulte Usar expressões de matemática métrica. Antes de usar matemática de métricas em sua política, confirme se as consultas de métricas baseadas em expressões matemáticas de métricas são válidas e retornam uma única série temporal. Confirme isso usando o console do CloudWatch ou a operação de API GetMetricData do CloudWatch.

Se você cometer um erro em uma consulta fornecendo dados incorretos, como o nome errado do grupo do Auto Scaling, a previsão não terá nenhum dado. Para solucionar problemas de métricas personalizadas, consulte Considerações e solução de problemas.

Para criar uma política de escalabilidade preditiva

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Marque a caixa de seleção ao lado do seu grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página.

  3. Na guia Automatic scaling (Escalabilidade automática), em Scaling policies (Políticas de escalabilidade), escolha Create predictive scaling policy (Criar política de escalabilidade preditiva).

  4. Insira um nome para a política.

  5. Ativar a opção Scale based on forecast (Escala baseada em previsão) para conceder ao Amazon EC2 Auto Scaling permissão para começar a escalar imediatamente.

    Para manter a política no modo somente previsão, deixe a opção Scale based on forecast(Escala baseada em previsão) desativada.

  6. Em Metrics (Métricas), escolha Custom metric pair (Par de métricas personalizado).

    1. Em Load metric, (Métrica de carga), escolha a Custom CloudWatch metric (Métrica personalizada do CloudWatch) para usar uma métrica personalizada. Estruture a carga útil JSON que contém a definição da métrica de carga para a política e cole-a na caixa do editor de Jason, substituindo o que já está na caixa.

    2. Em Scaling metric (Métrica de escalação), escolha Custom CloudWatch metric (Métrica personalizada do CloudWatch) para usar uma métrica personalizada. Estruture a carga útil JSON que contém a definição da métrica de escalação para a política e cole-a na caixa do editor de Jason, substituindo o que já está na caixa.

    3. (Opcional) Para adicionar uma métrica de capacidade personalizada, marque a caixa de seleção Add custom capacity metric (Adicionar métrica de capacidade personalizada). Estruture a carga útil JSON que contém a definição da métrica de capacidade para a política e cole-a na caixa do editor de Jason, substituindo o que já está na caixa.

      Você só precisa habilitar essa opção para criar uma nova série temporal de capacidade se seus dados métricos de capacidade abrangerem vários grupos do Auto Scaling. Nesse caso, você deve usar a matemática de métricas para agregar os dados em uma única série temporal.

  7. Em Target utilization (Utilização-alvo), insira o valor-alvo que o Amazon EC2 Auto Scaling deveria manter. O Amazon EC2 Auto Scaling aumentará a escala na horizontal até que a utilização média seja igual à utilização-alvo ou até atingir o número máximo de instâncias especificado.

  8. (Opcional) Em Pre-launch instances (Iniciar instâncias previamente), escolha com que antecedência você deseja que suas instâncias sejam iniciadas antes que a previsão solicite o aumento de carga.

  9. (Opcional) Em Max capacity behavior (Comportamento na capacidade máxima), escolha se será permitido que o Amazon EC2 Auto Scaling aumente a escala horizontalmente além da capacidade máxima do grupo quando a capacidade prevista exceder o máximo definido. A ativação dessa configuração permite aumentar a escala horizontalmente nos períodos em que estão previstos picos de tráfego.

  10. (Opcional) Em Buffer maximum capacity above the forecasted capacity (Capacidade máxima do buffer acima da capacidade prevista), escolha a quantidade de capacidade adicional a ser usada quando a capacidade prevista estiver próxima de ou exceder a capacidade máxima. O valor é especificado como um percentual em relação à capacidade de prevista. Por exemplo, se o buffer é 10, isso significa um buffer de 10%. Portanto, se a capacidade prevista for 50 e a capacidade máxima for 40, a capacidade máxima real será 55.

    Se esse valor for definido como 0, o Amazon EC2 Auto Scaling poderá escalar a capacidade acima da capacidade máxima para igualar, mas não exceder, a capacidade prevista.

  11. Selecione Create predictive scaling policy (Criar política de escalabilidade preditiva).

Criar uma política de escalabilidade preditiva (AWS CLI)

Use a AWS CLI conforme mostrado a seguir para configurar políticas de escalabilidade preditiva para seu grupo do Auto Scaling. Para obter mais informações sobre as métricas do CloudWatch que você pode especificar para uma política de escalabilidade preditiva, consulte PredictivEscalingMetricSpecification na Referência da API do Amazon EC2 Auto Scaling.

Exemplo 1: Uma política de escalabilidade preditiva que cria previsões, mas não implementa a escalabilidade

O exemplo a seguir mostra uma configuração de política completa que usa métricas de utilização da CPU para escalabilidade preditiva com uma utilização-alvo de 40. O modo ForecastOnly é usado por padrão, a menos que você especifique explicitamente qual modo usar. Salve esta configuração em um arquivo chamado config.json.

{ "MetricSpecifications": [ { "TargetValue": 40, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ] }

Para criar essa política usando a linha de comando, execute o comando put-scaling-policy com o arquivo de configuração especificado, conforme demonstrado no exemplo a seguir.

aws autoscaling put-scaling-policy --policy-name cpu40-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/cpu40-predictive-scaling-policy", "Alarms": [] }

Exemplo 2: Uma política de escalabilidade preditiva que cria previsões e implementa a escalabilidade

Para uma política que permite que o Amazon EC2 Auto Scaling preveja e implemente a escalabilidade, adicione a propriedade Mode com um valor ForecastAndScale. O exemplo a seguir mostra uma configuração de política que usa métricas de número de solicitações do Application Load Balancer. A utilização-alvo é 1000 e a escalabilidade preditiva é definida no modo ForecastAndScale.

{ "MetricSpecifications": [ { "TargetValue": 1000, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ALBRequestCount", "ResourceLabel": "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff" } } ], "Mode": "ForecastAndScale" }

Para criar essa política, execute o comando put-scaling-policy com o arquivo de configuração especificado, conforme demonstrado no exemplo a seguir.

aws autoscaling put-scaling-policy --policy-name alb1000-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:19556d63-7914-4997-8c81-d27ca5241386:autoScalingGroupName/my-asg:policyName/alb1000-predictive-scaling-policy", "Alarms": [] }

Exemplo 3: Uma política de escalabilidade preditiva que pode escalar acima da capacidade máxima

O exemplo a seguir mostra como criar uma política que poderá escalar além do limite máximo de tamanho do grupo quando você precisar que ele lide com uma carga maior do que o normal. Por padrão, o Amazon EC2 Auto Scaling não aumenta a capacidade do EC2 além da capacidade máxima definida. No entanto, pode ser útil deixá-lo ir além com um pouco mais de capacidade para evitar problemas de performance ou disponibilidade.

Para fornecer espaço para o Amazon EC2 Auto Scaling provisionar capacidade adicional quando a capacidade estiver no tamanho máximo do grupo ou muito próxima a ele, especifique as propriedades MaxCapacityBreachBehavior e MaxCapacityBuffer, conforme mostrado no exemplo a seguir. É necessário especificar MaxCapacityBreachBehavior com um valor de IncreaseMaxCapacity. O número máximo de instâncias que seu grupo pode ter depende do valor de MaxCapacityBuffer.

{ "MetricSpecifications": [ { "TargetValue": 70, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ], "MaxCapacityBreachBehavior": "IncreaseMaxCapacity", "MaxCapacityBuffer": 10 }

Neste exemplo, a política é configurada para usar um buffer de 10% ("MaxCapacityBuffer": 10). Assim, se a capacidade prevista for 50 e a capacidade máxima for 40, a capacidade máxima efetiva será 55. Uma política que pudesse escalar a capacidade acima da capacidade máxima para igualar, mas não exceder, a capacidade prevista teria um buffer de 0 ("MaxCapacityBuffer": 0).

Para criar essa política, execute o comando put-scaling-policy com o arquivo de configuração especificado, conforme demonstrado no exemplo a seguir.

aws autoscaling put-scaling-policy --policy-name cpu70-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:d02ef525-8651-4314-bf14-888331ebd04f:autoScalingGroupName/my-asg:policyName/cpu70-predictive-scaling-policy", "Alarms": [] }

Limitações

  • A escalabilidade preditiva requer 24 horas de histórico de métricas antes de começar gerar previsões.

  • Um pressuposto básico da escalabilidade preditivo é que o grupo do Auto Scaling é homogêneo e todas as instâncias têm capacidade igual. Se isso não for verdade para seu grupo, a capacidade prevista pode ser imprecisa. Portanto, tenha cuidado ao criar políticas de escalabilidade preditiva para grupos de instâncias mistas, já que diferentes tipos de instâncias podem ser provisionados com capacidades diferentes. Veja a seguir alguns exemplos para os quais a capacidade prevista será imprecisa:

    • Sua política de escalabilidade preditiva é baseada na utilização da CPU, mas o número de vCPUs em cada instância do Auto Scaling varia entre os tipos de instância.

    • Sua política de escalabilidade preditiva é baseada na entrada ou na saída da rede, mas throughput de largura de banda da rede para cada instância do Auto Scaling varia entre os tipos de instância. Por exemplo, os tipos de instância M5 e M5n são semelhantes, mas o tipo de instância M5n oferece throughput de rede significativamente maior.

Supported Regions (Regiões compatíveis)

O Amazon EC2 Auto Scaling é compatível com políticas de escalação preditiva nas seguintes Regiões da AWS: Leste dos EUA (N. da Virgínia), Leste dos EUA (Ohio), Oeste dos EUA (Oregon), Oeste dos EUA (N. da Califórnia), África (Cidade do Cabo), Canadá (Central), Europa (Frankfurt), Europa (Irlanda), Europa (Londres), Europa (Milão), Europa (Paris), Europa (Estocolmo), Ásia-Pacífico (Hong Kong), Ásia-Pacífico (Jacarta), Ásia-Pacífico (Mumbai), Ásia-Pacífico (Osaka), Ásia-Pacífico (Tóquio), Ásia-Pacífico (Singapura), Ásia-Pacífico (Seul), Ásia-Pacífico (Sydney), Oriente Médio (Bahrein), América do Sul (São Paulo), China (Pequim), China (Ningxia) e AWS GovCloud (Oeste dos EUA).