Vantaggi di EBS vs. istanza-negozio (e viceversa)

Non sono chiaro quali siano i benefici che ottengo da EBS rispetto all’istanza-negozio per le mie istanze su Amazon EC2. Semmai, sembra che l’EBS sia molto più utile (fermarsi, iniziare, persistere + migliorare la velocità) a una relativamente piccola differenza di costi …? Inoltre, c’è una metrica sul fatto che più persone stanno usando EBS ora che è disponibile, considerando che è ancora relativamente nuovo?

In conclusione, dovresti quasi sempre utilizzare le istanze supportate da EBS.

Ecco perché

  • Le istanze supportate da EBS possono essere impostate in modo che non possano essere terminate (accidentalmente) tramite l’API.
  • Le istanze supportate da EBS possono essere interrotte quando non le utilizzi e vengono riprese quando ne hai più bisogno (come mettere in pausa un Virtual PC), almeno con i miei schemi di utilizzo risparmiando molto più denaro di quanto spendo in alcune decine di GB di storage EBS.
  • Le istanze supportate da EBS non perdono la loro memoria di istanza quando si bloccano (non è un requisito per tutti gli utenti, ma rende il recupero molto più veloce)
  • È ansible ridimensionare dynamicmente l’archiviazione dell’istanza EBS.
  • È ansible trasferire la memoria dell’istanza EBS in un’istanza nuova di zecca (utile se l’hardware su cui stavi lavorando si rompe o muore, cosa che accade di tanto in tanto)
  • È più veloce avviare un’istanza supportata da EBS perché l’immagine non deve essere recuperata da S3.
  • Se l’hardware che l’istanza con supporto EBS è programmata per la manutenzione , l’arresto e l’avvio dell’istanza migrano automaticamente al nuovo hardware. Sono stato anche in grado di spostare un’istanza supportata da EBS su hardware guasto forzando l’istanza e riavviandola di nuovo (il tuo chilometraggio potrebbe variare sull’hardware guasto).

Sono un utente pesante di Amazon e ho trasferito tutte le mie istanze in un archivio con supporto EBS non appena la tecnologia è uscita dalla versione beta. Sono stato molto contento del risultato.

L’EBS può ancora fallire – non un proiettile d’argento

Tieni presente che qualsiasi parte dell’infrastruttura basata su cloud può fallire in qualsiasi momento. Pianifica la tua infrastruttura di conseguenza. Sebbene le istanze supportate da EBS forniscano un certo livello di durabilità rispetto alle istanze di storage effimere, possono fallire. Avere un AMI da cui è ansible avviare nuove istanze secondo necessità in qualsiasi zona di disponibilità, eseguire il backup dei dati importanti (ad es. Database) e, se il budget lo consente, eseguire più istanze di server per bilanciamento del carico e ridondanza (idealmente in più zone di disponibilità ).

Quando non farlo

Ad un certo punto nel tempo, potrebbe essere più economico ottenere istanze di IO su Istance Store più veloci. C’è stato un tempo in cui era certamente vero. Ora ci sono molte opzioni per l’archiviazione EBS, in grado di soddisfare molte esigenze. Le opzioni e i loro prezzi si evolvono costantemente man mano che la tecnologia cambia. Se disponi di una quantità significativa di istanze che sono veramente disponibili (non influiscono molto sulla tua attività se si esauriscono), fai i conti con il rapporto costi / prestazioni. Le istanze supportate da EBS possono anche morire in qualsiasi momento, ma la mia esperienza pratica è che l’EBS è più duratura.

Il 99% della nostra configurazione AWS è riciclabile. Quindi per me non importa se termino un’istanza – nulla è mai perso. Ad esempio, la mia applicazione viene distribuita automaticamente su un’istanza da SVN, i nostri registri sono scritti su un server syslog centrale.

L’unico vantaggio dell’archiviazione di istanza che vedo sono i risparmi sui costi. Altrimenti vincono le istanze sostenute da EBS. Eric ha menzionato tutti i vantaggi.


[2012-07-16] Oggi vorrei esprimere questa risposta in modo molto diverso.

Non ho avuto alcuna esperienza positiva con le istanze sostenute da EBS nell’ultimo anno o giù di lì. Anche gli ultimi downtime su AWS sono andati in rovina per EBS.

Suppongo che un servizio come RDS utilizzi anche qualche tipo di EBS e sembra funzionare per la maggior parte. Nelle istanze che gestiamo noi stessi, ci siamo sbarazzati di EBS laddove ansible.

Liberarsi di un ambito in cui abbiamo spostato un cluster di database su ferro (= hardware reale). L’unico pezzo rimanente nella nostra infrastruttura è un server DB in cui si estendono più volumi EBS in un RAID software e si esegue il backup due volte al giorno. Qualunque cosa si perderà tra i backup, con cui possiamo convivere.

