Substituir instâncias do Auto Scaling com base em uma atualização de instância - Amazon EC2 Auto Scaling

Substituir instâncias do Auto Scaling com base em uma atualização de instância

Você pode usar uma atualização de instância para atualizar as instâncias em seu grupo do Auto Scaling em vez de substituir manualmente instâncias algumas de cada vez. Isso pode ser útil quando uma alteração de configuração requer a substituição de instâncias e você tem um grande número de instâncias no grupo do Auto Scaling.

Uma atualização de instância pode ser útil quando há uma nova Imagem de máquina da Amazon (AMI) ou um novo script de dados de usuário. Para usar uma atualização de instância, crie primeiro um novo modelo de execução que especifique a nova AMI ou o novo script de dados do usuário. Em seguida, inicie uma atualização de instância para começar a atualizar imediatamente as instâncias no grupo.

Como funciona

As seguintes etapas de exemplo mostram como uma atualização de instância funciona:

  • Você cria um modelo de execução ou uma nova versão de um modelo de execução com as atualizações desejadas. Para mais informações, consulte Criar um modelo de execução para um grupo do Auto Scaling.

  • Você configura a porcentagem íntegra mínima, o aquecimento da instância e os pontos de verificação, especifica a configuração desejada que inclui o seu modelo de execução e inicia uma atualização de instância. A configuração desejada pode, opcionalmente, especificar se uma política de instâncias mistasdeve ser aplicada.

  • O Amazon EC2 Auto Scaling começa a executar uma substituição contínua das instâncias. Ele retira um conjunto de instâncias de serviço, termina-as e, em seguida, inicia um conjunto de instâncias com a nova configuração. Depois, ele aguarda até que as instâncias sejam aprovadas em suas verificações de integridade e concluam o aquecimento antes de começar a substituir outras instâncias.

  • Após um determinado percentual do grupo ser substituído, um ponto de verificação é atingido. Sempre que há um ponto de verificação, o Amazon EC2 Auto Scaling interrompe temporariamente a substituição de instâncias, envia uma notificação e aguarda o tempo especificado antes de continuar. Depois de receber a notificação, você poderá verificar se suas novas instâncias estão funcionando conforme o esperado.

  • Quando a atualização da instância é bem-sucedida, as configurações do grupo do Auto Scaling são atualizadas automaticamente com a configuração especificada no início da operação.

Conceitos e termos fundamentais

Antes de começar, familiarize-se com os seguintes conceitos e termos fundamentais da atualização de instâncias:

Percentual mínimo de integridade

Como parte do início de uma atualização de instância, especifique o percentual mínimo de integridade a ser mantido em todos os momentos. Essa é a quantidade de capacidade em um grupo do Auto Scaling que deve passar em suas verificações de integridade durante uma atualização de instância para que a operação tenha permissão para continuar. O valor é expresso como um percentual da capacidade desejada do grupo do Auto Scaling (arredondado para o número inteiro mais próximo). Aumentar percentual de integridade mínima para 100 limita a taxa de substituição a uma instância de cada vez. Por outro lado, defini-lo como 0 faz com que todas as instâncias sejam substituídas ao mesmo tempo.

Aquecimento da instância

O aquecimento da instância é o tempo decorrido desde que o estado de uma nova instância é alterado para InService até quando ela pode receber tráfego. Durante uma atualização de instância, o Amazon EC2 Auto Scaling não avança imediatamente para a próxima substituição após determinar que uma instância recém-iniciada está íntegra. Ele aguarda o período de aquecimento especificado antes de começar a substituir outras instâncias. Isso pode ser útil quando a aplicação levar tempo para inicializar antes de começar a fornecer tráfego.

Configuração desejada

A configuração desejada é a nova configuração que você deseja que o Amazon EC2 Auto Scaling implante em seu grupo do Auto Scaling. Por exemplo, você pode especificar o modelo de execução e a versão para as instâncias. Durante uma atualização de instância, o Amazon EC2 Auto Scaling atualiza o grupo do Auto Scaling para a configuração desejada. Se um evento aumento da escala na horizontal ocorrer durante uma atualização de instância, o Amazon EC2 Auto Scaling iniciará novas instâncias com a configuração desejada em vez das configurações atuais do grupo. Depois que a atualização da instância for bem-sucedida, o Amazon EC2 Auto Scaling atualizará as configurações do grupo do Auto Scaling para refletir a nova configuração desejada que você especificou como parte da atualização da instância.

