Verificações de integridade para instâncias do Auto Scaling - Amazon EC2 Auto Scaling

Verificações de integridade para instâncias do Auto Scaling

O status de integridade de uma instância do Auto Scaling indica se ela está íntegra ou não íntegra. Todas as instâncias em seu grupo do Auto Scaling são iniciadas no estado íntegro. Supõe-se que as instâncias estejam íntegras, a menos que o Amazon EC2 Auto Scaling receba uma notificação informando do contrário. Essa notificação pode ser proveniente de fontes como Amazon EC2, Elastic Load Balancing ou verificações de integridade personalizadas. Quando o Amazon EC2 Auto Scaling detecta uma instância não íntegra, ele a encerra e inicia uma nova.

Tipo de verificação de integridade

O Amazon EC2 Auto Scaling pode determinar o status de integridade de uma instância usando uma ou mais das seguintes verificações de integridade:

Health check type (Tipo de verificação de integridade) O que ele verifica

Verificações de status do Amazon EC2 e eventos programados

  • Verifica se a instância está em execução

  • Verifica se há problemas subjacentes de hardware ou software capazes de prejudicar a instância

Esse é o tipo padrão de verificação de integridade para um grupo do Auto Scaling.

Verificações de integridade do Elastic Load Balancing

  • Verifica se o balanceador de carga relata a instância como íntegra, confirmando se a instância está disponível para processar solicitações.

Para executar esse tipo de verificação de integridade, você deve habilitá-lo para seu grupo do Auto Scaling.

Verificações de integridade personalizadas

  • Verifica se há outros problemas que possam indicar problemas de integridade da instância de acordo com suas verificações de integridade personalizadas

Verificações de integridade do Amazon EC2

Depois que a instância for iniciada, ela será anexada ao grupo do Auto Scaling e entra no estado InService. Para obter mais informações sobre os diferentes status do ciclo de vida de instâncias em um grupo do Auto Scaling, consulte Ciclo de vida das instâncias do Amazon EC2 Auto Scaling.

O Amazon EC2 Auto Scaling verifica periodicamente o status de integridade de todas as instâncias no grupo do Auto Scaling para garantir que elas estejam em execução e em boas condições.

Verificações do status

O Amazon EC2 Auto Scaling usa os resultados das verificações de status da instância do Amazon EC2 para determinar o status de integridade de uma instância. Se a instância estiver em qualquer estado do Amazon EC2 diferente de running ou se o status para as verificações de status mudar para impaired, o Amazon EC2 Auto Scaling considerará a instância como não íntegra e a substituirá. Isso inclui quando a instância tenha qualquer um dos seguintes estados:

  • stopping

  • stopped

  • shutting-down

  • terminated

As verificações de status do Amazon EC2 não exigem nenhuma configuração especial e estão sempre habilitadas. Para obter mais informações, consulte Tipos de verificações de status no Manual do usuário do Amazon EC2 para instâncias do Linux.

Importante

O Amazon EC2 Auto Scaling permite que essas verificações de status falhem ocasionalmente sem realizar qualquer ação. Quando ocorre uma falha na verificação de status, o Amazon EC2 Auto Scaling aguarda alguns minutos para a AWS corrigir o problema. Ele não marca imediatamente uma instância como não íntegra quando o status das verificações de status se torna impaired.

No entanto, se o Amazon EC2 Auto Scaling detectar que uma instância não está mais no estado running, essa situação será tratada como uma falha imediata. Nesse caso, ele marca imediatamente a instância como não íntegra e a substitui.

Eventos agendados

O Amazon EC2 pode agendar ocasionalmente eventos em suas instâncias que serão executados após um carimbo de data/hora específico. Para obter mais informações, consulte Eventos programados para sua instância no Guia do usuário do Amazon EC2 para instâncias do Linux.

Se uma de suas instâncias for afetada por um evento programado, o Amazon EC2 Auto Scaling considerará a instância como não íntegra e a substituirá. A instância não começa a ser encerrada até que a data e a hora especificadas no carimbo de data/hora sejam atingidas.

Verificações de integridade do Elastic Load Balancing

Quando você habilita as verificações de integridade do Elastic Load Balancing para seu grupo do Auto Scaling, o Amazon EC2 Auto Scaling pode usar os resultados dessas verificações de integridade para determinar o status de integridade de uma instância.