L’EBS è una tecnologia alquanto flakey dal momento che è essenzialmente un volume di rete: un volume collegato al server da remoto. Non sto negando il lavoro svolto con esso – è un prodotto straordinario poiché l’archiviazione persistente essenzialmente illimitata è solo una chiamata API. Ma non è adatto agli scenari in cui le prestazioni I / O sono fondamentali.

E oltre a come si comporta lo storage di rete, tutta la rete è condivisa su istanze EC2. Più piccola è un’istanza (ad es. T1.micro, m1.small), peggio diventa perché le interfacce di rete sul sistema host effettivo sono condivise tra più VM (= l’istanza EC2) che viene eseguita su di essa.

L’istanza più grande si ottiene, meglio è, ovviamente. Meglio qui significa dentro la ragione .

Quando è richiesta la persistenza, consiglierei sempre alle persone di usare qualcosa come S3 per centralizzare tra le istanze. S3 è un servizio molto stabile. Quindi automatizza la configurazione dell’istanza fino al punto in cui è ansible avviare un nuovo server e si prepara da solo. Quindi non è necessario disporre di una memoria di rete che risulti più lunga dell’istanza.

Quindi, tutto sumto, non vedo alcun vantaggio per le istanze supportate da EBS, cosa così mai. Preferisco aggiungere un minuto al bootstrap, quindi eseguire con un potenziale SPOF.

Ci piace il negozio di istanze. Ci costringe a rendere le nostre istanze completamente riciclabili e possiamo facilmente automatizzare il processo di creazione di un server da zero su una data AMI. Ciò significa anche che possiamo facilmente sostituire le AMI. Inoltre, EBS presenta ancora problemi di prestazioni di volta in volta.

Eric lo ha praticamente inchiodato. Noi ( Bitnami ) siamo un fornitore popolare di AMI gratuite per applicazioni e framework di sviluppo popolari (PHP, Joomla, Drupal, hai l’idea). Posso dirvi che le AMI supportate da EBS sono significativamente più popolari di S3. In generale, penso che le istanze supportate da s3 vengano utilizzate per lavori distribuiti e limitati nel tempo (ad esempio, l’elaborazione su larga scala di dati) dove se una macchina fallisce, un’altra viene semplicemente scaricata. Gli AMIS supportati da EBS tendono ad essere utilizzati per attività server “tradizionali”, come server web o database che mantengono lo stato localmente e quindi richiedono che i dati siano disponibili in caso di arresto anomalo.

Un aspetto che non ho menzionato è il fatto che è ansible scattare istantanee di un’istanza supportata da EBS durante l’esecuzione, consentendo in effetti di avere backup molto economici della propria infrastruttura (le istantanee sono basate su blocchi e incrementale)

Ho avuto la stessa identica esperienza con Eric nella mia ultima posizione. Ora nel mio nuovo lavoro, sto seguendo lo stesso processo che ho eseguito nel mio ultimo lavoro … ricostruendo tutte le loro AMI per le istanze supportate da EBS – e forse come macchine a 32 bit (più economiche – ma non posso usare la stessa AMI su 32 e 64 macchine).

Le istanze supportate da EBS avviano abbastanza rapidamente da poter iniziare a utilizzare l’ API di Amazon AutoScaling che consente di utilizzare le metriche di CloudWatch per triggersre il lancio di istanze aggiuntive e registrarle all’ELB (Elastic Load Balancer) e anche per chiuderle quando non più richiesto.

Questo tipo di scalabilità automatica dynamic è ciò che è AWS – dove i veri risparmi nell’infrastruttura IT possono entrare in gioco. È praticamente imansible eseguire la scalabilità automatica proprio con le vecchie istanze di s3 “IstanceStore”.

Sto solo iniziando a usare me stesso EC2 quindi non sono un esperto, ma la documentazione di Amazon dice:

ti consigliamo di utilizzare l’archivio di istanze locale per i dati temporanei e, per i dati che richiedono un livello superiore di durabilità , consigliamo di utilizzare i volumi Amazon EBS o di eseguire il backup dei dati su Amazon S3.

Enfasi mia.

Faccio più analisi dei dati che il web hosting, quindi la persistenza non conta tanto per me quanto potrebbe per un sito web. Data la distinzione operata da Amazon stessa, non darei per scontato che EBS sia adatto a tutti.

Proverò a ricordare di pesare di nuovo dopo che li ho usati entrambi.

L’EC2 “Hardware”

Quando viene avviata un’istanza EC2, viene riservata una macchina virtuale per l’esecuzione dell’istanza. Quella macchina virtuale ha specifiche specifiche a seconda del tipo di istanza: CPU a 32 o 64 bit, numero di core virtuali, dimensioni del disco rigido, ecc. I dettagli sulle specifiche dell’istanza sono disponibili su http://aws.amazon.com / ec2 / # istanza .

