Anexar automaticamente o volume EBS a uma nova instância spot?

14

Estou experimentando instâncias spot EC2 e estou precisando de alguns dados para serem retidos entre terminações. Agora, como eu o entendo, quando o preço atual estiver acima do meu lance máx. lance, ele será automaticamente encerrado. Presumo que todos os scripts de inicialização que eu tenho sejam executados no desligamento para que eu possa enviar os dados para o EBS antes da desmontagem.

Minha pergunta é: como posso montar automaticamente o mesmo volume EBS na nova instância spot quando o preço cai, uma vez que não haverá nenhum dos meus scripts de init que eu carregaria no volume raiz pela primeira vez?

Preciso criar uma AMI personalizada ou existe alguma outra maneira de conseguir isso?

Jeff
fonte

Respostas:

11

Se você simplesmente deseja que a instância inicie com um ponto de partida fixo cada vez que é executada, você pode:

  1. Crie sua própria AMI e execute-a como a instância sempre, ou

  2. Especifique um script de dados do usuário que instale e configure o software com suas especificações sempre que uma nova instância for iniciada a partir de uma AMI base padrão.

Se você precisar manter o estado entre as execuções da instância, salve os dados em algum lugar fora da instância / AMI. Por exemplo:

  1. Os dados podem ser mantidos atualizados no S3, SimpleDB, DynamoDB, RDS, etc.

  2. Você pode designar um volume EBS permanente que a instância conecta e monta dinamicamente na inicialização. Isso pode ser feito com um script de dados do usuário.

Eric Hammond
fonte
Especificar um script de dados do usuário que instala parece interessante; Como isso pode ser feito quando uma solicitação pontual inicia uma nova instância automaticamente? Eu já tenho um volume permanente EBS armazenamento de dados, e provavelmente vai continuar a usar esse
Jeff
1
Ao criar a solicitação pontual, você especifica os dados do usuário que devem ser passados ​​para cada nova instância pontual.
Eric Hammond
Ah eu não percebi com cloud-init colocando #! primeiro em dados do usuário executou um script. Obrigado
Jeff
3
@ Jeff: Sim, eu inventei isso e AMIs populares adotaram-lo :-) alestic.com/2009/06/ec2-user-data-scripts
Eric Hammond
Nessa linha, é possível que uma instância spot monte um volume EBS específico como disco raiz quando iniciado?
Derek Morrison
5

Confira o projeto ec2-spotter no GitHub. Foi criado para resolver o problema que você descreve.

Os problemas (1 a 4) descritos na resposta do @ mcenzm são reais e são tratados corretamente no ec2-spotter.

Alex R
fonte
Não sei quem votou mal, mas isso significa que eu posso parar de perder tempo tentando codificá-lo! Adoro.
Jeremy
3

Estou tentando isso há algum tempo e ainda há vários problemas com instâncias spot EC2 e armazenamento anexado.

  1. O volume que você deseja anexar pode não estar na mesma zona da instância? As zonas não podem ser especificadas no lançamento.
  2. A conexão interna com o script init funcionará, mas é um pouco assíncrona, portanto você precisará testá-lo ou sleep 10dizer.
  3. Não consigo entender por que o console da AWS mostra uma "partição" como o dispositivo de bloco principal. Talvez nos negar imagens piratas do Windows em outra partição? (sda1 em vez de sda). Boa sorte para encontrar a tabela de partição.

    insira a descrição da imagem aqui

  4. Atualmente difícil de conectar usando a CLI do ponto de controle externo, o que dificulta o uso de capturas instantâneas para controle de versão.

  5. Portanto, em geral, faço backup ... tar.bz2 para outra caixa e, em seguida, posso preencher a "área de trabalho" na inicialização. Isso é útil apenas para pequenos volumes de dados; portanto, basear uma nova ami nos dois volumes é uma boa idéia. As instâncias spot são realmente boas para o trabalho de "unidade de trabalho" ou "reinicializável", portanto o conceito de buscar trabalho de um servidor está bem estabelecido. Como você aguarda 9 minutos ao extremo por um lançamento, você pode não se importar em formatar seu disco (o menor possível).

    1. O EBS ainda é muito esquisito e você precisa pagar mais por "otimizado". Ainda é mais rápido do que tentar fazer o upload do seu trabalho concluído nos anos 90, mais ou menos, quando a instância está com "preço esgotado".

    2. Eu suspeito que tudo isso mude com qualquer oferta de "arquivo elástico".

mckenzm
fonte
1
1. Você especifica a sub-rede que está vinculada a uma zona AZ. 2. Esperar até que / dev / xvdx apareça é fácil. 3. Como isso é relevante?
Morgan Christiansson