Políticas de escalabilidade com monitoramento do objetivo para o Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Políticas de escalabilidade com monitoramento do objetivo para o Amazon EC2 Auto Scaling

Uma política de escalabilidade de rastreamento de metas dimensiona automaticamente a capacidade do seu grupo de Auto Scaling com base em um valor métrico alvo. Isso permite que a aplicação mantenha uma performance ideal e uma eficiência de custos sem a necessidade de intervenção manual.

Com o rastreamento de destinos, você seleciona uma métrica e um valor de destino para representar a utilização média ideal ou o nível de throughput para a aplicação. O Amazon EC2 Auto Scaling cria e gerencia CloudWatch os alarmes que invocam eventos de escalabilidade quando a métrica se desvia da meta. Por exemplo, isso é semelhante à forma como um termostato mantém uma temperatura alvo.

Por exemplo, digamos que você tenha um aplicativo que seja executado em duas instâncias e queira que a utilização de CPU do grupo do Auto Scaling permaneça em cerca de 50% quando a carga no aplicativo mudar. Isso fornece capacidade extra para lidar com picos de tráfego sem manter um número excessivo de recursos ociosos.

Você pode satisfazer essa necessidade criando uma política de escalabilidade com monitoramento de objetivo visando uma utilização média de 50% da CPU. Em seguida, seu grupo de Auto Scaling se expandirá ou aumentará a capacidade quando a CPU exceder 50% para lidar com o aumento da carga. Ele aumentará ou diminuirá a capacidade quando a CPU cair abaixo de 50% para otimizar os custos durante períodos de baixa utilização.

Várias políticas de escalabilidade de monitoramento de objetivo

Para ajudar a otimizar o desempenho de escalonamento, você pode usar várias políticas de escalabilidade com monitoramento de objetivo juntas desde que cada uma delas use uma métrica diferente. Por exemplo, utilização e throughput podem promover influência cruzada. Sempre que uma dessas métricas muda, geralmente isso significa que outras métricas também serão afetadas. Portanto, o uso de várias métricas fornece informações adicionais sobre a carga sob a qual seu grupo de Auto Scaling está. Isso pode ajudar o Amazon EC2 Auto Scaling a tomar decisões mais informadas ao determinar quanta capacidade adicionar ao seu grupo.

A intenção do Amazon EC2 Auto Scaling é sempre priorizar a disponibilidade. Ele expandirá o grupo de Auto Scaling se alguma das políticas de rastreamento de alvos estiver pronta para ser expandida. Ele será ampliado somente se todas as políticas de rastreamento de alvos (com a parte de expansão ativada) estiverem prontas para serem ampliadas.

Escolher métricas

É possível criar políticas de escalabilidade de rastreamento de destino com métricas predefinidas ou personalizadas.

Ao criar uma política de escalabilidade de rastreamento de destino com um tipo de métrica predefinida, você escolhe uma métrica da lista de métricas predefinidas a seguir.

  • ASGAverageCPUUtilization: média de utilização da CPU do grupo do Auto Scaling.

  • ASGAverageNetworkIn: número médio de bytes recebidos por uma única instância em todas as interfaces de rede.

  • ASGAverageNetworkOut: número médio de bytes enviados de uma única instância em todas as interfaces de rede.

  • ALBRequestCountPerTarget: quantidade média de solicitações do Application Load Balancer por destino.

Importante

Outras informações valiosas sobre as métricas de utilização da CPU, E/S de rede e contagem de solicitações do Application Load Balancer por destino podem ser encontradas no tópico Listar as métricas CloudWatch disponíveis para suas instâncias no Guia do usuário do Amazon EC2 e CloudWatch as métricas do seu tópico Application Load Balancer no Guia do usuário para Application Load Balancers, respectivamente.

Você pode escolher outras CloudWatch métricas disponíveis ou suas próprias métricas CloudWatch especificando uma métrica personalizada. Você deve usar o AWS CLI ou um SDK para criar uma política de rastreamento de metas com uma especificação métrica personalizada. Para obter um exemplo que especifica uma especificação métrica personalizada para uma política de escalabilidade de rastreamento de metas usando o AWS CLI, consulte. Exemplo de políticas de escalabilidade para a AWS Command Line Interface (AWS CLI)

