Instâncias de spot frequentemente finalizadas no grupo de escalonamento automático da AWS (falha na verificação de integridade do sistema)

5

Temos 2 grupos de escalonamento automático (um para demanda e um para instâncias spot) que são definidos para um número estático de instâncias (min, max e desejado são todos iguais - 5 no nosso caso). As instâncias no grupo on-demand permanecem em execução, mas as do grupo spot são frequentemente finalizadas devido a uma verificação de integridade do sistema. A mensagem mostrada para uma instância finalizada na guia Histórico de Escalonamento no Console de Gerenciamento do EC2 é, por exemplo:

"At 2014-05-07T18:06:45Z an instance was taken out of service in response to a system health-check."

Não sei por que nossas instâncias spot estão falhando em uma verificação de integridade. Nosso preço de oferta é alto e não acredito que as instâncias devam ter sido encerradas devido ao preço à vista (com base no histórico de preços spot). Eu ajustei os AZs que as instâncias são lançadas também, e não vejo diferença. Não vejo mensagens suspeitas quando verifico o syslog de uma instância recentemente terminada. Estamos usando uma AMI privada / personalizada para ambos os grupos, mas vejo o mesmo comportamento quando mudo para uma AMI mais genérica (a imagem "Inicialização do Ubuntu 12.04 LTS Precise EBS" listada em alestic.com - ami-5db4a934). Mais uma vez, nossas instâncias sob demanda continuam sendo executadas e não são reprovadas nos exames de integridade. Estamos usando o tipo de verificação de saúde "EC2".

Aqui está o comando que estamos usando para criar nossa configuração de ativação por meio do AWS CLI:

aws autoscaling create-launch-configuration \
--launch-configuration-name [name] \
--image-id ami-5db4a934 \
--key-name [our key] \
--security-groups [our SGs] \
--instance-type m3.xlarge \
--block-device-mappings '[ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": 8 } } ]' \
--spot-price "1.00"

Alguém sabe o que isso pode ser ou como podemos obter mais visibilidade de por que as instâncias spot estão com falha nas verificações de integridade?

    
por Derek Morrison 07.05.2014 / 21:32

2 respostas

9

Atualizar

Our bid price is high, and I don't think the instances should have been terminated due to spot price (based on spot pricing history)

A contenção do preço spot não é a única possível causa de uma instância do Amazon EC2 Spot terminada pela AWS, outra notável é a contenção de capacidade:

  • A capacidade de instâncias spot disponíveis depende da demanda por instâncias regulares e, se não houver nenhuma instância de um tipo específico disponível para usuários solicitando instâncias sob demanda regulares, a AWS começará a encerrar instâncias spot para atender a essas solicitações. / li>
  • Na verdade, encontrei isso em us-east-1 com mais frequência do que em outros lugares até agora e com muito mais frequência no mês recente para as novas famílias de tipos de instância m3 / c3 / i3 (um efeito compreensível de aumentar a capacidade ao longo do tempo) .

Você pode verificar a causa real de uma rescisão de solicitação spot manualmente no AWS Management Console ou por exemplo através do pedido de instâncias do local de descrição . Para uso avançado de instâncias pontuais, recomendo iniciar Rastreando solicitações pontuais com códigos de status de lances e correlacione-as com as terminações da sua instância para obter a melhor percepção operacional. Veja o ciclo de vida de solicitações pontuais e Referência do código de status do lance spot para obter mais detalhes, especificamente os motivos a seguir para a rescisão de ponto pela AWS:

  • instance-terminated-by-price

    The Spot Price rose above your bid price. If your request is a persistent bid, the process—or life cycle—restarts and your bid will again be pending evaluation.

  • instance-terminated-no-capacity

    There is no longer any Spot capacity available for the instance.

  • instance-terminated-capacity-oversubscribed

    Your instance was terminated because the number of Spot requests with bid prices equal to or higher than your bid price has exceeded the available capacity in this pool. This means that your instance was interrupted even though the Spot Price may not have changed because your bid was at the Spot Price.

  • instance-terminated-launch-group-constraint

    One of the instances in your launch group was terminated, so the launch group constraint is no longer fulfilled.

Resposta inicial

"At 2014-05-07T18:06:45Z an instance was taken out of service in response to a system health-check."

Esta mensagem enganosa é simplesmente aquela relatada quando a Instância Spot do Amazon EC2 foi terminado devido à contenção do preço spot, ver por exemplo a resposta da equipe da AWS para Auto Scaling Message & Rescisão de instância spot :

You are correct the instance was terminated due to spot pricing.

The instance terminated right before the health-check so it was taken out of service since it was still associated to the AS group.

Embora me escapa por que a AWS não conseguiu criar uma melhor integração entre Auto Scaling e Amazon EC2 ainda a este respeito, faz mais sentido quando se considera que estes são dois serviços separados de fato, por isso, se o mercado spot 'externo' backend encerra uma instância do EC2, ela simplesmente se tornará 'insalubre' do ponto de vista do Auto Scaling - isso é documentado em Obtendo informações sobre as instâncias lançadas pelo Auto Scaling :

  • Cause: At 2012-06-01T00:47:51Z an instance was taken out of service in response to a system health-check. Description: Terminating EC2 instance: i-88ce28f1

    Auto Scaling maintains the desired number of instances by monitoring the health status of the instances in the Auto Scaling group. When Auto Scaling receives notification that an instance is unhealthy or terminated, Auto Scaling launches another instance to take the place of the unhealthy instance. [...]

    Note
    Auto Scaling provides the cause of instance termination that is not the result of a scaling activity. This includes instances that have been terminated because the Spot Price exceeded their bid price. [emphasis mine]
    
por 08.05.2014 / 11:43
1

Não importa - foi um problema do nosso lado (um erro de processamento em segundo plano, matando instâncias pontuais). Embaraçoso!

    
por 28.05.2014 / 23:41