Best practice per spot di Amazon EC2 - Amazon Elastic Compute Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Best practice per spot di Amazon EC2

Amazon EC2 fornisce l'accesso alla capacità di elaborazione EC2 di riserva Cloud AWS tramite istanze Spot con un risparmio fino al 90% rispetto ai prezzi on demand. L'unica differenza tra istanze on demand e istanze spot è che queste ultime possono essere interrotte da Amazon EC2, con due minuti di notifica, se Amazon EC2 deve recuperare la capacità. Per garantire la migliore esperienza con le istanze spot, è importante comprendere e applicare le best practice per il loro utilizzo.

Istanze spot sono consigliate per applicazioni stateless, con tolleranza ai guasti, flessibili. Ad esempio, Istanze spot funzionano bene per Big Data, carichi di lavoro containerizzati, CI/CD, server Web stateless, High Performance Computing (HPC) e carichi di lavoro di rendering.

Durante l'esecuzione, Istanze spot sono esattamente identici a Istanze on demand. Tuttavia, Spot non garantisce la possibilità di continuare a eseguire le istanze abbastanza a lungo da completare i carichi di lavoro. Inoltre, Spot non garantisce di poter avere immediatamente a disposizione le istanze che si stanno cercando o che sia sempre possibile ottenere la capacità aggregata richiesta. Inoltre, interruzioni e capacità delle istanze spot possono cambiare nel tempo perché la disponibilità delle istanze spot varia in base all'offerta e alla domanda e le prestazioni passate non sono una garanzia di risultati futuri.

Istanze spot non sono adatte per carichi di lavoro inflessibili, stateful, senza tolleranza ai guasti o strettamente accoppiati tra nodi di istanze. Non consigliamo le istanze spot per carichi di lavoro che non tollerano periodi occasionali in cui l'intera capacità target non è completamente disponibile. Se da un lato seguire le best practice di spot, che mirano alla flessibilità in merito ai tipi di istanze e alle zone di disponibilità, offre le migliori possibilità di elevata disponibilità, dall'altro non vi è alcuna garanzia che la capacità sarà disponibile, in quanto i picchi di domanda delle istanze on demand possono interrompere i carichi di lavoro sulle istanze spot.

Sconsigliamo vivamente di utilizzare istanze spot per questi carichi di lavoro o per tentare di eseguire il failover a istanze on demand per gestire le interruzioni. Il failover su istanze on demand può causare inavvertitamente interruzioni per le altre istanze spot. Inoltre, se le istanze spot per una combinazione di tipo di istanza e zona di disponibilità vengono interrotte, potrebbe diventare difficile ottenere istanze on demand con la stessa combinazione.

A prescindere che l'utente conosca già Spot o sia la prima volta che utilizza le istanze spot, se si verificano problemi di interruzioni o disponibilità delle istanze spot è consigliabile seguire queste best practice per ottenere la migliore esperienza di utilizzo del servizio Spot.

Preparazione di singole istanze per le interruzioni

Il modo migliore per gestire nel modo appropriato le interruzioni delle istanze spot è progettare l'applicazione affinché sia tollerante ai guasti. A tale scopo, è possibile sfruttare i suggerimenti di ribilanciamento delle istanze EC2 e gli avvisi di interruzione delle istanze spot.

Un suggerimento di ribilanciamento dell'istanza EC2 è un segnale che avvisa che un'istanza spot è a rischio elevato di interruzione. Il segnale ti dà la possibilità di gestire l'istanza spot in modo proattivo rispetto all'avviso di interruzione dell'istanza spot con preavviso di due minuti. È possibile decidere di ribilanciare il carico di lavoro su Istanze spot nuove o esistenti che non presentano un rischio elevato di interruzione. Abbiamo semplificato l'utilizzo di questo segnale utilizzando la funzionalità di ribilanciamento della capacità nei gruppi con dimensionamento automatico e nel parco istanze EC2.

Una notifica di interruzione di istanza spot è un avviso che viene emesso due minuti prima che Amazon EC2 interrompa un'istanza spot. Se il carico di lavoro è "flessibile nel tempo", puoi anche configurare le istanze spot affinché vengano arrestate o ibernate, anziché terminate, quando vengono interrotte. Amazon EC2 arresta o iberna automaticamente le istanze spot in caso di interruzione e ripristina automaticamente le istanze quando la capacità è disponibile.

Ti consigliamo di creare una regola in Amazon EventBridge che acquisisca i consigli di ribilanciamento e le notifiche di interruzione, quindi attivi un checkpoint per l'avanzamento del carico di lavoro o gestisca correttamente l'interruzione. Per ulteriori informazioni, consulta Monitorare i segnali di raccomandazione di ribilanciamento. Per un esempio dettagliato che illustra come creare e utilizzare le regole degli eventi, consulta Taking Advantage of Amazon EC2 Spot Instance Interruption Notices.

Per ulteriori informazioni, consultare Raccomandazioni per il ribilanciamento delle istanze EC2 e Interruzioni dell'istanza spot.

Essere flessibili riguardo tipi di istanza e zone di disponibilità

Un pool di capacità spot è un insieme di istanze EC2 inutilizzate con lo stesso tipo di istanza (ad esempio m5.large) e zona di disponibilità (ad esempio, us-east-1a). È necessario essere flessibili sui tipi di istanza richiesti e sulle zone di disponibilità in cui è possibile distribuire il carico di lavoro. Questo offre a Spot una migliore possibilità di trovare e allocare la quantità di capacità di elaborazione richiesta. Ad esempio, non richiedere solo c5.large se sei disposto a usare grandi quantità delle famiglie c4, m5 e m4.

A seconda delle esigenze specifiche, puoi valutare su quali tipi di istanza puoi essere flessibile per soddisfare i requisiti di calcolo. Se un carico di lavoro può essere scalato verticalmente, dovresti includere tipi di istanze più grandi (più v e memoria) nelle tue richieste. CPUs Se puoi scalare solo orizzontalmente, devi includere tipi di istanza di vecchia generazione in quanto sono meno richiesti dai clienti on demand.

Una buona regola è quella di essere flessibili su almeno 10 tipi di istanza per ogni carico di lavoro. Assicurati inoltre che tutte le zone di disponibilità siano configurate per l'utilizzo nel VPC e selezionate per il carico di lavoro.

Utilizzo della selezione del tipo di istanza basata su attributi

Con la selezione del tipo di istanza basata sugli attributi, puoi specificare gli attributi dell'istanza, come vCPU, memoria e archiviazione, per il carico di lavoro che desideri eseguire. EC2 Auto Scaling o EC2 Fleet identificheranno e avvieranno automaticamente le istanze che corrispondono agli attributi specificati. Ciò elimina lo sforzo necessario per selezionare manualmente tipi di istanze specifici, il che richiede una comprensione approfondita dell'offerta di ciascun tipo di istanza.

Inoltre, la selezione del tipo di istanza basata sugli attributi consente di utilizzare automaticamente i tipi di istanza appena rilasciati non appena diventano disponibili. Ciò garantisce un accesso semplificato a una gamma sempre più ampia di capacità di istanze spot.

La selezione del tipo di istanza basata su attributi è ideale per carichi di lavoro e framework che possono essere flessibili sui tipi di istanza in cui vengono eseguiti, come ad esempio carichi di lavoro di calcolo ad alte prestazioni (HPC) e big data.

Per ulteriori informazioni, consulta Create mixed instances group using attribute-based instance type selection nella Guida per l'utente di Amazon EC2 Auto Scaling e Specificare gli attributi, ad esempio la selezione del tipo per EC2 Fleet o Spot Fleet. in questa guida.

Utilizzo dei punteggi di posizionamento spot per identificare regioni e zone di disponibilità ottimali

Le istanze spot sono capacità EC2 inutilizzata e tale capacità varia in base alla domanda e all'offerta di EC2. Di conseguenza, potresti non ottenere sempre la capacità spot esatta di cui hai bisogno in una posizione specifica in un determinato momento. Per mitigare questa imprevedibilità, puoi utilizzare la funzionalità del punteggio di posizionamento spot. Questa funzionalità fornisce consigli per le regioni o le zone di disponibilità che hanno maggiori probabilità di avere una capacità sufficiente per soddisfare le esigenze di capacità spot senza che sia necessario avviare prima le istanze spot in tali posizioni.

Il punteggio di posizionamento spot viene utilizzato al meglio per carichi di lavoro che possono essere flessibili per quanto riguarda i tipi di istanze e la regione o la zona di disponibilità che possono utilizzare. Tutto ciò che devi fare è specificare la capacità spot di cui hai bisogno, i requisiti del tipo di istanza e se desideri ricevere consigli per le regioni o le zone di disponibilità. In cambio, riceverai un punteggio compreso tra 1 e 10 per ogni regione o zona di disponibilità, che indica la probabilità di fornire correttamente la capacità spot richiesta in tale posizione. Un punteggio di 10 indica che la richiesta spot ha alte probabilità di successo.

È importante notare che un punteggio di posizionamento Spot è una point-in-time raccomandazione, poiché la capacità può variare nel tempo. Non garantisce la capacità disponibile né prevede il rischio di interruzione.

Puoi utilizzare la funzione Spot Placement Score nella console Amazon EC2 o in un AWS CLI SDK. Per ulteriori informazioni, consulta Punteggio di posizionamento spot.

Utilizzo dei gruppi con dimensionamento automatico EC2 o del parco istanze EC2 per gestire la capacità aggregata

Spot consente di pensare in termini di capacità aggregata (in unità che includono vCPU, memoria, archiviazione o throughput di rete), piuttosto che in termini di singole istanze. I gruppi con dimensionamento automatico e il parco istanze EC2 consentono di avviare e gestire una capacità di destinazione e di sostituire automaticamente le risorse interrotte o terminate manualmente. Quando configuri un gruppo con dimensionamento automatico o un parco istanze EC2, devi specificare solo i tipi di istanza e la capacità di destinazione in base alle esigenze dell'applicazione. Per ulteriori informazioni, consulta Gruppi Auto Scaling nella Guida per l'utente di Amazon EC2 Auto Scaling e Crea una EC2 flotta in questa guida per l'utente.

Utilizzo della strategia di allocazione ottimizzata per prezzo e capacità

Le strategie di allocazione nei gruppi Auto Scaling consentono di effettuare il provisioning della capacità target senza la necessità di cercare manualmente i pool di capacità spot con capacità inutilizzata. È consigliabile utilizzare la strategia price-capacity-optimized perché questa effettua automaticamente il provisioning delle istanze dai pool di capacità spot più disponibili che hanno anche il prezzo più basso possibile. Inoltre, nel parco istanze EC2 è possibile sfruttare la strategia di allocazione price-capacity-optimized. Poiché la capacità dell'istanza spot viene restituita da pool con capacità ottimale, ciò riduce la possibilità che le istanze spot vengano recuperate. Per ulteriori informazioni, consulta Allocation strategies for multiple instance types nella Guida per l’utente di Amazon EC2 Auto Scaling e Quando i carichi di lavoro hanno un costo di interruzione elevato nella presente Guida per l’utente.

Utilizza AWS servizi integrati per gestire le tue istanze Spot

Altri AWS servizi si integrano con Spot per ridurre i costi complessivi di elaborazione senza la necessità di gestire le singole istanze o flotte. Ti consigliamo di prendere in considerazione le seguenti soluzioni per i tuoi carichi di lavoro applicabili: Amazon EMR, Amazon Elastic Container Service AWS Batch, Amazon Elastic Kubernetes Service SageMaker , Amazon AI e Amazon AWS Elastic Beanstalk Servers. GameLift Per ulteriori informazioni sulle best practice Spot con questi servizi, consulta il sito Web Amazon EC2 Istanze spot Workshops.

Qual è il metodo di richiesta Spot migliore da utilizzare?

Utilizzare la tabella seguente per determinare l'API da utilizzare per richiedere istanze spot.

"Hello, World!" Quando usarla? Caso d’uso Dovrei usare quest'API?

CreateAutoScalingGroup

  • Sono necessarie più istanze con una configurazione singola o mista.

  • Vuoi automatizzare la gestione del ciclo di vita tramite un'API configurabile.

Crea un gruppo Auto Scaling che gestisce il ciclo di vita delle istanze mantenendo il numero di istanze desiderato. Supporta il dimensionamento orizzontale (aggiunta di più istanze) tra limiti minimi e massimi specificati.

CreateFleet
  • Sono necessarie più istanze con una configurazione singola o mista.

  • Vuoi gestire autonomamente il ciclo di vita dell'istanza.

  • Se non hai bisogno di scalabilità automatica, ti consigliamo di utilizzare un parco di tipo instant.

Crea una parco di istanze on-demand e istanze spot in una singola richiesta, con più specifiche di avvio che variano a seconda del tipo di istanza, dell'AMI, della zona di disponibilità o della sottorete. La strategia di allocazione delle istanze spot è per impostazione predefinita lowest-price per unità, ma puoi modificarla in price-capacity-optimized, capacity-optimized o diversified.

Sì: in modalità instant se non occorre il dimensionamento automatico

RunInstances
  • Stai già utilizzando l' RunInstances API per avviare istanze On-Demand e vuoi semplicemente passare all'avvio delle istanze Spot modificando un singolo parametro.

  • Non sono necessarie più istanze con diversi tipi di istanza.

Avvia un numero di istanze specificato utilizzando un'AMI e un tipo di istanza.

No, perché RunInstances non consente tipi di istanze misti in una singola richiesta

RequestSpotFleet
  • Sconsigliamo vivamente di utilizzare l' RequestSpotFleet API perché è un'API legacy senza investimenti pianificati.

  • Se desideri gestire il ciclo di vita dell'istanza, utilizza l'API. CreateFleet

  • Se non desideri gestire il ciclo di vita dell'istanza, utilizza l'API. CreateAutoScalingGroup

NON USARE. RequestSpotFleet è un'API legacy senza investimenti pianificati.

No
RequestSpotInstances
  • Sconsigliamo vivamente di utilizzare l' RequestSpotInstances API perché si tratta di un'API legacy senza investimenti pianificati.

NON UTILIZZARE. RequestSpotInstances è un'API legacy senza investimenti pianificati.

No