Antes que possa habilitar as verificações de integridade do Elastic Load Balancing para seu grupo do Auto Scaling, é necessário fazer o seguinte:

  • Configure um balanceador de carga do Elastic Load Balancing e configure uma verificação de integridade que ele use para determinar se suas instâncias estão íntegras.

  • Anexe o balanceador de carga ao seu grupo do Auto Scaling.

O seguinte ocorrerá após você realizar as ações acima:

  • O Amazon EC2 Auto Scaling registrará as instâncias no grupo do Auto Scaling com o balanceador de carga.

  • Depois que uma instância termina de registrar, ela entra no estado InService e fica disponível para uso com o balanceador de carga.

Por padrão, o Amazon EC2 Auto Scaling ignora os resultados das verificações de integridade do Elastic Load Balancing. No entanto, você pode ativar essas verificações de integridade para seu grupo do Auto Scaling. Após fazer isso, quando o Elastic Load Balancing relatar uma instância registrada como unhealthy, o Amazon EC2 Auto Scaling marcará a instância como unhealthy em sua próxima verificação de integridade periódica e a substituirá.

Se a drenagem da conexão (atraso de cancelamento de registro) estiver habilitada para seu balanceador de carga, o Amazon EC2 Auto Scaling aguardará que as solicitações em andamento sejam concluídas ou que o tempo limite máximo expire antes de terminar instâncias não íntegras.

Para obter mais informações sobre como habilitar as verificações de integridade do Elastic Load Balancing para seu grupo do Auto Scaling, consulte Adicionar verificações de integridade do Elastic Load Balancing a um grupo do Auto Scaling.

nota

Quando você ativa as verificações de integridade do Elastic Load Balancing para um grupo, o Amazon EC2 Auto Scaling pode encerrar e substituir instâncias relatadas como não íntegras, mas somente depois que o balanceador de carga estiver no estado InService. Para mais informações, consulte Noções básicas do status do anexo do balanceador de carga.

Tarefas personalizadas de detecção de integridade

Também recomendamos executar tarefas personalizadas de detecção de integridade nas instâncias do grupo do Auto Scaling e definir o status de integridade de uma instância como não íntegro se a tarefa falhar. Isso amplia suas verificações de integridade usando uma combinação de verificações de integridade personalizadas, verificações de status do Amazon EC2 e verificações de integridade do Elastic Load Balancing, se estiverem habilitadas.

Você pode enviar as informações de integridade da instância diretamente ao Amazon EC2 Auto Scaling usando a AWS CLI ou um SDK. Os exemplos a seguir mostram como usar a AWS CLI para configurar o estado de integridade de uma instância e, depois, verificar o estado de integridade da instância.

Use o comando set-instance-health a seguir para definir o estado de integridade da instância especificada como Unhealthy.

aws autoscaling set-instance-health --instance-id i-1234567890abcdef0 --health-status Unhealthy

Use o comando describe-auto-scaling-groups a seguir para verificar se o estado da instância é Unhealthy.

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

O exemplo a seguir é de uma resposta que mostra que o status de integridade da instância é Unhealthy e que a instância está sendo encerrada.

{ "AutoScalingGroups": [ { .... "Instances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-1234567890abcdef0" }, "InstanceId": "i-1234567890abcdef0", "HealthStatus": "Unhealthy", "LifecycleState": "Terminating" }, ... ] } ] }

Substituição de instância não íntegra

Quando o Amazon EC2 Auto Scaling determina que uma instância InService não está íntegra, ele encerra a instância enquanto executa uma nova instância substituta. A nova instância é iniciada usando as configurações atuais do grupo do Auto Scaling e seu modelo de execução associado ou configuração de execução.

O Amazon EC2 Auto Scaling cria uma nova ação de escalabilidade para terminar a instância não íntegra e a encerra. Enquanto a instância estiver sendo encerrada, outra atividade de escalonamento iniciará uma nova instância.

Para visualizar o motivo das falhas de verificação de integridade (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).

  3. Na guia Activity (Atividade), em Activity history (Histórico de atividades), a coluna Status mostra se o seu grupo do Auto Scaling iniciou ou terminou instâncias com êxito.

    Se ele terminou quaisquer instâncias não íntegras, a coluna Cause (Causa) mostrará a data e a hora do término e o motivo da falha na verificação de integridade. Por exemplo, At 2022-05-14T20:11:53Z an instance was taken out of service in response to an ELB system health check failure.

Como o Amazon EC2 Auto Scaling minimiza o tempo de inatividade

As substituições de verificação de integridade exigem que as instâncias sejam encerradas primeiro, o que pode impedir que novas solicitações sejam aceitas até que novas instâncias sejam iniciadas.