Ignorar correspondência

Ignorar correspondência significa que o Amazon EC2 Auto Scaling ignora a substituição de instâncias que correspondem à configuração desejada. Se nenhuma configuração desejada for especificada, ele ignorará a substituição de instâncias que têm a mesma configuração que já está definida no grupo. Se o recurso de ignorar correspondência não estiver habilitada, qualquer instância do grupo do Auto Scaling poderá ser substituída por uma nova instância, independentemente de haver atualizações necessárias.

Pontos de verificação

Um ponto de verificação é um ponto no tempo em que a atualização da instância é interrompida por um período especificado. Uma atualização de instância pode conter vários pontos de verificação. O Amazon EC2 Auto Scaling emite eventos para cada ponto de verificação para que você possa adicionar uma regra do EventBridge para enviar os eventos para um destino, como o Amazon SNS, para ser notificado quando um ponto de verificação for atingido. Depois que um ponto de verificação é atingido, você tem a oportunidade de verificar sua implantação. Se algum problema for identificado, você poderá cancelar a atualização da instância e revertê-la iniciando outra atualização de instância. A capacidade de implantar atualizações em fases é um benefício fundamental dos pontos de verificação. Se você não usar pontos de verificação, as substituições continuas serão executadas ininterruptamente.

Considerações

A seguir estão os fatores a serem considerados ao iniciar uma atualização de instância, para ajudar a garantir que o grupo continue a ter a performance esperada.

  • Recomendamos que considere habilitar o recurso de aquecimento de instância padrão para unificar as configurações de aquecimento no nível do grupo. Para mais informações, consulte Definir o aquecimento padrão da instância para um grupo do Auto Scaling.

  • Durante o aquecimento, instâncias recém-iniciadas não são contabilizadas nas métricas agregadas do grupo do Auto Scaling (como CPUUtilization, NetworkIn, NetworkOut etc.).

  • Se você adicionou políticas de escalabilidade ao grupo do Auto Scaling, as ações de escalabilidade serão executadas em paralelo. Se você definir um intervalo longo para o período de aquecimento de atualização da instância, levará mais tempo para que as instâncias recém-iniciadas sejam refletidas nas métricas. Portanto, um período de aquecimento adequado evita a escalabilidade do Amazon EC2 Auto Scaling em dados de métricas obsoletos.

  • Se você tiver adicionado um gancho do ciclo de vida ao grupo do Auto Scaling, o período de aquecimento não será iniciado até as ações do gancho serem concluídas e a instância entrar no estado InService. Para mais informações, consulte Ganchos do ciclo de vida do Amazon EC2 Auto Scaling.

  • Se você habilitar o recurso de ignorar correspondência, mas o modelo de inicialização, a versão do modelo de inicialização e os tipos de instância na política de instâncias mistas não forem alterados, a atualização da instância será bem-sucedida imediatamente sem fazer nenhuma substituição. Se você tiver feito outras alterações (por exemplo, modificado a estratégia de alocação spot), o Amazon EC2 Auto Scaling atualizará as configurações do grupo do Auto Scaling para refletir a nova configuração desejada após a atualização da instância obter êxito.

Iniciar ou cancelar uma atualização de instância (console)

Você pode criar, visualizar e cancelar as atualizações de instância com o console do Amazon EC2 Auto Scaling. Se esta for a primeira vez que inicia uma atualização de instância, fazer isso usando o console ajudará você a entender os recursos e as opções disponíveis.

Use o procedimento a seguir se você não tiver definido anteriormente uma política de instâncias mistas para seu grupo do Auto Scaling. Se você já definiu uma política de instâncias mistas, consulte Iniciar uma atualização de instância no console (grupo de instâncias mistas) para iniciar uma atualização de instância.

