Grupos de alta atividade do Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

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

Ganchos do ciclo de vida permitem que você coloque 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 grupo de alta atividade, os ganchos do ciclo de vida também podem adiar a interrupção ou a hibernação das instâncias e atrasar sua colocação em serviço durante um evento de aumento de escala na horizontal até que elas tenham concluído 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

Decida como você usará ganchos do ciclo de vida para preparar as instâncias para uso. Existem duas formas de executar ações personalizadas em suas instâncias.

  • 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 o AWS Lambda para fazer algo à medida que as instâncias entram e saem do grupo de alta atividade, você pode criar um gancho do ciclo de vida para o grupo do Auto Scaling e configurar o serviço de destino para executar ações personalizadas com base em notificações de ciclo de vida. Para mais informações, consulte Destinos de notificação compatíveis.

Para obter mais informações, consulte os exemplos do gancho do ciclo de vida em nosso repositório do GitHub.

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 mais informações, consulte Substituir instâncias do Auto Scaling com base em uma atualização de instância.

Criar um grupo de alta atividade

Crie um grupo de alta atividade usando o console de acordo com as instruções a seguir.

Antes de começar, confirme se você criou um gancho do ciclo de vida para o grupo do Auto Scaling.

Para criar um grupo de alta atividade (console)

  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 de um grupo existente.

    Um painel dividido é aberto na parte inferior da página Auto Scaling groups (Grupos do Auto Scaling).

  3. Selecione a guia Instance management (Gerenciamento de instâncias).

  4. Em Warm pool (Grupo de alta atividade), escolha Create warm pool (Criar grupo de alta atividade).

  5. Para configurar um grupo de alta atividade, faça o seguinte:

    1. Em Warm pool instance state (Estado da instância do pool de alta atividade), escolha para qual estado você deseja fazer a transição das instâncias quando elas entrarem no grupo de alta atividade. O padrão é Stopped.

    2. Em Minimum warm pool size (Tamanho mínimo do grupo de alta atividade), insira o número mínimo de instâncias que serão mantidas no grupo de alta atividade.

    3. Em Max prepared capacity (Capacidade preparada máxima), é possível especificar a capacidade preparada máxima definindo um certo número de instâncias ou manter a opção padrão para deixar a capacidade preparada máxima indefinida.

      Se você mantiver a opção padrão Equal to the Auto Scaling group's maximum capacity (Igual à capacidade máxima do grupo do Auto Scaling), o grupo de alta atividade será dimensionado para corresponder à diferença entre a capacidade máxima do grupo do Auto Scaling e a capacidade desejada. Para facilitar o gerenciamento do tamanho do grupo de alta atividade ajustando a capacidade máxima do grupo, recomendamos usar a opção padrão.

      Se escolher a opção Define a set number of instances (Especificar um número definido de instâncias), insira um valor que represente o número máximo de instâncias com permissão para estar no grupo de alta atividade e no grupo do Auto Scaling ao mesmo tempo.

  6. Escolha Create (Criar OpsItem).

Atualizar um grupo de alta atividade

Para alterar o modelo de execução ou a configuração de execução de um grupo de alta atividade, associe um novo modelo de execução ou configuração de execução 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 de grupo de alta atividade de reposição a iniciar esse uso do novo modelo de execução ou configuração de execução, é possível terminar as instâncias existentes no grupo de alta atividade. O Amazon EC2 Auto Scaling inicia imediatamente novas instâncias para substituir as instâncias que você terminou. Como alternativa, você pode iniciar uma atualização de instância para fazer uma atualização contínua do 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 mais informações, consulte Substituir instâncias do Auto Scaling com base em uma atualização de instância.

Excluir um grupo de alta atividade

Quando você não precisar mais do grupo de alta atividade, use o procedimento a seguir para excluí-lo.

Para excluir o grupo de alta atividade (console)

  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 de um grupo existente.

    Um painel dividido é aberto na parte inferior da página Auto Scaling groups (Grupos do Auto Scaling).

  3. Selecione a guia Instance management (Gerenciamento de instâncias).

  4. Em Warm pool (Grupo de alta atividade), escolha Actions (Ações), Delete (Excluir).

  5. Quando a confirmação for solicitada, escolha Delete (Excluir).

Limitações

  • Não é possível adicionar um grupo de alta atividade a grupos do Auto Scaling que têm uma política de instâncias mistas ou que iniciam 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 para a hibernação de grupos de alta atividade está disponível em todas as Regiões da AWS comerciais que oferecem o Amazon EC2 Auto Scaling, exceto Oriente Médio (EAU), China (Pequim), China (Ningxia) e regiões AWS GovCloud (Leste dos EUA e Oeste dos EUA).