Lembre-se do seguinte ao escolher uma métrica:

  • Recomendamos que você somente use as métricas que estão disponíveis em intervalos de um minuto para ajudar a escalar mais rapidamente em resposta a alterações na utilização. O rastreamento de destino avaliará as métricas agregadas com uma granularidade de um minuto para todas as métricas predefinidas e personalizadas, mas a métrica subjacente talvez publique os dados com menos frequência. Por exemplo, todas as métricas do Amazon EC2 são enviadas em intervalos de cinco minutos, por padrão, mas podem ser configuradas para um minuto (o que é conhecido como monitoramento detalhado). Essa escolha depende dos serviços individuais. A maioria tenta usar o menor intervalo possível. Para obter informações sobre como habilitar o monitoramento detalhado, consulteConfigurar monitoramento para instâncias do Auto Scaling.

  • Nem todas as métricas personalizadas funcionam para rastreamento de destino. A métrica deve ser de utilização válida e descrever o quão ocupada uma instância está. O valor da métrica deve aumentar e diminuir em proporção ao número das instâncias no grupo do Auto Scaling. Isso é para que os dados da métrica possam ser usados para expandir ou reduzir o número de instâncias. Por exemplo, a utilização da CPU de um grupo do Auto Scaling funcionará (ou seja, a métrica CPUUtilization do Amazon EC2 com a dimensão da métrica AutoScalingGroupName) se a carga no grupo do Auto Scaling for distribuída entre as instâncias.

  • As métricas a seguir não funcionam para rastreamento de destino:

    • O número de solicitações recebidas pelo balanceador de carga voltadas para o grupo do Auto Scaling (ou seja, a métrica RequestCount do Elastic Load Balancing). O número de solicitações recebidas pelo balanceador de carga não é alterado com base na utilização do grupo do Auto Scaling.

    • A latência da solicitação do balanceador de carga (ou seja, a métrica Latency do Elastic Load Balancing). A latência da solicitação pode aumentar com base no aumento da utilização, mas não necessariamente muda de forma proporcional.

    • A CloudWatch métrica de fila do Amazon SQS. ApproximateNumberOfMessagesVisible O número de mensagens em uma fila pode não mudar proporcionalmente ao tamanho do grupo do Auto Scaling que processa mensagens da fila. Contudo, uma métrica personalizada que meça o número de mensagens na fila por instância do EC2 no grupo do Auto Scaling pode funcionar. Para ter mais informações, consulte Escalabilidade baseada no Amazon SQS.

  • Para usar a métrica ALBRequestCountPerTarget, é necessário especificar o parâmetro ResourceLabel a fim de identificar o grupo de destino do balanceador de carga que está associado à métrica. Para obter um exemplo que especifica o ResourceLabel parâmetro para uma política de escalabilidade de rastreamento de metas usando o AWS CLI, consulte. Exemplo de políticas de escalabilidade para a AWS Command Line Interface (AWS CLI)

  • Quando uma métrica emite valores reais de 0 para CloudWatch (por exemplo,ALBRequestCountPerTarget), um grupo de Auto Scaling pode escalar até 0 quando não há tráfego para seu aplicativo por um período prolongado. A capacidade mínima do grupo deve estar definida como 0 para que seu grupo do Auto Scaling reduza a escala horizontalmente para 0 quando não houver solicitação roteada para ele.

  • Em vez de publicar novas métricas para usar em sua política de escalabilidade, é possível usar a matemática métrica para combinar métricas existentes. Para ter mais informações, consulte Crie uma política de escalabilidade de rastreamento de destino para Amazon EC2 Auto Scaling usando matemática em métricas.

Definir valor de objetivo

Ao criar uma política de escalabilidade com monitoramento de objetivo, você deve especificar um valor para o objetivo. O valor-alvo representa o uso ou o throughput médio ideal para o grupo do Auto Scaling. Para usar os recursos de maneira econômica, defina o valor do objetivo com o número mais alto possível considerando um buffer razoável para aumentos inesperados de tráfego. Quando seu aplicativo aumentar a escala horizontalmente para um fluxo de tráfego normal, o valor efetivo da métrica deve estar no valor desejado ou logo abaixo dele.

Quando uma política de dimensionamento é baseada no throughput, como o número de solicitações por destino para um Application Load Balancer, E/S de rede ou outras métricas de contagem, o valor-alvo representa o throughput médio ideal de uma única instância em um período de um minuto.

Defina o tempo de aquecimento da instância

Como opção, você pode especificar o número de segundos necessários para o aquecimento de uma instância recém-ativada. Até que o tempo de aquecimento especificado expire, uma instância não é contabilizada nas métricas agregadas da instância EC2 do grupo Auto Scaling.

Enquanto as instâncias estão no período de aquecimento, suas políticas de escalabilidade só se expandem se o valor métrico das instâncias que não estão se aquecendo for maior do que a meta de utilização da política.