Para iniciar uma atualização de instância

  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 Auto Scaling groups (Grupos do Auto Scaling).

  3. Na guia Instance refresh (Atualização de instância), em Active instance refresh (Atualização de instância ativa), escolha Start instance refresh (Iniciar atualização de instância).

  4. Em Minimum healthy percentage (Percentual mínimo de integridade), insira o percentual do grupo do Auto Scaling que deve permanecer íntegro durante uma atualização de instância. O valor padrão é 90%. A escolha de um percentual menor resulta em um número maior de instâncias sendo terminadas e substituídas ao mesmo tempo.

  5. Em Instance warmup (Aquecimento de instância), insira o número de segundos de quando o estado de uma nova instância é alterado para InService até quando ela pode receber tráfego, ou deixe em branco para manter o aquecimento padrão.

    Se ficar branco, o padrão será o aquecimento de instância padrão do grupo, se estiver habilitado. Se o aquecimento da instância padrão não estiver habilitado, o aquecimento da instância voltará ao valor do período de carência da verificação de integridade para o grupo.

  6. (Opcional) Em Checkpoints (Pontos de verificação), escolha Enable checkpoints (Habilitar pontos de verificação) para substituir instâncias usando uma abordagem incremental ou faseada para uma atualização de instância. Isso fornece tempo adicional para verificação entre conjuntos de substituições. Se você optar por não ativar pontos de verificação, as instâncias serão substituídas em uma operação quase contínua.

    Se você habilitar pontos de verificação, consulte Habilitar pontos de verificação (console) para obter etapas adicionais.

  7. Habilitar ou desativar Skip matching (Ignorar correspondência):

    • Para ignorar a substituição de instâncias que já correspondem ao modelo de execução atual, mantenha a caixa de seleção Enable skip matching (Habilitar ignorar correspondência) marcada.

    • Se você desativar ignorar correspondência desmarcando essa caixa de seleção, todas as instâncias poderão ser substituídas.

    Quando você habilita a opção de ignorar correspondência, em vez de usar o modelo de execução atual, pode definir um novo modelo de execução ou uma nova versão do modelo de execução atual na seção Desired configuration (Configuração desejada) da página Start instance refresh (Iniciar atualização de instância).

    nota

    Para usar o recurso de ignorar correspondência para atualizar um grupo do Auto Scaling que atualmente use uma configuração de execução, é necessário selecionar um modelo de execução em Desired configuration (Configuração desejada). Não há suporte ao uso de ignorar correspondência com uma configuração de execução.

  8. (Opcional) Expanda a seção Desired configuration (Configuração desejada) para especificar quaisquer atualizações que você deseje fazer no grupo do Auto Scaling.

    Deste ponto em diante, você pode optar por usar a sintaxe JSON ou YAML para editar valores de parâmetros em vez de fazer seleções na interface do console. Para isso, escolha Use code editor (Usar editor de código) em vez de Use console interface (Usar a interface do console). O procedimento a seguir explica como fazer seleções usando a interface do console.

    1. Para Update launch template (Atualizar o modelo de execução):

      • Se você não criou um novo modelo de execução ou uma nova versão de modelo de execução para o seu grupo do Auto Scaling, você pode manter essa caixa de seleção desmarcada.

      • Se você criou um novo modelo de execução ou uma nova versão de um modelo de execução, marque essa caixa de seleção. Quando você seleciona essa opção, o Amazon EC2 Auto Scaling mostra o modelo de execução atual e a versão atual do modelo de execução, e lista todas as outras versões disponíveis. Escolha o modelo de lançamento e, em seguida, escolha a versão.

        Após escolher uma versão, você poderá visualizar as informações da versão. Esta é a versão do modelo de execução que será usada ao substituir instâncias como parte de uma atualização de instância. Se a atualização da instância tiver êxito, essa versão do modelo de execução também será usada sempre que novas instâncias forem iniciadas, como quando o grupo for dimensionado.

    2. Em Choose a set of instance types and purchase options to override the instance type in the launch template (Escolha um conjunto de tipos de instância e opções de compra para substituir o tipo de instância no modelo de execução):

      • Mantenha essa caixa de seleção desmarcada para usar o tipo de instância e a opção de compra que você especificou no modelo de execução.

      • Marque esta caixa de seleção se quiser substituir o tipo de instância no modelo de execução ou aproveitar a capacidade do EC2 não utilizada e economizar dinheiro executando Instâncias spot. Ao escolher essa opção, você pode adicionar manualmente cada tipo de instância ou escolher um tipo de instância principal e uma opção de recomendação que recupere quaisquer tipos de instância correspondentes adicionais para você. Se você planeja executar instâncias spot, recomendamos adicionar alguns tipos de instância para que o Amazon EC2 Auto Scaling possa executar outro tipo de instância se não houver capacidade de instância suficiente nas zonas de disponibilidade escolhidas. Para obter mais orientações sobre como lidar com essas configurações, consulte Grupos do Auto Scaling com vários tipos de instâncias e opções de compra.

        Atenção

        As instâncias spot não deverão ser usadas com aplicações que não conseguem lidar com uma interrupção de instância spot se o serviço spot do Amazon EC2 precisar recuperar capacidade.

      Se você marcar essa caixa de seleção, verifique se o modelo de execução já não solicita instâncias spot. Você não pode usar um modelo de execução que solicite instâncias spot para criar um grupo do Auto Scaling que use vários tipos de instância e execute instâncias spot e sob demanda.

      nota

      Para configurar essas opções em um grupo do Auto Scaling que atualmente use uma configuração de execução, é necessário selecionar um modelo de execução em Update launch template (Atualizar modelo de execução). Não há suporte à substituição do tipo de instância na configuração de execução.

  9. Revise todas as seleções para confirmar que tudo esteja configurado corretamente.

    Nesse ponto, é bom verificar se as diferenças entre as alterações atuais e propostas não afetarão sua aplicação de maneiras inesperadas ou indesejadas. Por exemplo, se você iniciou suas instâncias originais a partir de uma AMI paravirtual (PV), mas deseja mudar para um tipo de instância da geração atual que tenha suporte apenas em uma AMI de máquina virtual (HVM), será necessário usar uma AMI de HVM. Para obter mais informações sobre o procedimento anterior, consulte Compatibilidade para alteração de tipo de instância no Guia do usuário do Amazon EC2 para instâncias do Linux.

  10. Quando estiver satisfeito com suas seleções de atualização de instância, escolha Start (Iniciar).