Se o Amazon EC2 Auto Scaling determinar que alguma instância não está mais em execução ou foi marcada como não íntegra com o comando set-instance-health, ele imediatamente as substituirá imediatamente. No entanto, se houver outras instâncias não íntegras, o Amazon EC2 Auto Scaling usará a abordagem a seguir para se recuperar de falhas. Esta abordagem minimiza qualquer tempo de inatividade que possa ocorrer devido a problemas temporários ou verificações de integridade mal configuradas.

  • Se houver uma ação de escalabilidade em andamento e seu grupo do Auto Scaling estiver abaixo da capacidade desejada em 10% ou mais, o Amazon EC2 Auto Scaling aguarda a atividade de escalabilidade em andamento antes de substituir as instâncias não íntegras.

  • Ao aumentar a escala horizontalmente, o Amazon EC2 Auto Scaling aguarda que as instâncias passem por uma verificação de integridade inicial. Ele também aguarda que o aquecimento padrão de instância seja concluído para garantir que as novas instâncias estejam prontas.

  • Depois que as instâncias terminarem de aquecer e o grupo tiver aumentado para acima de 90% da capacidade desejada, o Amazon EC2 Auto Scaling substituirá as instâncias não íntegras da seguinte maneira:

    • O Amazon EC2 Auto Scaling substitui apenas até 10% da capacidade desejada do grupo por vez. Ele faz isso até que todas as instâncias não íntegras sejam substituídas.

    • Ao substituir instâncias, ele espera que as novas instâncias passem por uma verificação de integridade inicial. Ele também aguarda que o aquecimento padrão de instância seja concluído antes de continuar.

nota

Se o tamanho de um grupo do Auto Scaling for suficientemente pequeno para que o valor resultante de 10% seja menor que um, o Amazon EC2 Auto Scaling substituirá cada uma das instâncias não íntegras de cada vez. Isso pode resultar em tempo de inatividade para o grupo.

Além disso, se todas as instâncias em um grupo do Auto Scaling forem relatadas como não íntegras pelas verificações de integridade do Elastic Load Balancing e o balanceador de carga estiver no estado InService, o Amazon EC2 Auto Scaling poderá marcar menos instâncias não íntegras de cada vez. Isso pode resultar em muito menos instâncias substituídas por vez do que os 10% aplicados em outros cenários. Isso fornece tempo para resolver o problema sem que o Amazon EC2 Auto Scaling encerre automaticamente todo o grupo.

Considerações sobre a verificação de integridade

Esta seção contém considerações sobre as verificações de integridade do Amazon EC2 Auto Scaling.

  • Se precisar que algo aconteça na instância que está sendo terminada ou na instância que está iniciando, você poderá usar ganchos do ciclo de vida. Esses ganchos permitem que você execute uma ação personalizada à medida que o Amazon EC2 Auto Scaling inicia ou encerra instâncias. Para mais informações, consulte Ganchos do ciclo de vida do Amazon EC2 Auto Scaling.

  • Para fornecer tempo suficiente para que novas instâncias estejam prontas para começar a aceitar solicitações sem serem encerradas devido a falhas nas verificações de integridade, execute um ou ambos os procedimentos a seguir:

    • Adicione um gancho do ciclo de vida ao grupo. Isso ajuda a garantir que suas instâncias estejam totalmente configuradas antes de serem colocadas em serviço no final do gancho do ciclo de vida. Para mais informações, consulte Ganchos do ciclo de vida do Amazon EC2 Auto Scaling.

    • Defina o período de carência da verificação de integridade do grupo para corresponder ao tempo de inicialização esperado da aplicação. Para obter mais informações, consulte a seção Período de carência da verificação de integridade.

  • Durante o período de carência da verificação de integridade, se detectar que uma instância não está mais no estado running, o Amazon EC2 Auto Scaling marcará como não íntegra e a substituirá. Por exemplo, isso pode acontecer quando você interrompe uma instância. O Amazon EC2 Auto Scaling tem duas opções para interromper uma instância InService. Você pode colocar a instância em espera ou desvinculá-la do grupo.

  • O Amazon EC2 Auto Scaling não fornece um modo de remover as verificações de status e eventos programados do Amazon EC2 das verificações de integridade. Se você não quiser que as instâncias sejam substituídas, recomendamos suspender o processo ReplaceUnhealthy e HealthCheck para grupos do Auto Scaling individuais. Para mais informações, consulte Suspender e retomar um processo para um grupo do Auto Scaling.

  • Para definir manualmente o status de integridade de uma instância não íntegra de volta para íntegro, você pode tentar usar o comando set-instance-health. Se você receber um erro, provavelmente a instância já está encerrando. Em geral, definir o status de integridade de uma instância de volta para íntegro com o comando set-instance-health só é útil nos casos em que o processo ReplaceUnhealthy ou o processo Terminate está suspenso.

  • O Amazon EC2 Auto Scaling não executa verificações de integridade em instâncias que estão no estado Standby. Para mais informações, consulte Remover temporiamente instâncias do grupo do Auto Scaling.

  • Quando a instância é encerrada, qualquer endereço IP elástico é dissociado e não é automaticamente associado à nova instância. É necessário associar manualmente os endereços IP elásticos à nova instância ou fazer isso automaticamente com uma solução baseada em gancho do ciclo de vida. Para obter mais informações, consulte Endereços de IP elásticos no Manual do usuário do Amazon EC2 para instâncias do Linux.

  • Da mesma forma, quando sua instância é terminada, seus volumes de EBS anexados são desvinculados (ou excluídos, dependendo do atributo DeleteOnTermination). É necessário anexar manualmente esses volumes do EBS à nova instância ou fazer isso automaticamente com uma solução baseada em gancho do ciclo de vida. Para obter mais informações, consulte Anexar um volume do Amazon EBS a uma instância no Guia do usuário do Amazon EC2 para instâncias do Linux

