2013-07-02 16 views
6

Sono di fronte a un problema per condividere una memoria tra più istanze EC2. Dovrò eseguire lavori pesanti, quindi avrò bisogno di molte istanze per farlo. Da un lato, ho un volume EBS collegato a un'istanza del server. Dall'altra parte ho un'istanza di un lavoratore. Ho creato un AMI di questa istanza di lavoro e quindi ho creato diverse copie di istanze di questa AMI. Ci sono tutti in esecuzione sullo stesso VPC. Fondamentalmente l'istanza del server invia lavori e gli operai eseguono il lavoro. Vorrei salvare alcuni file di log quando i miei lavoratori sono in esecuzione i lavori, in qualcosa di stoccaggio quota di simile:Archiviazione condivisa tra più istanze di AWS EC2

worker_1/ logfile.log

worker_2/ logfile.log

Cosa poteva essere la migliore soluzione per farlo?

  • ho letto che non è possibile attaccare lo stesso EBS volumi a più istanze.
  • ho dato un'occhiata a GlusterFS ma qui è quello che ho trovato:

"Prima di realizzare una prova di concetto con due server, in diverse zone delle disponibilità, replicando un volume EBS con un filesystem ext4, elencheremo i casi in cui GlusterFS non deve essere utilizzato: File sequenziali scritti simultaneamente da più server come i registri.Il sistema di blocco può causare seri problemi se si archiviano i registri in GlusterFS.La soluzione ideale è archiviarli localmente quindi utilizzare S3 Se necessario, possiamo consolidare più log del server prima o dopo averli archiviati in S3. "

  • E, infine, ho anche controllato S3 secchio montata con s3fs ma ho scoperto che non è una buona opzione troppo:

"Non si può aggiornare una parte file con s3fs in modo che la modifica di un singolo byte effettui il nuovo caricamento dell'intero file ". Quindi se vuoi fare piccoli cambiamenti incrementali allora è un n. Non è possibile utilizzare s3fs - S3 Solo non funziona in questo modo non è possibile modificare un file in modo incrementale. "

Quindi quale potrebbe essere una buona soluzione per i miei problemi e consente ai miei lavoratori di scrivere i loro file di registro in un deposito share?

Grazie per il vostro aiuto!

Romanzo

+0

Dai un'occhiata a una domanda simile qui http://stackoverflow.com/questions/841240/can-you-attach-amazon-ebs-to-multiple-stances – Scott

risposta

4

Grazie per le risposte. ma finalmente sto usando NFS tra le istanze e funziona piuttosto bene!

+1

Posso consigliare NFS in AWS. L'ho eseguito per oltre 1 anno senza problemi. Il networking nella stessa regione funziona molto bene. Richiede comunque 1 istanza aggiuntiva da mantenere per il server NFS – WooDzu

+1

Controlla anche il nuovo servizio EFS di AWS: http://aws.amazon.com/efs/ – Charles

+0

NFS è ancora un SPOF (single point of failure) e AWS EFS è solo disponibile in modalità anteprima nella regione Oregon. Penso che il meglio che possiamo fare sia creare un volume EBS specifico per NFS, e se l'istanza EC2 si interrompe, scollegala e collegala a un'altra istanza. Questo richiederà del tempo anche se il lavoro di preparazione b/c dovrà essere fatto sulla nuova istanza. –

0

ha fatto si considera la possibilità di avere ogni lavoratore scrivere i registri su un disco locale (magari anche sulla partizione effimera), e poi fare ogni lavoratore carica il proprio grande file di registro su S3 al termine?

Questo è in qualche modo simile a ciò che accade quando si utilizza Elastic MapReduce per eseguire alcune attività distribuite su un cluster Hadoop.

Si otterrebbe un elevato throughput di scrittura (poiché sta scrivendo su un disco locale, se si utilizza la partizione effimera), e anche un elevato throughput di upload per inviare i file a S3 (dato che si avrebbe la larghezza di banda di molti lavoratori disponibili).

+0

hanks per la tua risposta. Volevo che il lavoratore scrivesse i registri mentre erano in esecuzione non dopo che il lavoro è terminato (perché può essere un lavoro molto lungo). Ma alla fine sto cercando al momento di usare NFS. Vedremo come va! –

+0

Un'altra opzione sarebbe quella di fare in modo che i lavoratori scrivano i registri sui dischi locali (aggiungendo il file locale) fino a quando non viene raggiunto un limite (numero di righe scritte, numero di byte scritti o una quantità di tempo trascorsa, qualunque). Quando viene raggiunto il limite, smetti di scrivere su quel file e inizia a scrivere su uno nuovo e carica il file finito su S3. –

0

Non completamente sicuro del contesto, ma sarebbe writing objects direttamente su S3 montato essere fattibile?

3

Come descritto in this thread e in alcune delle risposte già fornite, due modi comuni per raggiungere questo obiettivo erano utilizzare S3 o NFS per condividere l'accesso ai dati tra le istanze.

Su April 9th 2015, Amazon ha annunciato Amazon Elastic File System (Amazon EFS), che fornisce una soluzione molto migliore del problema che si sta tentando di risolvere.

+0

AWS EFS è disponibile solo in modalità anteprima nella regione Oregon e non è presente alcuna parola ufficiale quando sarà fuori dalla modalità di anteprima e disponibile in tutte le regioni. –

Problemi correlati