EC2 Auto-Scaling com Instâncias Spot e On-Demand?

11

Estou procurando otimizar o custo de nossos grupos do EC2 com escalonamento automático fazendo com que eles iniciem instâncias spot em vez de instâncias sob demanda.

O que eu realmente quero é manter alguns servidores no grupo como instâncias sob demanda, independentemente do que acontece com o mercado de precificação de instâncias spot. Então, quero que quaisquer servidores adicionais no grupo, acima do meu mínimo configurado, sejam instâncias spot. Eu geralmente estou bem com o atraso na adição de servidores via solicitações pontuais.

Não consigo encontrar uma maneira de fazer isso e tentei vasculhar a documentação da AWS. Parece que um ASG pode ser sob demanda ou spot, mas não um híbrido.

Eu poderia adicionar manualmente uma instância sob demanda ao Elastic Load Balancer atribuído ao grupo de escalonamento automático, mas a carga desse servidor não seria fatorada nas medidas e disparadores de escalonamento automático.

Suponho que eu poderia inserir um preço de oferta ridiculamente alto para garantir que sempre receba os servidores de que preciso, mas depois analiso o histórico de preços e vejo picos altos ocasionais.

A documentação da AWS está em desacordo consigo mesma, já que em um lugar ela diz que, se você digitar um mínimo de servidor, esse número é "assegurado" para estar lá. Mas quando você lê sobre instâncias pontuais, não há garantias. O diferencial de preço por spot é atraente, então eu gostaria de aproveitar isso o máximo que puder, mantendo uma linha de base sempre ativa. Isso é possível?

    
por platforms 14.11.2012 / 20:01

5 respostas

1

No momento, você pode misturar as instâncias ondemand e spot em um único ASG

O Amazon EC2 Auto Scaling agora permite aprovisionar e dimensionar automaticamente as instâncias nas opções de compra, Zonas de disponibilidade (AZ) e famílias de instâncias em um único grupo de Auto Scaling (ASG), para otimizar escala, desempenho e custo. Agora você pode incluir instâncias spot com On-Demand e RIs em um único ASG , para economizar até 90% em computação.

    
por 29.11.2018 / 08:07
15

A abordagem discutida acima seria um pouco confusa e não tão flexível. A abordagem mais canônica é apenas criar 2 ASGs (um para spot e um para on-demand) e registrá-los ambos com o mesmo ELB (discutido aqui ). Isso lhe dá a capacidade de controlar cada um independentemente, em vez de tentar misturar com trocas de LC em um único ASG.

    
por 14.01.2015 / 17:34
7

Esta abordagem híbrida Auto Scaling não parece estar disponível de imediato infelizmente.

No entanto, você pode conseguir contornar essa limitação da seguinte forma (não testado, apenas um design de sistema com o qual já estou fazendo malabarismos por um tempo):

Solução alternativa possível

Conforme destacado em Uso do Auto Scaling para lançar instâncias spot , o lance de preço spot é um parâmetro da Iniciar configuração em uso. Como você apontou, não há nenhuma configuração de inicialização híbrida disponível, mas deve ser sob demanda ou local, o que significa que o caso de uso requer duas configurações de inicialização diferentes.

Isso não parece ajudar imediatamente, porque Você pode anexar apenas uma configuração de ativação a um grupo de Auto Scaling de cada vez , com as seguintes restrições (parcialmente desatualizadas) (consulte Iniciar configuração ):

When you attach a new or updated launch configuration to your Auto Scaling group, any new instances will be launched using the new configuration parameters. Existing instances are not affected. When Auto Scaling needs to scale down, it first terminates instances that have an older launch configuration. [emphasis mine]

As partes enfatizadas são fundamentais, com a primeira cobrindo o requisito de manter as instâncias sob demanda em funcionamento após a mudança da respectiva configuração inicial de inicialização sob demanda para a configuração adicional de lançamento pontual, e a última não necessariamente sendo o caso mais devido às recentemente introduzidas Políticas de Rescisão do Auto Scaling (para um mudança não tem havido a fanfarra normalmente através de um post de blog AWS acompanhando), documentado em Instância Política de rescisão do seu grupo de escalonamento automático :

Before Auto Scaling selects an instance to terminate, it first identifies the Availability Zone that has more instances than the other Availability Zones used by the group. If all Availability Zones have the same number of instances, it identifies a random Availability Zone. Within the identified Availability Zone, Auto Scaling uses the termination policy to select the instance for termination. [emphasis mine]

Conforme destacado em Como funciona sua política de rescisão , agora você pode especificar NewestInstance , se quiser que a última instância ativada seja encerrada , o que seria uma das instâncias spot lançadas mais recentemente:

Auto Scaling uses the instance launch time to identify the instance that was launched last.

Obviamente, pode haver um pouco mais para isso, por exemplo você pode especificar qualquer uma das políticas como uma política independente ou pode listar várias políticas em uma lista ordenada , mas essa abordagem deve garantir que a carga de todas as instâncias seja fatorada no auto -scalar medições e disparadores ; uma ressalva permanece:

Advertência

Se o balanceador de carga encerrar uma das instâncias on demand por qualquer outro motivo (por exemplo, porque se tornou insalubre por si só), ela não seria substituída automaticamente por uma instância sob demanda. Então, você precisa monitorar e contabilizar esse evento separadamente, por exemplo, ativando temporariamente a configuração de ativação sob demanda novamente.

Boa sorte!

    
por 15.11.2012 / 17:05
1

Eu me inspirei nas respostas aqui para criar o link

Ajuda você a fazer o seguinte

  • Você sempre precisa de uma frota de máquinas para seus requisitos de cluster do Hadoop / Mesos / YARN
  • Você deseja economizar dinheiro usando o Spot, mas também para o OD, porque precisa do poder de processamento para atender ao seu SLA
  • Volte ao Spot uma vez no OD para economizar dinheiro novamente.
por 28.10.2015 / 08:51
1

Caso você queira apenas 1 ASG com número estático de instâncias sob demanda, o seguinte deve funcionar:

  • Crie o grupo Auto Scaling com base na configuração de inicialização da instância spot.

  • Suspender o dimensionamento automático no ASG

  • Adicione manualmente as instâncias sob demanda (carga básica estática) ao ASG e ative a proteção de instâncias para essas instâncias.

  • Retomar o escalonamento automático no ASG

  • A política de escalonamento automático padrão agora ignorará as instâncias sob demanda (devido à proteção) e encerrará o mesmo número de instâncias spot como instância sob demanda para alcançar o número desejado do grupo. Quaisquer atividades de entrada ou saída só iniciarão ou encerrarão instâncias spot.

por 23.01.2017 / 05:14