Remover temporiamente instâncias do grupo do Auto Scaling - Amazon EC2 Auto Scaling

Remover temporiamente instâncias do grupo do Auto Scaling

Você pode colocar uma instância que está no estado InService no estado Standby, atualize ou solucione problemas da instância e, em seguida, devolva a instância ao serviço. As instâncias que estão em espera ainda fazem parte do grupo do Auto Scaling, mas não lidam ativamente com o tráfego do balanceador de carga.

Esse recurso ajuda a interromper e iniciar as instâncias ou reiniciá-las sem se preocupar com o término das instâncias do Amazon EC2 Auto Scaling como parte de suas verificações de saúde ou durante eventos de redução de escala na horizontal.

Por exemplo, você pode alterar a imagem de máquina da Amazon (AMI) para um grupo do Auto Scaling a qualquer momento alterando o modelo de execução ou a configuração de execução. Todas as instâncias subsequentes iniciadas pelo grupo do Auto Scaling usam essa AMI. No entanto, o grupo do Auto Scaling não atualiza as instâncias que estão em serviço atualmente. Você pode terminar essas instâncias e permitir que o Amazon EC2 Auto Scaling as substitua ou usar o recurso de atualização de instância para terminar e substituir as instâncias. Você também pode colocar as instâncias em espera, atualizar o software e, em seguida, colocar as instâncias de volta em serviço.

A desvinculação de instâncias de um grupo do Auto Scaling é semelhante a colocar instâncias em espera. Desvincular instâncias pode ser útil se você quiser gerenciar as instâncias como instâncias do EC2 autônomas e possivelmente terminá-las. Para obter mais informações, consulte Desvincular instâncias do EC2 do seu grupo do Auto Scaling.

Importante

Quando você coloca instâncias em espera, seu grupo do Auto Scaling pode se tornar desbalanceado entre as zonas de disponibilidade. O Amazon EC2 Auto Scaling compensa rebalanceando as zonas de disponibilidade, a menos que você suspenda o processo AZRebalance. Para obter mais informações, consulte Suspender e retomar um processo para um grupo do Auto Scaling.

Importante

Você é cobrado por instâncias que estão em estado de espera.

Como o estado de espera funciona

O estado de espera funciona da seguinte forma para ajudá-lo a remover temporariamente uma instância do seu grupo do Auto Scaling:

  1. Você coloca a instância no estado de espera. A instância permanece nesse estado até que você saia do estado de espera.

  2. Se houver um grupo de destino de balanceador de carga ou um Classic Load Balancer anexado ao seu grupo do Auto Scaling, o registro da instância será cancelado no balanceador de carga. Se a descarga da conexão estiver habilitada para o balanceador de carga, o Elastic Load Balancing aguardará 300 segundos por padrão antes de concluir o processo de cancelamento do registro, o que ajuda a solicitações em andamento a serem concluídas.

  3. Por padrão, o valor que você especificou como sua capacidade desejada é reduzido quando você coloca uma instância em espera. Isso evita a execução de uma instância adicional enquanto você tiver essa instância em espera. Como alternativa, você pode especificar que a capacidade desejada não seja reduzida. Se você especificar essa opção, o grupo do Auto Scaling iniciará uma instância para substituir a que está em espera. A intenção é ajudar você a manter a capacidade para a aplicação enquanto uma ou mais instâncias estão em espera.

  4. Você pode atualizar ou resolver problemas da instância.

  5. Você devolve a instância para serviço saindo do estado de espera.

  6. Depois de colocar uma instância que estava no modo de espera de volta no serviço, a capacidade desejada é aumentada. Se você não tiver diminuído a capacidade quando colocou a instância em espera, o grupo do Auto Scaling detectará que você tem mais instâncias do que precisa. Ele aplicará a política de encerramento para reduzir o tamanho do grupo. Para obter mais informações, consulte Controlar quais instâncias do Auto Scaling serão terminadas durante uma redução de escala na horizontal.

  7. Se houver um grupo de destino de balanceador de carga ou um Classic Load Balancer anexado ao seu grupo do Auto Scaling, a instância será registrada no balanceador de carga.

A ilustração a seguir mostra as transições entre estados de instância nesse processo:


                    As instâncias entram e saem do estado de espera.

Para obter mais informações sobre o ciclo de vida completo de instâncias em um grupo do Auto Scaling, consulte Ciclo de vida das instâncias do Amazon EC2 Auto Scaling.