Use o procedimento a seguir se você criou um grupo do Auto Scaling com política de instâncias mistas. Se você não definiu ainda uma política de instâncias mistas para seu grupo, consulte Iniciar uma atualização de instância no console (procedimento básico) para iniciar uma atualização de instância.

Para iniciar uma atualização de instância

  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 Auto Scaling groups (Grupos do Auto Scaling).

  3. Na guia Instance refresh (Atualização de instância), em Active instance refresh (Atualização de instância ativa), escolha Start instance refresh (Iniciar atualização de instância).

  4. Em Minimum healthy percentage (Percentual mínimo de integridade), insira o percentual do grupo do Auto Scaling que deve permanecer íntegro durante uma atualização de instância. O valor padrão é 90%. A escolha de um percentual menor resultará em um número maior de instâncias sendo terminadas e substituídas ao mesmo tempo.

  5. Em Instance warmup (Aquecimento de instância), insira o número de segundos de quando o estado de uma nova instância é alterado para InService até quando ela pode receber tráfego, ou deixe em branco para manter o aquecimento padrão.

    Se ficar branco, o padrão será o aquecimento de instância padrão do grupo, se estiver habilitado. Se o aquecimento da instância padrão não estiver habilitado, o aquecimento da instância voltará ao valor do período de carência da verificação de integridade para o grupo.

  6. (Opcional) Em Checkpoints (Pontos de verificação), escolha Enable checkpoints (Habilitar pontos de verificação) para substituir instâncias usando uma abordagem incremental ou faseada para uma atualização de instância. Isso fornece tempo adicional para verificação entre conjuntos de substituições. Se você optar por não ativar pontos de verificação, as instâncias serão substituídas em uma operação quase contínua.

    Se você habilitar pontos de verificação, consulte Habilitar pontos de verificação (console) para obter etapas adicionais.

  7. Habilitar ou desativar Skip matching (Ignorar correspondência):

    • Para ignorar a substituição de instâncias que já correspondem ao modelo de execução atual e quaisquer substituições de tipo de instância, mantenha a caixa de seleção Enable skip matching (Habilitar ignorar correspondência) marcada.

    • Se você optar por desativar ignorar correspondência desmarcando essa caixa de seleção, todas as instâncias poderão ser substituídas.

    Quando você habilita a opção de ignorar correspondência, em vez de usar o modelo de execução atual, pode definir um novo modelo de execução ou uma nova versão do modelo de execução atual na seção Desired configuration (Configuração desejada) da página Start instance refresh (Iniciar atualização de instância). Você também pode atualizar suas substituições de tipo de instância em Desired configuration (Configuração desejada).

  8. Na seção Desired configuration (Configuração desejada), faça o seguinte:

    Deste ponto em diante, você pode escolher usar a sintaxe JSON ou YAML para editar valores de parâmetros em vez de fazer seleções na interface do console. Para isso, escolha Use code editor (Usar editor de código) em vez de Use console interface (Usar a interface do console). O procedimento a seguir explica como fazer seleções usando a interface do console.

    1. Para Update launch template (Atualizar o modelo de execução):

      • Se você não criou um novo modelo de execução ou uma nova versão de modelo de execução para o seu grupo do Auto Scaling, você pode manter essa caixa de seleção desmarcada.

      • Se você criou um novo modelo de execução ou uma nova versão de um modelo de execução, marque essa caixa de seleção. Quando você seleciona essa opção, o Amazon EC2 Auto Scaling mostra o modelo de execução atual e a versão atual do modelo de execução, e lista todas as outras versões disponíveis. Escolha o modelo de lançamento e, em seguida, escolha a versão.

        Após escolher uma versão, você poderá visualizar as informações da versão. Esta é a versão do modelo de execução que será usada ao substituir instâncias como parte de uma atualização de instância. Se a atualização da instância tiver êxito, essa versão do modelo de execução também será usada sempre que novas instâncias forem iniciadas, como quando o grupo for dimensionado.

    2. Em Use these settings to override the instance type and purchase option defined in the launch template (Use estas configurações para substituir o tipo de instância e a opção de compra definidas no modelo de execução):

      Por padrão, esta caixa de seleção está marcada. O Amazon EC2 Auto Scaling preenche cada parâmetro com o valor que está atualmente definido na política de instâncias mistas para o grupo do Auto Scaling. Atualize somente os valores dos parâmetros que você deseja alterar. Para obter orientações sobre essas configurações, consulte Grupos do Auto Scaling com vários tipos de instâncias e opções de compra.

      Atenção

      Recomendamos não desmarcar essa caixa de seleção. Apenas a desmarque se desejar parar de usar uma política de instâncias mistas. Após o término com êxito da atualização de instância, o Amazon EC2 Auto Scaling atualiza seu grupo para corresponder à Desired configuration (Configuração desejada). Se não incluir mais uma política de instâncias mistas, o Amazon EC2 Auto Scaling terminará gradualmente todas as instâncias spot que estejam em execução no momento e as substituirá por instâncias sob demanda. Ou, se seu modelo de execução solicitar instâncias spot, o Amazon EC2 Auto Scaling terminará gradualmente todas as instâncias sob demanda que estejam em execução no momento e as substituirá por instâncias spot.

  9. Revise todas as seleções para confirmar que tudo esteja configurado corretamente.

    Nesse ponto, é bom verificar se as diferenças entre as alterações atuais e propostas não afetarão sua aplicação de maneiras inesperadas ou indesejadas. Por exemplo, se você iniciou suas instâncias originais a partir de uma AMI paravirtual (PV), mas deseja mudar para um tipo de instância da geração atual que tenha suporte apenas em uma AMI de máquina virtual (HVM), será necessário usar uma AMI de HVM. Para obter mais informações sobre o procedimento anterior, consulte Compatibilidade para alteração de tipo de instância no Guia do usuário do Amazon EC2 para instâncias do Linux.

    Quando estiver satisfeito com suas seleções de atualização de instância, escolha Start (Iniciar).

