Grupos de alta atividade do 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á.

Grupos de alta atividade do Amazon EC2 Auto Scaling

Um grupo de alta atividade oferece a capacidade de diminuir a latência para suas aplicações que apresentam tempos de inicialização excepcionalmente longos, por exemplo, porque as instâncias precisam gravar grandes quantidades de dados no disco. Com os grupos de alta atividade, você não precisa mais provisionar excessivamente seus grupos do Auto Scaling para gerenciar a latência a fim de melhorar a performance das aplicações. Para obter mais informações, consulte a postagem do blog Escalabilidade mais rápida de aplicações com grupos de alta atividade do EC2 Auto Scaling.

Importante

Criar um grupo de alta atividade quando ele não é necessário pode gerar custos desnecessários. Se o tempo da primeira inicialização não causar problemas de latência visíveis para sua aplicação, provavelmente não há necessidade de usar um grupo de alta atividade.

Conceitos principais

Antes de começar a usar, familiarize-se com os seguintes conceitos principais:

Grupo de alta atividade

Um grupo de alta atividade é um grupo de instâncias do EC2 pré-inicializadas que permanece ao lado de um grupo do Auto Scaling. Sempre que é necessário aumentar a escala da aplicação na horizontal, o grupo do Auto Scaling pode utilizar o grupo de alta atividade para atender à nova capacidade desejada. Isso o ajuda a garantir que as instâncias estejam prontas para começar rapidamente a servir o tráfego das aplicações, acelerando a resposta a um evento de aumento de escala na horizontal. Quando as instâncias deixam o grupo de alta atividade, elas passam a contar para a capacidade desejada do grupo. Isso é conhecido como inicialização a quente.

Enquanto as instâncias estão no pool quente, suas políticas de escalabilidade só são dimensionadas se o valor da métrica das instâncias que estão no estado InService for maior que o limite alto de alarme da política da escalabilidade (que é o mesmo que a utilização de destino de uma política de dimensionamento com monitoramento do objetivo).

Tamanho do grupo de alta atividade

Por padrão, o tamanho do grupo de alta atividade é calculado como a diferença entre a capacidade máxima do grupo do Auto Scaling e a capacidade desejada. Por exemplo, se a capacidade desejada do grupo do Auto Scaling for 6 e a capacidade máxima for 10, o tamanho do grupo de alta atividade será 4 quando você configurar o grupo de alta atividade pela primeira vez e o pool estiver inicializando.

Para especificar a capacidade máxima do grupo de alta atividade separadamente, defina um valor para a capacidade máxima preparada que seja maior que a capacidade atual do grupo. Quando você definir um valor para a capacidade máxima preparada, o tamanho do grupo de alta atividade será calculado como a diferença entre a capacidade máxima preparada e a atual capacidade desejada do grupo. Por exemplo, se a capacidade desejada do grupo do Auto Scaling for 6, a capacidade máxima for 10 e a capacidade máxima preparada for 8, o tamanho do grupo de alta atividade será 2 quando você configurar o grupo de alta atividade pela primeira vez e o grupo estiver inicializando.

Talvez seja necessário usar apenas a opção de capacidade máxima preparada ao trabalhar com grupos grandes do Auto Scaling para gerenciar os benefícios de custo de ter um grupo de alta atividade. Por exemplo, talvez um grupo do Auto Scaling com 1.000 instâncias, uma capacidade máxima de 1.500 (para fornecer capacidade extra durante picos de tráfego de emergência) e um grupo de alta atividade de 100 instâncias seja uma estratégia melhor para ajudar você a atingir seus objetivos do que manter 500 instâncias reservadas para uso futuro no grupo de alta atividade.

Tamanho mínimo do grupo de alta atividade

Considere usar a configuração de tamanho mínimo para definir de modo estático o número mínimo de instâncias a serem mantidas no grupo de alta atividade. Não há tamanho mínimo definido por padrão.

Estado da instância do grupo de alta atividade

Você pode manter as instâncias no grupo de alta atividade em um de três estados: Stopped, Running, ou Hibernated. Manter as instâncias no estado Stopped é uma maneira eficaz de minimizar os custos. Com as instâncias interrompidas, você paga apenas pelos volumes usados e pelos endereços IP elásticos anexados às instâncias.