Período de carência da verificação de integridade

O parâmetro HealthCheckGracePeriod para o grupo do Auto Scaling ajuda o Amazon EC2 Auto Scaling a distinguir instâncias não íntegras de instâncias recém-executadas que ainda não estão prontas para servir o tráfego. Esse período de carência pode impedir que o Amazon EC2 Auto Scaling marque instâncias InService como não íntegras e as termine antes que elas tenham tempo de concluir a inicialização.

Por padrão, o período de carência da verificação de integridade é 300 segundos quando você cria um grupo do Auto Scaling a partir do AWS Management Console. Seu valor padrão é 0 segundos quando você cria um grupo do Auto Scaling usando a AWS CLI ou um SDK.

Defina o valor do período de carência da verificação de integridade como maior ou igual ao tempo máximo de inicialização de que sua aplicação precisa. O tempo de inicialização começa quando uma instância é iniciada e termina quando ela está pronta para receber tráfego. Se você adicionar um gancho do ciclo de vida, será possível reduzir o valor do período de carência da verificação de integridade. Quando ganchos do ciclo de vida forem invocados, o período de carência não será iniciado até que as ações do gancho do ciclo de vida sejam concluídas e a instância entre no estado InService.

Quando você usa a AWS CLI ou um SDK para definir o status de integridade das instâncias como não íntegro, o padrão é esperar o fim do período de carência. Porém, é possível substituir esse comportamento e não respeitar o período de carência.

Para configurar um período de carência da verificação de integridade (console)

Quando você cria o grupo do Auto Scaling, na página Configure advanced options (Configurar opções avançadas), em Health checks (Verificações de integridade), Health check grace period (Período de carência de verificação de integridade), escolha a quantidade de tempo de inicialização de que sua aplicação precisa.

Para modificar o período de carência da verificação de integridade para um grupo existente (console)

  1. Abra o console do Amazon EC2 Auto Scaling em https://console.aws.amazon.com/ec2autoscaling e escolha a Região da AWS na qual você criou o seu grupo do Auto Scaling.

  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 Detalhes, escolha Verificações de integridade, Editar.

  4. Em Health check grace period (Período de carência de verificação de integridade), escolha a quantidade de tempo de inicialização de que sua aplicação precisa.

  5. Escolha Update (Atualizar).

Informações adicionais

Para mais informações sobre soluções de problemas para as verificações de integridade, consulte Solucionar problemas com as verificações de integridade do Amazon EC2 Auto Scaling. Se as verificações de integridade falharem, consulte este tópico para ver as etapas de solução de problemas. Os tópicos a seguir ajudarão a descobrir o que está errado no grupo do Auto Scaling e apresentarão sugestões sobre como corrigir o problema.

O Amazon EC2 Auto Scaling também monitora a integridade das instâncias executadas em um grupo de alta atividade usando o Amazon EC2, o Amazon EBS ou verificações de integridade personalizadas. Para mais informações, consulte Visualizar o status e o motivo de falhas da verificação de integridade.