Status de integridade de uma instância em um estado de espera

O Amazon EC2 Auto Scaling não executa verificações de integridade em instâncias que estão em um estado de espera. Enquanto a instância está em estado de espera, seu status de integridade reflete o status que ela tinha antes de ser colocada em espera. O Amazon EC2 Auto Scaling não executa uma verificação de integridade na instância até você colocá-la em serviço.

Por exemplo, se você colocar uma instância íntegra em espera e, em seguida, terminá-la, o Amazon EC2 Auto Scaling continuará a relatar a instância como íntegra. Se você tentar colocar uma instância terminada que estava em espera em funcionamento novamente, o Amazon EC2 Auto Scaling executará uma verificação de integridade na instância, determinará que ela está sendo terminada e que não está íntegra e iniciará uma instância de substituição. Para obter uma introdução às verificações de integridade, consulte Verificações de integridade para instâncias do Auto Scaling.

Remoção temporária de uma instância (console)

O procedimento a seguir demonstra o processo geral para atualizar uma instância que está em serviço.

Para remover uma instância temporariamente
  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.

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

  3. Na guia Instance management (Gerenciamento de instâncias), em Instances (Instâncias), selecione uma instância.

  4. Escolha Ações, Definir em espera.

  5. Na caixa de diálogo Set to Standby (Definir como em espera), marque a caixa de seleção para iniciar uma instância de substituição. Deixe desmarcada para diminuir a capacidade desejada. Escolha Definir em espera.

  6. Você pode atualizar ou solucionar problemas de uma instância, conforme necessário. Quando tiver concluído, continue com a próxima etapa para retornar a instância para serviço.

  7. Selecione a instância, escolha Ações, Definir como InService. Na caixa de diálogo Set to InService (Definir como InService), escolha Set to InService (Definir como InService).

Remover uma instância temporariamente (AWS CLI)

O procedimento a seguir demonstra o processo geral para atualizar uma instância que está em serviço.

Para remover uma instância temporariamente
  1. Use o seguinte comando describe-auto-scaling-instances para identificar a instância a ser atualizada.

    aws autoscaling describe-auto-scaling-instances

    Esta é uma resposta de exemplo.

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }
  2. Mude a instância para o estado Standby usando o seguinte comando enter-standby. A opção --should-decrement-desired-capacity reduz a capacidade desejada para que o grupo do Auto Scaling não execute uma instância de substituição.

    aws autoscaling enter-standby --instance-ids i-05b4f7d5be44822a6 \ --auto-scaling-group-name my-asg --should-decrement-desired-capacity

    Esta é uma resposta de exemplo.

    { "Activities": [ { "Description": "Moving EC2 instance to Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "3b1839fe-24b0-40d9-80ae-bcd883c2be32", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:31:26.150Z", "Progress": 50, "Cause": "At 2014-12-15T21:31:26Z instance i-05b4f7d5be44822a6 was moved to standby in response to a user request, shrinking the capacity from 4 to 3.", "StatusCode": "InProgress" } ] }
  3. (Opcional) Verifique se a instância está em Standby usando o seguinte comando describe-auto-scaling-instances.

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    Esta é uma resposta de exemplo. Observe que o status da instância agora é Standby.

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "Standby" }, ... ] }
  4. Você pode atualizar ou solucionar problemas de uma instância, conforme necessário. Quando tiver concluído, continue com a próxima etapa para retornar a instância para serviço.

  5. Coloque a instância de volta em serviço usando o seguinte comando exit-standby.

    aws autoscaling exit-standby --instance-ids i-05b4f7d5be44822a6 --auto-scaling-group-name my-asg

    Esta é uma resposta de exemplo.

    { "Activities": [ { "Description": "Moving EC2 instance out of Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "db12b166-cdcc-4c54-8aac-08c5935f8389", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:46:14.678Z", "Progress": 30, "Cause": "At 2014-12-15T21:46:14Z instance i-05b4f7d5be44822a6 was moved out of standby in response to a user request, increasing the capacity from 3 to 4.", "StatusCode": "PreInService" } ] }
  6. (Opcional) Verifique se a instância está de volta em serviço usando o seguinte comando describe-auto-scaling-instances.

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    Esta é uma resposta de exemplo. Observe que o status da instância é InService.

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }