Auto-scaling EC2 con istanze Spot e On-Demand?


11

Sto cercando di ottimizzare il costo dei nostri gruppi EC2 con ridimensionamento automatico facendoli avviare istanze spot anziché istanze su richiesta.

Quello che voglio davvero è essere in grado di mantenere alcuni server nel gruppo come istanze su richiesta, indipendentemente da ciò che accade al mercato dei prezzi delle istanze spot. Quindi voglio che eventuali server aggiuntivi nel gruppo, al di sopra del mio minimo configurato, siano istanze spot. Sono generalmente d'accordo con il ritardo nell'aggiunta di server tramite richieste spot.

Non riesco a trovare alcun modo per farlo e ho provato a cercare la documentazione di AWS. Sembra che un ASG può essere sia on demand che spot, ma non un ibrido.

Potrei eventualmente aggiungere manualmente un'istanza su richiesta a Elastic Load Balancer assegnato al gruppo di ridimensionamento automatico, ma il carico di quel server non verrebbe preso in considerazione nelle misurazioni e nei trigger di ridimensionamento automatico.

Suppongo che potrei inserire un prezzo di offerta ridicolmente alto per assicurarmi di ottenere sempre i server di cui ho bisogno, ma poi guardo la cronologia dei prezzi e vedo grandi picchi occasionali.

La documentazione di AWS è in contrasto con se stessa, poiché in un unico punto si dice che se si immette un minimo di server, quel numero viene "assicurato" per essere lì. Ma poi quando leggi delle istanze spot, non ci sono garanzie. Il differenziale di prezzo per spot è convincente, quindi mi piacerebbe sfruttarlo il più possibile mantenendo comunque una linea di base sempre attiva. È possibile?

Risposte:


1

Al momento è possibile mescolare ondemand e individuare istanze su un singolo ASG

Amazon EC2 Auto Scaling ora ti consente di eseguire il provisioning e ridimensionare automaticamente le istanze tra le opzioni di acquisto, le Zone di disponibilità (AZ) e le famiglie di istanze in un singolo gruppo di Auto Scaling (ASG), per ottimizzare scalabilità, prestazioni e costi. Ora puoi includere istanze Spot con On-Demand e RI in un singolo ASG , per risparmiare fino al 90% sul calcolo.


Sì, grazie per aver aggiornato questa domanda. Ho segnato la tua come nuova risposta canonica per questo.
piattaforme dal

15

L'approccio discusso sopra sarebbe un po 'disordinato e non così flessibile. L'approccio più canonico è semplicemente creare 2 ASG (uno per spot, uno per on-demand) e quindi registrarli entrambi con lo stesso ELB (discusso qui ). Ciò ti dà la possibilità di controllare ciascuno in modo indipendente invece di provare a confondere con gli swap LC in un singolo ASG.


7

Sfortunatamente, questo approccio ibrido di ridimensionamento automatico non sembra essere pronto all'uso.

Tuttavia, potresti essere in grado di aggirare questa limitazione come segue (non testato, solo un progetto di sistema che mi destreggiavo da un po '):

Potenziale soluzione

Come indicato in Uso del ridimensionamento automatico per avviare istanze Spot , l'offerta per prezzo spot è un parametro della Configurazione di avvio in uso. Come hai sottolineato, non è disponibile una configurazione di avvio ibrida , ma deve essere su richiesta o spot, il che significa che il caso d'uso richiede due diverse configurazioni di avvio.

Questo non sembra aiutare subito, perché puoi collegare solo una configurazione di avvio a un gruppo di ridimensionamento automatico alla volta , con i seguenti vincoli (parzialmente obsoleti) (vedi Configurazione di avvio ):

Quando si collega una configurazione di avvio nuova o aggiornata al gruppo di ridimensionamento automatico, eventuali nuove istanze verranno avviate utilizzando i nuovi parametri di configurazione. Le istanze esistenti non sono interessate . Quando il ridimensionamento automatico deve essere ridotto, per prima cosa termina le istanze con una configurazione di avvio precedente . [enfasi mia]

Le parti enfatizzate sono tuttavia fondamentali, con le prime che coprono il requisito di mantenere in esecuzione le istanze su richiesta dopo il passaggio dalla rispettiva configurazione iniziale di avvio su richiesta alla configurazione aggiuntiva di lancio spot, e quest'ultima non è più necessariamente il caso a causa di le Politiche di terminazione del ridimensionamento automatico introdotte di recente (per cambiare non c'è stata la solita fanfara tramite un post sul blog AWS di accompagnamento), documentato nelle Politiche di terminazione delle istanze per il tuo gruppo di ridimensionamento automatico :

Prima che il ridimensionamento automatico selezioni un'istanza da terminare, identifica innanzitutto la zona di disponibilità con più istanze rispetto alle altre zone di disponibilità utilizzate dal gruppo. Se tutte le zone di disponibilità hanno lo stesso numero di istanze, identifica una zona di disponibilità casuale. All'interno della zona di disponibilità identificata, il ridimensionamento automatico utilizza la politica di terminazione per selezionare l'istanza per la terminazione . [enfasi mia]

Come indicato in Come funzionano i criteri di terminazione , ora è possibile specificare NewestInstance , se si desidera terminare l'ultima istanza avviata , che sarebbe una delle istanze spot avviate più di recente:

Il ridimensionamento automatico utilizza l'ora di avvio dell'istanza per identificare l'istanza avviata per ultima.

Ovviamente potrebbe esserci un po 'di più in questo, ad esempio è possibile specificare una qualsiasi delle politiche come politica autonoma, oppure è possibile elencare più politiche in un elenco ordinato , ma questo approccio dovrebbe garantire il carico di tutte le istanze da considerare nel misurazioni e trigger di ridimensionamento automatico ; rimane comunque un avvertimento:

Avvertimento

Se il bilanciamento del carico termina una delle istanze su richiesta per qualsiasi altro motivo (ad es. Perché è diventato di per sé insalubre), non verrà sostituito automaticamente da un'istanza su richiesta. Quindi dovrai monitorare e tenere conto di questo evento separatamente, ad esempio attivando nuovamente temporaneamente la configurazione di avvio su richiesta.

In bocca al lupo!


2
Questo ha senso - ottimo lavoro investigativo. Esiste ancora un rischio di interruzione, ma sembra che tu abbia scoperto diversi nuovi modi per ridurlo. Speriamo che un giorno avremo una semplice casella di controllo per gli ASG, "Le istanze al di sotto o al di sotto del minimo del server sono istanze su richiesta". Grazie!
piattaforme dal

1

Ho preso ispirazione dalle risposte qui per trovare https://github.com/ashwanthkumar/matsya

Ti aiuta a fare quanto segue

  • È sempre necessaria una flotta di macchine per i requisiti del cluster Hadoop / Mesos / YARN
  • Vuoi risparmiare utilizzando Spot ma anche il fallback su OD perché hai bisogno della potenza di elaborazione per soddisfare il tuo SLA
  • Tornare a Spot una volta su OD per risparmiare nuovamente denaro.

1
Si prega di essere consapevoli della nostra politica di autopromozione
HBruijn,

La risposta è stata condivisa con buone intenzioni che potrebbe essere utile. Se lo trovi come autopromozione, posso eliminare la risposta.
ashwanthkumar,

Se avessi pensato che la tua risposta fosse un vero spam, l'avrei già contrassegnata come tale, quindi non è necessario eliminare il tuo post. Il collegamento di promozione del prodotto è più preventivo del fatto che, sebbene una tale risposta possa essere preziosa, esiste un buon equilibrio di cui utenti relativamente nuovi come te spesso non sono a conoscenza. E come moderatore preferisco educarti ora, prima di attraversare qualsiasi linea che non sapevi esistesse (che è uno sfortunato modello ricorrente)
HBruijn,

Ha senso. Grazie per l'informazione sulla politica.
ashwanthkumar,

1

Nel caso in cui si desideri solo 1 ASG con numero statico di istanze su richiesta, dovrebbe funzionare quanto segue:

  • Crea un gruppo di ridimensionamento automatico basato sulla configurazione di avvio dell'istanza Spot.

  • Sospendi ridimensionamento automatico su ASG

  • Aggiungi manualmente istanze su richiesta (carico di base statico) ad ASG e attiva la protezione delle istanze per tali istanze.

  • Riprendi il ridimensionamento automatico su ASG

  • Il criterio di ridimensionamento automatico predefinito ora ignorerà le istanze su richiesta (a causa della protezione) e terminerà lo stesso numero di istanze spot dell'istanza su richiesta per raggiungere il numero desiderato del gruppo. Qualsiasi attività di scale-in o out avvierà o terminerà solo istanze spot.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.