Para cancelar uma atualização de instância

  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 grupo do Auto Scaling.

  3. Na guia Instance refresh (Atualização de instância), em Active instance refresh (Atualização de instância ativa), escolha Cancel instance refresh (Cancelar atualização de instância).

  4. Quando a confirmação for solicitada, escolha Confirm (Confirmar).

Iniciar ou cancelar uma atualização de instância (AWS CLI)

Para iniciar uma atualização de instância

Use o comando start-instance-refresh para iniciar uma atualização de instância da AWS CLI. Você pode especificar as preferências que deseja alterar em um arquivo de configuração JSON. Quando você fizer referência ao arquivo de configuração, forneça o caminho e o nome do arquivo, conforme mostrado no exemplo a seguir.

aws autoscaling start-instance-refresh --cli-input-json file://config.json

Conteúdo de config.json:

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 50 } }

Como alternativa, você pode iniciar a atualização da instância sem as preferências opcionais executando o seguinte comando. Se as preferências não forem fornecidas, os valores padrão serão usados para InstanceWarmup e MinHealthyPercentage.

aws autoscaling start-instance-refresh --auto-scaling-group-name my-asg

Exemplos de resultado:

{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }
nota

Para especificar a configuração desejada e habilitar o recurso de ignorar correspondência com a AWS CLI, consulte os exemplos adicionais de start-instance-refresh em Exemplos de atualização de instâncias que permitem ignorar correspondência com a AWS Command Line Interface (AWS CLI).

