Substituir instâncias do Auto Scaling com base na vida útil máxima da instância - Amazon EC2 Auto Scaling

Substituir instâncias do Auto Scaling com base na vida útil máxima da instância

O tempo de vida máximo da instância especifica o tempo máximo (em segundos) que uma instância pode estar em serviço antes de ser terminada e substituída. Um caso de uso comum pode ser um requisito para substituir as instâncias em uma programação devido a políticas de segurança internas ou a controles de conformidade externos.

É necessário especificar um valor de pelo menos 86.400 segundos (1 dia). Para limpar um valor definido anteriormente, especifique um novo valor de 0. Essa configuração se aplica a todas as instâncias atuais e futuras do grupo do Auto Scaling.

Definir um valor muito baixo pode fazer com que as instâncias sejam substituídas mais rapidamente do que o desejado. Em geral, o Amazon EC2 Auto Scaling substitui uma instância de cada vez, com uma pausa entre as substituições. No entanto, se o tempo de vida máximo da instância especificado não fornecer tempo suficiente para substituir cada instância individualmente, o Amazon EC2 Auto Scaling deverá substituir mais de uma instância por vez. Várias instâncias podem ser substituídas de uma só vez, em até 10% da capacidade atual do grupo do Auto Scaling.

Para gerenciar a taxa de substituição, você pode fazer o seguinte:

  • Defina um período mais longo para o limite de tempo de vida máximo da instância. Isso espaça as substituições, o que é útil para grupos que têm um grande número de instâncias a substituir.

  • Adicione mais tempo entre determinadas substituições usando a proteção de instâncias. Isso impede temporariamente que instâncias individuais no grupo do Auto Scaling sejam substituídas. Quando estiver pronto para substituir essas instâncias, remova a proteção de instâncias de cada instância individual. Para mais informações, consulte Usar proteção de redução na escala na horizontal de instâncias.

nota

Sempre que uma instância antiga é substituída e uma nova instância é iniciada, a nova instância usa o modelo de execução ou a configuração de execução atualmente associada ao grupo do Auto Scaling. Se o modelo de execução ou a configuração de execução especificar o ID da AMI de uma versão diferente da aplicação, essa versão da aplicação será implantada automaticamente.

Definir o tempo de vida máximo da instância

Quando você cria um grupo do Auto Scaling no console, não é possível configurar o tempo de vida máximo da instância. No entanto, depois que o grupo for criado, você poderá editá-lo para definir o tempo de vida máximo da instância.

Para definir o tempo de vida máximo da instância para um grupo (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 do grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página Auto Scaling groups (Grupos do Auto Scaling), mostrando informações sobre o grupo selecionado.

  3. Na guia Detalhes, escolha Configurações avançadas, Editar.

  4. Para o Maximum instance lifetime (Tempo de vida máximo da instância), insira o número máximo de segundos que uma instância pode estar em serviço.

  5. Escolha Update (Atualizar).

Na guia Activity (Atividade), em Activity history (Histórico de atividades), é possível ver a substituição de instâncias do grupo ao longo de todo seu histórico.

Para definir o tempo de vida máximo da instância para um grupo (AWS CLI)

Você também pode usar a AWS CLI para configurar o tempo de vida máximo da instância para grupos do Auto Scaling novos ou existentes.

Para novos grupos do Auto Scaling, use o comando create-auto-scaling-group.

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

Veja a seguir um arquivo config.json de exemplo que mostra um tempo de vida máximo da instância de 2592000 segundos (30 dias).

{ "AutoScalingGroupName": "my-asg", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "MinSize": 1, "MaxSize": 5, "MaxInstanceLifetime": 2592000, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }

Para grupos do Auto Scaling existentes, use o comando update-auto-scaling-group.

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-existing-asg --max-instance-lifetime 2592000

Para verificar o tempo de vida máximo da instância para um grupo do Auto Scaling

Use o comando describe-auto-scaling-groups.

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

Esta é uma resposta de exemplo.

{ "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 1, "DefaultCooldown": 300, "AvailabilityZones": [ "us-west-2a", "us-west-2b", "us-west-2c" ], "LoadBalancerNames": [], "TargetGroupARNs": [], "HealthCheckType": "EC2", "HealthCheckGracePeriod": 0, "Instances": [ { "InstanceId": "i-04d180b9d5fc578fc", "InstanceType": "t2.small", "AvailabilityZone": "us-west-2b", "LifecycleState": "Pending", "HealthStatus": "Healthy", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "7" }, "ProtectedFromScaleIn": false } ], "CreatedTime": "2019-11-14T22:56:15.487Z", "SuspendedProcesses": [], "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "EnabledMetrics": [], "Tags": [], "TerminationPolicies": [ "Default" ], "NewInstancesProtectedFromScaleIn": false, "ServiceLinkedRoleARN": "arn", "MaxInstanceLifetime": 2592000 } ] }

Limitações

  • Não há garantia de que tempo de vida máximo será exato para cada instância: não há garantia de que as instâncias serão substituídas apenas no final de sua duração máxima. Em algumas situações, talvez o Amazon EC2 Auto Scaling precise iniciar a substituição de instâncias logo após você atualizar o parâmetro de tempo de vida máximo da instância. A razão para esse comportamento é evitar a substituição de todas as instâncias ao mesmo tempo.

  • Instâncias terminadas antes de iniciar: quando há apenas uma instância no grupo do Auto Scaling, o recurso de tempo de vida máximo da instância pode resultar em uma interrupção porque o Amazon EC2 Auto Scaling termina uma instância e, em seguida, inicia uma nova.