Quando la tua istanza EC2 è in uno stato “in esecuzione”, significa che è in esecuzione sulla macchina virtuale, e questo è ciò che ti viene addebitato.

Il disco fisso della macchina virtuale è considerato “effimero”. Il termine “effimero” deriva dalla parola greca “effemeridi” che significa “durare solo un giorno”. Qualsiasi cosa su un disco così rigido dovrebbe essere considerata temporanea. A meno che i dati non vengano copiati dal disco rigido, se la macchina virtuale viene arrestata, i dati vengono persi. Ciò include dati, software e persino un sistema operativo che risiede su tali dischi rigidi.

Amazon Web Services fornisce istanze EC2 con due tipi di dispositivi root: “EBS-backed” e “instance store”.

Istanze “Istance Store”

Un’istanza “istanza negozio” è un’istanza EC2 il cui dispositivo di root risiede sul disco rigido della macchina virtuale. Quando l’istanza viene creata, l’AMI di base viene copiata nel disco rigido della macchina virtuale e avviata. L’istanza può essere eseguita per tutto il tempo che vuoi, ma non può essere arrestata. Poiché il dispositivo root dell’istanza è il disco rigido effettivo, è “bloccato” sull’hardware e l’unica cosa che puoi fare è terminare l’istanza. Se lo fai, l’istanza viene cancellata, mai da recuperare. Rischi anche che se l’hardware della macchina virtuale fallisce, si perderà anche qualcosa sul disco rigido.

Se si avvia un’istanza di “istanza negozio”, essere pronti a lasciarlo in esecuzione fino a quando non si è completamente fatto con esso. Tieni presente che ti verrà addebitato dal momento in cui l’istanza viene avviata, fino al momento in cui viene interrotta.

Istanze “EBS-Backed”

Un’istanza “EBS-backed” è un’istanza EC2 che utilizza un volume EBS come dispositivo root. I volumi EBS sono unità ridondanti, “virtuali”, che non sono legate ad alcun hardware particolare, tuttavia sono limitate a una particolare zona di disponibilità EC2. Ciò significa che un volume EBS può spostarsi da un componente hardware a un altro all’interno della stessa zona di disponibilità. Puoi pensare ai volumi EBS come a una sorta di Network Attached Storage.

Se l’hardware della macchina virtuale non funziona, il volume EBS può essere semplicemente spostato su un’altra macchina virtuale e rilanciato. In teoria, non perderai alcun dato.

Un altro vantaggio è che i volumi EBS possono essere facilmente copiati e duplicati. In questo modo è ansible eseguire semplici snapshot di backup dei volumi, creare nuovi volumi e avviare nuove istanze EC2 basate su tali volumi duplicati.

Probabilmente il più grande vantaggio che le istanze “EBS-backed” hanno su istanze di “istanze di archivio” è che possono essere fermate. Quando si esegue questa operazione, la macchina virtuale viene arrestata e il volume EBS viene archiviato per il successivo recupero. L’hardware è quindi disponibile per l’utilizzo da parte di qualcun altro. Inoltre, durante questo periodo, non ti viene addebitata la carica di esecuzione dell’istanza EC2. Ma ti viene addebitato lo spazio di archiviazione EBS. Quando si desidera eseguire nuovamente l’istanza, è sufficiente avviarla nuovamente. Una nuova macchina virtuale è riservata, il volume EBS è collegato e l’istanza viene avviata.

Ma per quanto riguarda i dischi rigidi della macchina virtuale?

Sì, è ansible utilizzare tali dischi rigidi, anche quando l’istanza EC2 è “EBS-backed”. Per impostazione predefinita, non sono disponibili. Se si utilizzano i programmi della riga di comando per avviare l’istanza, è ansible utilizzare l’opzione “-b” nel comando ec2-run-instances per colbind le unità di “archivio di istanze” all’istanza EC2.

Avere a disposizione queste unità può essere utile se si desidera memorizzare dati temporanei. L’accesso in lettura e scrittura deve essere più veloce della lettura e scrittura su un volume EBS perché non si inviano dati attraverso la rete. Inoltre, non ti verrà addebitato alcun costo per il trasferimento dei dati o l’archiviazione dei dati. Ma funziona solo se i dati possono essere persi in qualsiasi momento.

Fonte: https://skeddly.desk.com/customer/portal/articles/1346918-ebs-backed-versus-store-store

EBS è come il disco virtuale di una VM:

  • Durevole, le istanze supportate da EBS possono essere avviate e interrotte liberamente (risparmio di denaro)
  • Può essere acquisito in qualsiasi momento, per ottenere backup puntuali
  • Le AMI possono essere create dalle istantanee EBS, quindi il volume EBS diventa un modello per i nuovi sistemi

L’archiviazione di istanze è:

  • Locale, quindi generalmente più veloce
  • Non in rete, in casi normali EBS I / O ha un costo di larghezza di banda della rete (eccetto per le istanze ottimizzate per EBS, che hanno una larghezza di banda EBS separata)
  • Ha I / O limitato al secondo IOPS. Anche i massimi di I / O forniti sono di poche migliaia di IOPS
  • Fragile. Non appena l’istanza viene interrotta, si perde tutto nella memoria di istanza.

Ecco dove usare ciascuno:

  • Utilizzare EBS per la partizione del sistema operativo di supporto e la memoria permanente (dati DB, log critici, configurazione dell’applicazione)
  • Utilizzare la memoria di istanza per dati in-process, registri non critici e stato transitorio dell’applicazione. Esempio: memoria di ordinamento esterna, tempfile, ecc.
  • L’archiviazione di istanze può essere utilizzata anche per dati critici per le prestazioni, quando esiste una replica tra istanze (DB NoSQL, sistemi di coda / messaggi distribuiti e DB con replica)
  • Utilizzare S3 per i dati condivisi tra i sistemi: set di dati di input e risultati elaborati, o per i dati statici utilizzati da ciascun sistema quando vengono rilasciati.
  • Usa AMI per server prebaked e riscrivibili

La maggior parte delle persone sceglie di utilizzare l’istanza con supporto EBS poiché è di stato. È più sicuro perché tutto ciò che hai in esecuzione e installato al suo interno, sopravviverà a stop / stop o a qualsiasi errore di istanza.

L’archivio di istanze è senza stato, lo si perde con tutti i dati all’interno in caso di qualsiasi situazione di errore di istanza. Tuttavia, è gratuito e più veloce perché il volume dell’istanza è legato al server fisico su cui è in esecuzione la VM.

Per qualcuno nuovo di tutto questo e se è atterrato accidentalmente qui

A partire da ora tutte le AMI nella sezione Quickstart sono supportate da EBS

inserisci la descrizione dell'immagine qui

Inoltre c’è una buona spiegazione al doc ufficiale per la differenza tra EBS e l’ archivio di istanze

e questa immagine riassume molto inserisci la descrizione dell'immagine qui

Se esegui più istanze e assegni un servizio pianificato di istanza AWS come priorità prioritaria su Come evitare addebiti imprevisti , ti consiglio di non utilizzare l’istanza-archivio .

Come spiegato sulla documentazione di EBS Volumes e sulla risposta di j2d3 e Siddharth Sharma, l’istanza-store può essere eseguita per tutto il tempo che vuoi, ma non può essere interrotta . Significa che il servizio non può essere programmato da un avvio / arresto automatico o da un ripristino di istanza .

Inoltre, per questo tipo di schema non vi è alcun vantaggio nell’utilizzo di EBS Backed on Elastic Beanstalk poiché è progettato per garantire che tutte le risorse necessarie siano in esecuzione . Farà sempre un rilancio automatico dei servizi che interrompi. inserisci la descrizione dell'immagine qui Rivedendo tutto il resto , dal totale delle spese per l’utilizzo di VPC , EBS e ELB che sono state aggiunte a EC2-Classic , l’ EC2-VPC con ELB è principalmente la scelta migliore laddove a differenza di EC2-Classic , un’istanza arrestata conserva il suo Elastico associato Gli indirizzi IP e il volume EBS vengono memorizzati automaticamente.

Come conclusione , prendendo la parte principale della tua domanda:

sembra che l’EBS sia molto più utile (fermarsi, iniziare, persistere + migliorare la velocità) a una relativamente piccola differenza di costi …?

La risposta è ma se l’istanza è basata su EBS, può essere interrotta. Rimarrà nel tuo account, non ti verrà addebitato alcun costo . Ti verrà addebitato solo il volume ma EBS viene addebitato ogni ora . Si può anche considerare che tra tutti i tipi disponibili si abbia una certa flessibilità per ridimensionare il volume EBS .

Oltre ai vantaggi già elencati da Eric , deve anche essere consapevole del fatto che in termini di costi S3 può essere o meno più economico di EBS . Sono d’accordo sul fatto che sia relativamente poca differenza di costo se si continuano a eseguire entrambi i tipi di istanza all’interno della stessa piattaforma e architettura dell’applicazione per tutto il tempo.

Tuttavia, se esiste uno scenario per eseguire l’applicazione su un servizio a costi inferiori, estrarre tutte le attività non gestite e assegnarle a VPC / EBS tramite una pipeline o lambda entro un breve periodo di tempo, dire <1 ora al giorno, che è imansible fare quando si usa un negozio di istanze , quindi sarà una storia diversa.