Para cancelar uma atualização de instância

Ao cancelar uma atualização de instância usando o comando cancel-instance-refresh na AWS CLI, especifique o nome do grupo do Auto Scaling conforme mostrado no exemplo a seguir.

aws autoscaling cancel-instance-refresh --auto-scaling-group-name my-asg

Exemplos de resultado:

{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

Limitações

  • Instâncias terminadas antes de iniciar: quando há apenas uma instância no grupo do Auto Scaling, iniciar uma atualização de instância pode resultar em uma interrupção. Isso ocorre porque o Amazon EC2 Auto Scaling termina uma instância e inicia outra.

  • Duração total: o tempo máximo que uma atualização de instância pode permanecer ativamente substituindo instâncias é 14 dias.

  • Instâncias não substituídas: se uma instância estiver em espera ou protegida contra redução da escala na horizontal, ela não poderá ser substituída. Se o Amazon EC2 Auto Scaling encontrar uma instância que ele é incapaz de substituir, ele continuará substituindo outras instâncias.

  • Diferença no comportamento específico de grupos ponderados: se um grupo de instâncias mistas estiver configurado com um peso de instância maior ou igual à capacidade desejada do grupo, o Amazon EC2 Auto Scaling poderá substituir todas as instâncias InService de uma só vez. Para evitar essa situação, siga a recomendação no tópico Configurar ponderação de instâncias para o Amazon EC2 Auto Scaling e especifique uma capacidade desejada que seja maior do que seu maior peso ao usar pesos com seu grupo do Auto Scaling.

  • Tempo limite de uma hora: quando uma atualização de instância é incapaz de continuar fazendo substituições porque a aplicação não é aprovada nas verificações de integridade ou há instâncias em espera ou protegidas contra redução da escala na horizontal, ele continuará tentando novamente por uma hora. Ele também fornece uma mensagem de status para ajudar você a resolver o problema. Se o problema persistir após uma hora, a operação falhou. A intenção é garantir tempo para a recuperação em caso de um problema temporário.

  • Sem reversão: você pode cancelar uma atualização de instância a qualquer momento, mas qualquer instância que já foi substituída não será revertida para a configuração anterior. Se uma atualização de instância falhar, qualquer instância que já foi substituída não será revertida para a configuração anterior. Para corrigir uma atualização de instância com falha, primeiro resolva o problema subjacente que causou a falha na atualização e, depois, inicie outra atualização de instância.