Você também pode manter as instâncias em um estado Hibernated para interromper instâncias sem excluir o conteúdo da memória (RAM). Quando uma instância é hibernada, isso sinaliza ao sistema operacional para salvar o conteúdo da RAM no volume raiz do Amazon EBS. Quando você inicia a instância novamente, o volume raiz é restaurado ao seu estado anterior, e o conteúdo da RAM é recarregado. Enquanto as instâncias estão em hibernação, você paga somente pelos volumes do EBS, incluindo armazenamento para o conteúdo da RAM e os endereços IP elásticos anexados às instâncias.

Também é possível manter instâncias em um estado Running no grupo de alta atividade, mas isso é altamente desaconselhável a fim de evitar a geração de cobranças desnecessárias. Quando as instâncias são interrompidas ou hibernadas, você economiza o custo das próprias instâncias. Você paga pelas instâncias somente quando elas são executadas.

Ganchos do ciclo de vida

Você usa hooks do ciclo de vida para colocar instâncias em um estado de espera para poder executar ações personalizadas nas instâncias. Ações personalizadas são executadas à medida que as instâncias são iniciadas ou antes de serem terminadas.

Em uma configuração de pool quente, os hooks do ciclo de vida atrasam a interrupção ou hibernação das instâncias e a colocação em serviço durante um evento de expansão até que concluam a inicialização. Se você adicionar um grupo de alta atividade ao seu grupo do Auto Scaling sem um gancho do ciclo de vida, as instâncias que demorarem muito para concluir a inicialização poderão ser interrompidas ou hibernadas e, em seguida, colocadas em serviço durante um evento de aumento de escala na horizontal antes de estarem prontas.

Política de reutilização de instâncias

Por padrão, o Amazon EC2 Auto Scaling termina suas instâncias quando seu grupo do Auto Scaling reduz a escala na horizontal. Em seguida, ele inicia novas instâncias no grupo de alta atividade para substituir as instâncias que foram terminadas.

Se desejar devolver instâncias ao grupo de alta atividade, você poderá especificar uma política de reutilização de instâncias. Isso permite reutilizar instâncias que já estão configuradas para atender ao tráfego de aplicações. Para garantir que seu grupo de alta atividade não seja excessivamente provisionado, o Amazon EC2 Auto Scaling pode terminar instâncias no grupo de alta atividade para reduzir seu tamanho quando for maior do que o necessário, com base em suas configurações. Ao terminar instâncias no grupo de alta atividade, ele usa a política de término padrão para escolher quais instâncias terminar primeiro.

Importante

Se você desejar hibernar instâncias em redução de escala na horizontal e houver instâncias existentes no grupo do Auto Scaling, elas deverão atender aos requisitos de hibernação de instâncias. Caso contrário, quando as instâncias forem devolvidas ao grupo de alta atividade, elas recuarão para serem interrompidas em vez de serem hibernadas.

nota

No momento, só é possível especificar uma política de reutilização de instâncias usando a AWS CLI ou um SDK. Esse recurso não está disponível no console.

Pré-requisitos

Antes de criar um grupo de aquecimento para seu grupo do Auto Scaling, decida como você usará hooks do ciclo de vida para inicializar novas instâncias com um estado inicial apropriado.

Para realizar ações personalizadas em instâncias enquanto elas estão em estado de espera devido a um hook do ciclo de vida, você tem duas opções:

  • Para cenários simples em que você deseja executar comandos em suas instâncias no início, você pode incluir um script de dados do usuário ao criar um modelo de execução ou configuração de execução para o grupo do Auto Scaling. Os scripts de dados do usuário são apenas scripts de shell normais ou diretivas de cloud-init que são executadas pelo cloud-init quando as instâncias são iniciadas. O script também pode controlar quando as instâncias fazem a transição para o próximo estado usando o ID da instância na qual é executado. Se você já não estiver fazendo isso, atualize seu script para recuperar o ID da instância nos metadados da instância. Para mais informações, consulte Retrieve instance metadata (Recuperar metadados de instância) no Guia do usuário do Amazon EC2 para instâncias Linux.

    dica

    Para executar scripts de dados do usuário quando uma instância é reiniciada, os dados do usuário devem estar no formato MIME de várias partes e especificar o seguinte na seção #cloud-config dos dados do usuário:

    #cloud-config cloud_final_modules: - [scripts-user, always]
  • Para cenários avançados em que você precisa de um serviço, como AWS Lambda fazer algo quando as instâncias entram ou saem do pool aquecido, você pode criar um gancho de ciclo de vida para seu grupo de Auto Scaling e configurar o serviço de destino para realizar ações personalizadas com base nas notificações do ciclo de vida. Para ter mais informações, consulte Destinos de notificação compatíveis.

Preparar instâncias para hibernação

Para preparar instâncias do Auto Scaling para usar o estado de grupo Hibernated, crie um novo modelo de execução ou configuração de execução configurada corretamente para oferecer suporte à hibernação de instância, conforme descrito no tópico Pré-requisitos de hibernação no Guia do usuário do Amazon EC2 para instâncias do Linux. Em seguida, associe o novo modelo de execução ou a configuração de execução ao grupo do Auto Scaling e inicie uma atualização de instância para substituir as instâncias associadas a um modelo de execução ou a uma configuração de execução anterior. Para ter mais informações, consulte Use uma atualização de instância para atualizar instâncias em um grupo de Auto Scaling.

Atualização das instâncias em um grupo de aquecimento

Para atualizar as instâncias em um grupo de aquecimento, você cria um novo modelo de execução ou configuração de execução e o associa ao grupo do Auto Scaling. Todas as novas instâncias serão iniciadas usando a nova AMI e outras atualizações especificadas no modelo de execução ou na configuração de execução, mas as instâncias existentes não serão afetadas.

Para forçar as instâncias do grupo de aquecimento de substituição a executar esse uso, o modelo de execução ou a configuração de execução, é possível iniciar uma atualização de instância para fazer uma atualização contínua de seu grupo. Uma atualização de instância substitui primeiro as instâncias InService. Em seguida, ela substitui as instâncias no grupo de alta atividade. Para ter mais informações, consulte Use uma atualização de instância para atualizar instâncias em um grupo de Auto Scaling.

Você pode visitar nosso GitHubrepositório para ver exemplos de ganchos de ciclo de vida para piscinas aquecidas.

Limitações

  • Não há suporte para grupos de instâncias mistas. Não é possível adicionar um grupo de aquecimento aos grupos do Auto Scaling que substituem o tipo de instância especificado em um modelo de execução ou que estão configurados para executar instâncias spot.

  • O Amazon EC2 Auto Scaling pode colocar uma instância em um estado Stopped ou Hibernated somente quando ele tem um volume do Amazon EBS como dispositivo raiz. Instâncias que usam armazenamento de instâncias para o dispositivo raiz não podem ser interrompidas ou hibernadas.

  • O Amazon EC2 Auto Scaling poderá colocar uma instância em um estado Hibernated somente se atender a todos os requisitos listados no tópico Pré-requisitos de hibernação no Guia do usuário do Amazon EC2 para instâncias do Linux.

  • Se o grupo de alta atividade se esgotar em meio a um evento aumento de escala horizontal, as instâncias serão iniciadas diretamente no grupo do Auto Scaling (uma inicialização de baixa atividade). Uma inicialização de baixa atividade também poderá ocorrer se uma zona de disponibilidade estiver sem capacidade.

  • Se você tentar usar grupos de alta atividade com um grupo de nós gerenciados do Amazon Elastic Kubernetes Service (Amazon EKS), as instâncias que ainda estão sendo inicializadas poderão se registrar no cluster do Amazon EKS. Como resultado, o cluster pode agendar trabalhos em uma instância enquanto se prepara para ser interrompido ou hibernado.

  • Da mesma forma, se você tentar usar um grupo de alta atividade com um cluster do Amazon ECS, as instâncias poderão se registrar no cluster antes que a inicialização seja concluída. Para resolver esse problema, você deve configurar um modelo de inicialização ou uma configuração de inicialização que inclua uma variável de configuração de agente especial nos dados do usuário. Para obter mais informações, consulte Using a warm pool for your Auto Scaling group (Usar um grupo de alta atividade para o grupo do Auto Scaling) no Amazon Elastic Container Service Developer Guide (Guia do desenvolvedor do Amazon Elastic Container Service).

  • O suporte à hibernação para piscinas aquecidas está disponível em todas as lojas em Regiões da AWS que o Amazon EC2 Auto Scaling e a hibernação estão disponíveis, exceto o seguinte:

    • Ásia-Pacífico (Hyderabad)

    • Ásia-Pacífico (Melbourne)

    • Oeste do Canadá (Calgary)

    • Região da China (Pequim)

    • Região da China (Ningxia)

    • Europa (Espanha)

    • Israel (Tel Aviv)