Se o grupo voltar a aumentar a escala na horizontal, as instâncias que ainda estão se aquecendo serão contadas como parte da capacidade desejada para a próxima ação de aumento da escala na horizontal. A intenção é expandir de forma contínua (mas não excessivamente).

Enquanto a atividade de aumentar a escala na horizontal estiver em andamento, todas as atividades de reduzir a escala na horizontal iniciadas por políticas de escalabilidade serão bloqueadas até que as instâncias terminem de aquecer. Quando as instâncias terminarem de se aquecer, se ocorrer um evento de reduzir a escala horizontalmente, todas as instâncias atualmente em processo de encerramento serão contabilizadas na capacidade atual do grupo ao calcular a nova capacidade desejada. Portanto, não removemos mais instâncias do que o necessário do grupo do Auto Scaling.

Valor padrão

Se nenhum valor for definido, a política de escalabilidade usará o valor padrão, que é o valor do aquecimento de instância padrão definido para o grupo. Se o aquecimento padrão da instância for nulo, ele voltará ao valor do tempo de recarga padrão. Recomendamos usar o aquecimento de instância padrão para facilitar a atualização de todas as políticas de escalabilidade quando o horário de aquecimento mudar.

Considerações

As considerações a seguir são aplicáveis ao trabalhar com políticas de escalabilidade com monitoramento de objetivo:

  • Não crie, edite ou exclua os CloudWatch alarmes usados com uma política de escalabilidade de rastreamento de metas. O Amazon EC2 Auto Scaling cria e gerencia CloudWatch os alarmes associados às suas políticas de escalabilidade de rastreamento de destino e os exclui quando não são mais necessários.

  • Uma política de escalonamento com monitoramento de objetivo prioriza a disponibilidade durante períodos de níveis flutuantes de tráfego, reduzindo a escala na horizontal de maneira mais gradual quando o tráfego está diminuindo. Se você quiser que seu grupo do Auto Scaling tenha a escala reduzida na horizontal imediatamente após o término de uma workload, é possível desabilitar a parte de redução da escala da política. Isso proporciona a flexibilidade de usar o método de redução da escala na horizontal que melhor atenda às suas necessidades quando a utilização estiver baixa. Para garantir que a redução da escala na horizontal ocorra o mais rápido possível, recomendamos não usar uma política simples de escalabilidade para evitar a adição de um período de esfriamento.

  • Se faltarem pontos de dados na métrica, isso fará com que o estado do CloudWatch alarme mude paraINSUFFICIENT_DATA. Quando isso acontece, o Amazon EC2 Auto Scaling não poderá escalar seu grupo até que novos pontos de dados sejam encontrados.

  • A matemática métrica pode ser útil se a métrica for intencionalmente relatada de maneira esparsa. Por exemplo, para usar os valores mais recentes, use a função FILL(m1,REPEAT), na qual m1 é a métrica.

  • É possível ver lacunas entre o valor de destino e os pontos de dados de métrica reais. Isso ocorre porque agimos de maneira conservadora arredondando para cima ou para baixo, ao determinarmos quantas instâncias adicionar ou remover. Isso evita a adição de um número insuficiente de instâncias ou remova muitas instâncias. No entanto, para grupos do Auto Scaling menores, com um número menor de instâncias, a utilização do grupo pode parecer distante do valor do objetivo. Por exemplo, vamos supor que você defina um valor de objetivo de 50% para a utilização da CPU, e o seu grupo do Auto Scaling exceda o objetivo. Podemos determinar que a adição de 1,5 instância diminuirá a utilização da CPU em cerca de 50%. Como não é possível adicionar 1,5 instância, arredondamos para cima e adicionamos duas instâncias. Isso pode diminuir a utilização da CPU para um valor abaixo de 50%, mas garante que sua aplicação tenha recursos suficientes para oferecer suporte a ele. Da mesma forma, se determinarmos que remover 1,5 instância aumenta a utilização da CPU para acima de 50%, removeremos apenas uma instância.

    Para grupos do Auto Scaling maiores, com mais instâncias, a utilização é distribuída entre um maior número de instâncias, caso em que adicionar ou remover instâncias causa menos de uma lacuna entre o valor do objetivo e os pontos de dados de métrica reais.

  • Uma política de escalabilidade com monitoramento do objetivo pressupõe que ela deve aumentar a escalabilidade de seu grupo do Auto Scaling quando a métrica especificada estiver acima do valor do objetivo. Você não pode usar uma política de escalabilidade com monitoramento do objetivo para aumentar horizontalmente a escala do seu grupo do Auto Scaling quando a métrica especificada estiver abaixo do valor do objetivo.

Criar uma política de dimensionamento com monitoramento do objetivo

