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.
Considerações
Confira as seguintes considerações sobre o uso do recurso:
-
Sempre que uma instância mais 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 imagem de máquina da Amazon (AMI) de uma versão diferente da aplicação, essa versão da aplicação será implantada automaticamente.
-
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 evitar a substituição de muitas instâncias de uma só vez, defina um tempo de vida máximo mais longo para a instância ou use a proteção de redução da escala horizontalmente da instância para impedir temporariamente a terminação de instâncias individuais. Para obter mais informações, consulte Use a proteção de redução da escala horizontalmente da instância para controlar a terminação da instância.
-
Por padrão, o Amazon EC2 Auto Scaling cria uma nova atividade de escalabilidade para encerrar a instância e, em seguida, finaliza-a. Enquanto a instância estiver sendo encerrada, outra atividade de escalonamento iniciará uma nova instância. Você pode alterar esse comportamento para iniciar antes de encerrar usando uma política de manutenção de instância. Para obter mais informações, consulte Políticas de manutenção de instância.
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)
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
e escolha grupos do Auto Scaling no painel de navegação. -
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.
-
Na guia Detalhes, escolha Configurações avançadas, Editar.
-
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.
-
Selecione 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-jsonfile://~/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": "$Default" }, "MinSize":, "MaxSize":1, "MaxInstanceLifetime":5, "VPCZoneIdentifier": "2592000subnet-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-namemy-existing-asg--max-instance-lifetime2592000
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-namemy-asg
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.
-
Proteção de redução da escala horizontalmente da instância autorizada: O Amazon EC2 Auto Scaling fornece proteção de redução da escala horizontalmente de instância para ajudar a controlar quais instâncias podem ser terminadas. Quando essa proteção estiver ativada em uma instância, o Amazon EC2 Auto Scaling não encerrará a instância mesmo que ela tenha atingido o tempo máximo de vida útil.
-
Instâncias encerradas antes da execução: quando há apenas uma instância no grupo do Auto Scaling, o recurso de vida útil máxima da instância pode resultar em uma interrupção porque o Amazon EC2 Auto Scaling encerra uma instância e, em seguida, inicia uma nova instância por padrão. Para alterar esse comportamento de iniciar antes de encerrar, consulte Políticas de manutenção de instância.