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

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

Uma política de escalabilidade de rastreamento de destinos escala automaticamente a aplicação com base em um valor de métrica de destino. Ele se adapta automaticamente aos padrões de uso exclusivos de suas aplicações individuais. Isso permite que a aplicação mantenha uma performance ideal e alta utilização de suas instâncias do EC2 para obter eficiência de custos sem 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 os alarmes do CloudWatch que invocam eventos de escalabilidade quando a métrica se desvia do destino. Isso é semelhante a como um termostato mantém a temperatura desejada.

Por exemplo, digamos que você tenha uma aplicação que seja executada 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 na aplicação 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, o Application Auto Scaling aumentará a escala horizontalmente (aumento da capacidade) quando a CPU exceder 50% para lidar com o aumento de carga. Ele reduzirá a escala horizontalmente (diminuição da capacidade) quando a CPU estiver abaixo de 50% para otimizar os custos durante os 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 em seu grupo do Auto Scaling e melhora a tomada de decisões ao determinar quanta capacidade adicionar ao seu grupo. Isso pode ajudar o Amazon EC2 Auto Scaling a tomar decisões mais informadas ao determinar a capacidade a ser adicionada ao seu grupo.

A intenção do Amazon EC2 Auto Scaling é sempre priorizar a disponibilidade. O grupo do Auto Scaling será aumentado a escala horizontalmente se qualquer uma das políticas de monitoramento do destino estiver pronta para ser aumentado a escala horizontalmente. Ele será reduzido a escala horizontalmente se todas as políticas de monitoramento do destino (com a parte de redução da escala horizontalmente ativada) estiverem prontas para serem reduzidas a escala horizontalmente.

Escolher métricas

É possível criar políticas de escalabilidade de rastreamento de destino com métricas predefinidas ou personalizadas. As métricas predefinidas facilitam o acesso às métricas mais usadas para escalabilidade. As métricas personalizadas permitem que você escale outras métricas disponíveis do CloudWatch, incluindo as métricas de alta resolução, que são publicadas em intervalos mais precisos, na ordem de alguns segundos. É possível publicar suas próprias métricas de alta resolução ou métricas publicadas por outros serviços da AWS.

Para obter mais informações sobre a criação de políticas de rastreamento de alvos usando métricas de alta resolução, consulte Crie uma política de rastreamento de destino usando métricas de alta resolução para uma resposta mais rápida.

O rastreamento de destino oferece suporte às 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 em todas as interfaces de rede pelo grupo do Auto Scaling.

  • ASGAverageNetworkOut: número médio de bytes enviados em todas as interfaces de rede pelo grupo do Auto Scaling.

  • ALBRequestCountPerTarget: número médio de solicitações do Application Load Balancer por destino para seu grupo do Auto Scaling.

Importante

Outras informações valiosas sobre as métricas de uso de CPU, E/S de rede e número de solicitações do Application Load Balancer por destino estão disponíveis respectivamente no tópico Listar as métricas disponíveis do CloudWatch para as instâncias no Guia do usuário do Amazon EC2 para instâncias do Linux e no tópico Métricas do CloudWatch para o Application Load Balancer no Guia do usuário de Application Load Balancers.

Você pode escolher outras métricas disponíveis do CloudWatch ou suas próprias métricas no CloudWatch especificando uma métrica personalizada. Para obter um exemplo que especifica uma especificação de métrica personalizada para uma política de escala de monitoramento do destino usando o AWS CLI, consulte Exemplo de políticas de escalabilidade para a AWS CLI.

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

  • Recomendamos que você somente use as métricas que estejam disponíveis em intervalos de um minuto ou menos para ajudar a escalar mais rapidamente em resposta a alterações na utilização. Métricas publicadas em intervalos menores permitem que a política de rastreamento de metas detecte e responda mais rapidamente às mudanças na utilização do seu grupo do Auto Scaling.

  • Se você escolher métricas predefinidas que sejam publicadas pelo Amazon EC2, como utilização de CPU, recomendamos que você habilite o monitoramento detalhado. Por padrão, todas as métricas do Amazon EC2 são publicadas em intervalos de cinco minutos, mas podem ser configuradas para um intervalo menor, de um minuto, ativando o monitoramento detalhado. Para obter informações sobre como ativar o monitoramento detalhado, consulte Configurar 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 do Elastic Load Balancing RequestCount). 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 do Elastic Load Balancing Latency). A latência da solicitação pode aumentar com base no aumento da utilização, mas não necessariamente muda de forma proporcional.

    • A métrica da fila do Amazon SQS do CloudWatch 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 obter mais informações, consulte Ajuste de escala baseado 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 parâmetro ResourceLabel para uma política de escala de monitoramento do destino usando o AWS CLI, consulte Exemplo de políticas de escalabilidade para a AWS CLI.

  • Quando uma métrica emitir valores 0 reais para o CloudWatch (por ex., ALBRequestCountPerTarget), o grupo do Auto Scaling poderá reduzir a escala horizontalmente para 0 quando não houver tráfego para sua aplicação durante um período contínuo. 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 obter mais informações, consulte Criação de uma política de escalabilidade com monitoramento de destino com a matemática em métricas.

Definir valor de objetivo

Ao criar uma política de escalabilidade com monitoramento de objetivo, é necessário 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 sua aplicação 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.

Definir 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 é contada para as métricas de instância do EC2 agregadas do grupo do Auto Scaling.

Enquanto as instâncias estiverem no período de aquecimento, suas políticas de escalabilidade somente aumentarão a escala na horizontal se o valor da métrica das instâncias que não estão se aquecendo for maior do que a utilização de destino 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 para o aquecimento da instância padrão definido para o grupo. Se o aquecimento da instância padrão for nulo, ele retornará ao valor de desaquecimento padrão. Recomendamos usar o aquecimento padrão da instância 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 alarmes do CloudWatch usados com uma política de dimensionamento com monitoramento de objetivo. O Amazon EC2 Auto Scaling cria e gerencia os alarmes do CloudWatch que estão associados às suas políticas de escalabilidade com monitoramento de objetivo, além de poder editá-los, substituí-los ou excluí-los quando necessário para personalizar a experiência de escalabilidade das suas aplicações e dos seus padrões de utilização em constante alteração.

  • 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 maior controle, uma política de escalabilidade por etapas pode ser a melhor opção. É possível desabilitar temporariamente a parte de redução de uma política com rastreamento de destino. Isso ajuda a manter um número mínimo de instâncias para implantações com êxito.

  • Se houver pontos de dados faltando na métrica, isso fará com que o estado de alarme do CloudWatch mude para INSUFFICIENT_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, suponhamos 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 a remoção de 0,5 instâncias aumenta a utilização da CPU para mais de 50%, optaremos por não aumentar a escala até que a métrica diminua o suficiente para que pensemos que a escalabilidade não causará oscilação.

    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.