Para criar uma política de escalabilidade de rastreamento de metas para seu grupo de Auto Scaling, use um dos métodos a seguir.

Antes de começar, confirme se sua métrica preferida está disponível em intervalos de 1 minuto (em comparação com o intervalo padrão de 5 minutos das métricas do Amazon EC2).

Console
Para criar uma política de escalabilidade com monitoramento do objetivo para um grupo do Auto Scaling novo
  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. Selecione Criar grupo do Auto Scaling.

  3. Nas etapas 1, 2 e 3, escolha as opções conforme desejado e prossiga para a Etapa 4: Configurar políticas de escalabilidade e tamanho do grupo.

  4. Em Escalabilidade, especifique o intervalo no qual você deseja escalar atualizando a capacidade mínima desejada e a capacidade máxima desejada. Essas duas configurações permitem que seu grupo do Auto Scaling seja escalado dinamicamente. Para ter mais informações, consulte Definir limites de escalabilidade para seu grupo do Auto Scaling.

  5. Em Escalabilidade automática, escolha Política de escalabilidade com rastreamento do destino.

  6. Para definir a política, faça o seguinte:

    1. Especifique um nome para a política.

    2. Escolha uma métrica para o Tipo de métrica.

      Se tiver escolhido Application Load Balancer request count per target (Contagem de solicitações do Application Load Balancer por destino), escolha um grupo de destino em Target group (Grupo de destino).

    3. Especifique um Target value (Valor de destino) para a métrica.

    4. (Opcional) Para aquecimento da instância, atualize o valor do aquecimento da instância conforme necessário.

    5. (Opcional) Selecione Disable scale in to create only a scale-out policy (Desabilitar redução para criar somente uma política de expansão). Isso permite que você crie uma política de redução separada de um tipo diferente, se desejado.

  7. Prossiga para criar o grupo do Auto Scaling. Sua política de escalabilidade será criada depois que o grupo do Auto Scaling for criado.

Para criar uma política de escalabilidade com monitoramento do objetivo para um grupo do Auto Scaling existente
  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. Verificar se os limites de escalabilidade estão definidos adequadamente. Por exemplo, se sua capacidade desejada já estiver no máximo, especifique um novo máximo para aumentar a escala horizontalmente. Para ter mais informações, consulte Definir limites de escalabilidade para seu grupo do Auto Scaling.

  4. Na guia Automatic scaling (Escalabilidade automática), em Dynamic scaling policies (Políticas dinâmicas de escalabilidade), selecione Create dynamic scaling policy (Criar política dinâmica de escalabilidade).

  5. Para definir a política, faça o seguinte:

    1. Em Tipo de política, mantenha o padrão de Escalabilidade de rastreamento de destino.

    2. Especifique um nome para a política.

    3. Escolha uma métrica para o Tipo de métrica. É possível escolher apenas um tipo de métrica. Para usar mais de uma métrica, crie várias políticas.

      Se você escolheu Application Load Balancer request count per target (Contagem de solicitações do balanceador de carga da aplicação por destino), escolha um grupo de destino em Target group (Grupo de destino).

    4. Especifique um Target value (Valor de destino) para a métrica.

    5. (Opcional) Para aquecimento da instância, atualize o valor do aquecimento da instância conforme necessário.

    6. (Opcional) Selecione Disable scale in to create only a scale-out policy (Desabilitar redução para criar somente uma política de expansão). Isso permite que você crie uma política de redução separada de um tipo diferente, se desejado.

  6. Selecione Create (Criar).

AWS CLI

Para criar uma política de escalabilidade de rastreamento de metas, você pode usar o exemplo a seguir para ajudá-lo a começar. Substitua cada espaço reservado para entrada do usuário por suas próprias informações.

Para criar uma política de escalabilidade com rastreamento do destino (AWS CLI)
  1. Use o cat comando a seguir para armazenar um valor alvo para sua política de escalabilidade e uma especificação métrica predefinida em um arquivo JSON nomeado config.json em seu diretório inicial. Veja a seguir um exemplo de configuração de rastreamento de metas que mantém a utilização média da CPU em 50%.

    $ cat ~/config.json { "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }

    Para obter mais informações, consulte PredefinedMetricEspecificação na Referência da API Auto Scaling do Amazon EC2.

  2. Use o comando put-scaling-policy, juntamente com o arquivo config.json que você criou na etapa anterior, para criar sua política de escalabilidade.

    aws autoscaling put-scaling-policy --policy-name cpu50-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

    Se for bem-sucedido, esse comando retornará os ARNs e os nomes dos dois CloudWatch alarmes criados em seu nome.

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/cpu50-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }