Beneficios de EBS vs. instancia-tienda (y viceversa) [cerrado]

381

No tengo claro qué beneficios obtengo de EBS frente a la tienda de instancias para mis instancias en Amazon EC2. En todo caso, parece que EBS es mucho más útil (detener, iniciar, persistir + mejor velocidad) con una diferencia de costo relativamente pequeña ... Además, ¿hay alguna métrica sobre si más personas están usando EBS ahora que está disponible, considerando que todavía es relativamente nuevo?

Holamundo
fuente
también "micro" solo está disponible si está utilizando instancias respaldadas por EBS.
Ali
1
¡Los volúmenes del Almacén de instancias son mucho más rápidos y no hacen un almacenamiento basado en la red!
Matt
Personalmente uso la tienda de instancias para descargar mi colección MongoDB y ponerla en S3 por dos razones. Primero está separado y no reducirá la velocidad de escritura en mi EBS RAID de 10 volúmenes. En segundo lugar, es mucho más rápido que EBS y, dado que viene con mi instancia, no tiene sentido crear volúmenes EBS adicionales para hacer el volcado y destruirlos después de ponerlos en S3. Espero que ayude y no sea constructivo mi a ..
Maziyar
2
Estoy a medio camino de la Guía del usuario de AWS (700 páginas). He leído detenidamente sobre EBS y el almacenamiento de instancias. Todavía no puedo entender por qué hay tales diferencias. Y aún más desconcertado por qué la tienda de instancias es equivalente a S3 pero se llama de manera diferente. La pregunta debe reabrirse para recibir más contribución a respuestas útiles.
Polimerasa

Respuestas:

293

La conclusión es que casi siempre debe usar instancias respaldadas por EBS.

Este es el por qué

  • Las instancias respaldadas por EBS se pueden configurar para que no se puedan (accidentalmente) terminar a través de la API.
  • Las instancias respaldadas por EBS se pueden detener cuando no las esté utilizando y reanudar cuando las necesite nuevamente (como pausar una PC virtual), al menos con mis patrones de uso ahorrando mucho más dinero del que gasto en unas pocas docenas de GB de almacenamiento de EBS.
  • Las instancias respaldadas por EBS no pierden su almacenamiento de instancias cuando se bloquean (no es un requisito para todos los usuarios, pero hace que la recuperación sea mucho más rápida)
  • Puede redimensionar dinámicamente el almacenamiento de instancias de EBS.
  • Puede transferir el almacenamiento de la instancia de EBS a una nueva instancia (útil si el hardware de Amazon en el que estaba ejecutando se vuelve escamoso o muere, lo que sucede de vez en cuando)
  • Es más rápido iniciar una instancia respaldada por EBS porque la imagen no tiene que ser obtenida desde S3.
  • Si el hardware de su instancia respaldada por EBS está programado para mantenimiento , la detención e inicio de la instancia migra automáticamente al nuevo hardware. También pude mover una instancia respaldada por EBS en hardware fallido al detener forzosamente la instancia y volver a iniciarla (su kilometraje puede variar en hardware fallido).

Soy un gran usuario de Amazon y cambié todas mis instancias a almacenamiento respaldado por EBS tan pronto como la tecnología salió de la versión beta. He estado muy contento con el resultado.

EBS aún puede fallar, no una bala de plata

Tenga en cuenta que cualquier pieza de infraestructura basada en la nube puede fallar en cualquier momento. Planifique su infraestructura en consecuencia. Si bien las instancias respaldadas por EBS proporcionan cierto nivel de durabilidad en comparación con las instancias de almacenamiento efímeras, pueden fallar y lo hacen. Tenga un AMI desde el que pueda lanzar nuevas instancias según sea necesario en cualquier zona de disponibilidad, hacer una copia de seguridad de sus datos importantes (por ejemplo, bases de datos) y, si su presupuesto lo permite, ejecutar múltiples instancias de servidores para el equilibrio de carga y la redundancia (idealmente en múltiples zonas de disponibilidad )

Cuando no a

En algunos momentos, puede ser más barato lograr un IO más rápido en instancias de Instance Store. Hubo un tiempo en que ciertamente era cierto. Ahora hay muchas opciones para el almacenamiento de EBS, atendiendo a muchas necesidades. Las opciones y sus precios evolucionan constantemente a medida que la tecnología cambia. Si tiene una cantidad significativa de instancias que son realmente desechables (no afectan mucho a su negocio si simplemente desaparecen), haga los cálculos de costo versus rendimiento. Las instancias respaldadas por EBS también pueden morir en cualquier momento, pero mi experiencia práctica es que EBS es más duradero.

Eric J.
fuente
44
Sí, lo anterior también fueron mis pensamientos ... Espero que de alguna manera aquí escriba sobre sus preferencias para la tienda de instancias como comparación ...
HelloWorldy
55
El EC2 respaldado por el almacenamiento de instancias también se puede configurar para que no finalice accidentalmente.
Jim Soho
44
En realidad, estoy cambiando la mayoría de mis instancias EC2 respaldadas por EBS para usar almacenes de instancias. Realmente depende de lo que quieras lograr. Estoy cambiando debido a un mejor IO y porque veo cada instancia de EC2 como desechable en todo momento, o: se descompondrá en cualquier momento y perderé todo lo que haya en esa instancia. La arquitectura de esa manera ayuda a obtener un sistema HA real. Ver también stu.mp/2011/04/the-cloud-is-not-a-silver-bullet.html
Jim Soho
2
@ Jim: Al menos cuando escribí la respuesta hace un año, obtuviste una E / S mucho mejor al incluir varias instancias de EBS en una configuración RAID de software que al usar el almacenamiento de instancias. También es mucho más rápido iniciar una instancia de reemplazo desde el respaldo de EBS que desde el respaldo de S3 (el almacenamiento de la instancia se carga desde S3, que puede ser lento). No he hecho mucho en AWS en los últimos 6 meses más o menos; Las cosas pueden haber cambiado.
Eric J.
2
Parece un poco desigual: aunque es posible ejecutar instancias respaldadas por EBS y mantener un fuerte énfasis en la reciclabilidad, creo que tener a los recién llegados mirando esta publicación y luego crear instancias respaldadas por EBS es peligroso porque probablemente no mantendrán eso El mismo énfasis en la reciclabilidad, que es quizás el componente más crucial de cualquier infraestructura en la nube. Y la buena mayoría de las personas que miran esto seguramente serán nuevas en esto
Peter Berg el
69

El 99% de nuestra configuración de AWS es reciclable. Entonces, para mí, realmente no importa si termino una instancia, nunca se pierde nada. Por ejemplo, mi aplicación se implementa automáticamente en una instancia de SVN, nuestros registros se escriben en un servidor central de syslog.

El único beneficio del almacenamiento de instancias que veo son los ahorros de costos. De lo contrario, las instancias respaldadas por EBS ganan. Eric mencionó todas las ventajas.


[16/07/2012] Hoy formularía esta respuesta de manera muy diferente.

No he tenido ninguna buena experiencia con instancias respaldadas por EBS en el último año más o menos. Los últimos tiempos de inactividad en AWS también destruyeron EBS.

Supongo que un servicio como RDS también usa algún tipo de EBS y eso parece funcionar en su mayor parte. En los casos en que nos las arreglamos, nos hemos librado de EBS siempre que sea posible.

Deshacerse de una extensión donde movimos un clúster de base de datos nuevamente a hierro (= hardware real). La única pieza restante en nuestra infraestructura es un servidor de base de datos donde dividimos múltiples volúmenes EBS en un RAID de software y copia de seguridad dos veces al día. Cualquier cosa que se pierda entre las copias de seguridad, podemos vivir con ella.

EBS es una tecnología algo inestable ya que es esencialmente un volumen de red: un volumen conectado a su servidor desde un control remoto. No estoy negando el trabajo realizado con él: es un producto increíble ya que el almacenamiento persistente esencialmente ilimitado está a solo una llamada de API. Pero no es adecuado para escenarios donde el rendimiento de E / S es clave.

Y además de cómo se comporta el almacenamiento en red, toda la red se comparte en instancias EC2. Cuanto más pequeña sea una instancia (por ejemplo, t1.micro, m1.small), peor será porque las interfaces de red en el sistema host real se comparten entre varias máquinas virtuales (= su instancia EC2) que se ejecutan encima de ella.

Cuanto mayor sea la instancia, mejor , por supuesto. Mejor aquí significa dentro de lo razonable .

Cuando se requiere persistencia, siempre recomendaría a las personas que usen algo como S3 para centralizar entre instancias. S3 es un servicio muy estable. Luego, automatice la configuración de su instancia hasta el punto en que pueda iniciar un nuevo servidor y se prepare solo. Entonces no hay necesidad de tener almacenamiento de red que dure más que la instancia.

Así que, en general, no veo ningún beneficio para las instancias respaldadas por EBS. Prefiero agregar un minuto a bootstrap, luego correr con un SPOF potencial.

Hasta
fuente
1
¿Existe alguna mejora significativa del rendimiento de IO con los volúmenes de tipo EBS IOPS en comparación con el estándar? Supongamos que lo anterior también es válido para los volúmenes EBS IOPS.
honzajde
44
Ambas tecnologías evolucionan. Estoy redactando este comentario en 2014, cuando tengo EBS "Provisioned IOPS", pero - ¡la "tienda de instancias" ahora es SSD, que es incluso más rápido que antes! El almacenamiento efímero siempre ganará en términos de velocidad. Así que uso ambos: guardo las cosas "persistentes" en EBS, teniendo todos los archivos temporales, registros, la base de datos "TempDB", el archivo de intercambio y otras cosas en Instance-store. ¡BENEFICIO DE AMBOS!
Alex
¿Qué sucede si necesita una base de datos distribuida que necesita almacenar sus datos de manera distribuida y persistente? ¿No necesitarías EBS porque el almacenamiento de instancias no es persistente?
CMCDragonkai
@CMCDragonkai Por supuesto que sí. En la actualidad, hay muchas opciones, por ejemplo, AWS comenzó a ofrecer almacenamiento basado en SSD. Los examinaría y volvería a hacer el análisis (solo vs. RAID, etc.). También buscaría obtener las instancias más grandes posibles debido al rendimiento de la red. EBS sigue siendo un problema en instancias como t1.micro.
Hasta el
La parte de esta respuesta sobre el rendimiento de la red es bastante obsoleta: desde hace bastante tiempo, ha existido una variedad de instancias que pueden ser "optimizadas para EBS" a un pequeño costo adicional, y algunas que son tales de forma predeterminada (sin recargo) ), que tienen interfaces de red dedicadas a EBS, cf. docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html
Josip Rodin
41

Nos gusta la tienda de instancias. Nos obliga a hacer que nuestras instancias sean completamente reciclables, y podemos automatizar fácilmente el proceso de construcción de un servidor desde cero en una AMI determinada. Esto también significa que podemos intercambiar fácilmente AMI. Además, EBS todavía tiene problemas de rendimiento de vez en cuando.

sehugg
fuente
66
Netflix también hace las mismas recomendaciones.
Kingz
2
Entonces, ¿dónde almacena sus archivos persistentes basados ​​en bloques?
CMCDragonkai
17

Eric prácticamente lo clavó. Nosotros ( Bitnami ) somos un proveedor popular de AMI gratuitas para aplicaciones populares y marcos de desarrollo (PHP, Joomla, Drupal, se entiende). Puedo decirle que las AMI respaldadas por EBS son significativamente más populares que las respaldadas por S3. En general, creo que las instancias respaldadas por s3 se usan para trabajos distribuidos y de tiempo limitado (por ejemplo, procesamiento de datos a gran escala) en los que si una máquina falla, otra simplemente gira. Los AMIS respaldados por EBS tienden a usarse para tareas de servidor 'tradicionales', como servidores web o de base de datos que mantienen el estado localmente y, por lo tanto, requieren que los datos estén disponibles en caso de bloqueo.

Un aspecto que no vi mencionado es el hecho de que puede tomar instantáneas de una instancia respaldada por EBS mientras se ejecuta, lo que le permite tener copias de seguridad muy rentables de su infraestructura (las instantáneas están basadas en bloques y son incrementales)

Daniel Lopez
fuente
S3 tiene redundancia incorporada . EBS no tiene ninguno , por lo que deberá implementar software de redundancia encima.
Pacerier
2
@Pacerier Eso es incorrecto, según la documentación oficial en docs.aws.amazon.com/AWSEC2/latest/UserGuide/raid-config.html
Josip Rodin
16

He tenido exactamente la misma experiencia que Eric en mi última posición. Ahora en mi nuevo trabajo, estoy pasando por el mismo proceso que realicé en mi último trabajo ... reconstruyendo todas sus AMI para instancias respaldadas por EBS, y posiblemente como máquinas de 32 bits (más barato), pero no puedo usar la misma AMI en 32 y 64 máquinas).

Las instancias respaldadas por EBS se inician lo suficientemente rápido como para que pueda comenzar a utilizar la API de Amazon AutoScaling, que le permite usar las métricas de CloudWatch para activar el lanzamiento de instancias adicionales y registrarlas en el ELB (Elastic Load Balancer), y también cerrarlas cuando ya no es requerido.

Este tipo de escalado automático dinámico es de lo que se trata AWS, donde los ahorros reales en infraestructura de TI pueden entrar en juego. Es prácticamente imposible realizar el autoescalado correctamente con las antiguas instancias respaldadas por s3 "InstanceStore".

j2d3
fuente
13

Estoy empezando a usar EC2 yo mismo, así que no soy un experto, pero la propia documentación de Amazon dice:

Recomendamos que use el almacén de instancias local para datos temporales y, para los datos que requieren un mayor nivel de durabilidad , recomendamos usar volúmenes de Amazon EBS o hacer una copia de seguridad de los datos en Amazon S3.

El énfasis es mío.

Hago más análisis de datos que el alojamiento web, por lo que la persistencia no me importa tanto como a un sitio web. Dada la distinción hecha por Amazon, no asumiría que EBS es adecuado para todos.

Trataré de recordar pesar nuevamente después de haber usado ambos.

isomorfismos
fuente
9

EBS es como el disco virtual de una VM:

  • Durable, las instancias respaldadas por EBS se pueden iniciar y detener libremente (ahorrando dinero)
  • Se puede tomar instantáneas en cualquier momento para obtener copias de seguridad en un momento determinado
  • Las AMI se pueden crear a partir de instantáneas de EBS, por lo que el volumen de EBS se convierte en una plantilla para nuevos sistemas

El almacenamiento de instancias es:

  • Local, generalmente más rápido
  • Sin conexión en red, en casos normales, EBS I / O tiene el costo del ancho de banda de la red (a excepción de las instancias optimizadas para EBS, que tienen ancho de banda EBS separado)
  • Tiene E / S limitadas por segundo IOPS. Incluso la E / S aprovisionada alcanza un máximo de unos pocos miles de IOPS
  • Frágil. Tan pronto como se detiene la instancia, pierde todo en el almacenamiento de la instancia.

Aquí es donde usar cada uno:

  • Utilice EBS para la partición del sistema operativo de respaldo y el almacenamiento permanente (datos de la base de datos, registros críticos, configuración de la aplicación)
  • Utilice el almacenamiento de instancias para datos en proceso, registros no críticos y estado de aplicación transitoria. Ejemplo: almacenamiento externo, archivos temporales, etc.
  • El almacenamiento de instancias también se puede usar para datos críticos de rendimiento, cuando hay replicación entre instancias (bases de datos NoSQL, sistemas de colas / mensajes distribuidos y bases de datos con replicación)
  • Utilice S3 para los datos compartidos entre sistemas: conjunto de datos de entrada y resultados procesados, o para datos estáticos utilizados por cada sistema cuando se inicia.
  • Use AMI para servidores precocinados y de lanzamiento
BobMcGee
fuente
4

La mayoría de las personas optan por usar la instancia respaldada por EBS, ya que tiene estado. Es más seguro porque todo lo que tiene instalado e instalado en él sobrevivirá a la parada / parada o cualquier falla de la instancia.

El almacén de instancias no tiene estado, lo pierde con todos los datos en el interior en caso de una situación de falla de instancia. Sin embargo, es gratis y más rápido porque el volumen de la instancia está vinculado al servidor físico donde se ejecuta la VM.

mezi
fuente
2

Para alguien nuevo en todo esto y si accidentalmente aterrizó aquí

A partir de ahora, todas las AMI en la sección de inicio rápido están respaldadas por EBS

ingrese la descripción de la imagen aquí

También hay una buena explicación en el documento oficial de la diferencia entre EBS y la tienda de instancias

y esta imagen lo resume bastante ingrese la descripción de la imagen aquí

Aishwat Singh
fuente
0

Si ejecuta varias instancias y asigna un servicio programado de AWS Instance como una de sus prioridades para evitar cargos inesperados , recomendaría no utilizar el almacén de instancias .

Como se explica en la documentación de EBS Volumes y la respuesta de j2d3 y Siddharth Sharma, la tienda de instancias puede ejecutarse todo el tiempo que desee, pero no se puede detener . Significa que el servicio no puede ser programado por un inicio automático / parada o recuperación de instancia .

Además, para este tipo de esquema tampoco es beneficioso utilizar EBS Backed en Elastic Beanstalk, ya que está diseñado para garantizar que todos los recursos que necesita se sigan ejecutando . Siempre hará un relanzamiento automático de cualquier servicio que detenga. ingrese la descripción de la imagen aquí Revisando todo lo demás , del total de cargos por usar el VPC , EBS y ELB que se agregaron a EC2-Classic , el EC2-VPC con ELB es principalmente la mejor opción donde, a diferencia del EC2-Classic , una instancia detenida retiene su Elastic asociado Direcciones IPy el volumen EBS se almacena automáticamente.

Como conclusión , tomando la parte principal de su pregunta:

parece que EBS es mucho más útil (detener, iniciar, persistir + mejor velocidad) con relativamente poca diferencia en el costo ...?

La respuesta es sí, pero si su instancia está basada en EBS, se puede detener. Permanecerá en su cuenta, no se le cobrará por ello . Se le cobrará solo el volumen, pero EBS se cobrará por hora . También puede considerar que, entre todos los tipos disponibles , tiene flexibilidad para cambiar el tamaño del volumen de EBS .

Además de los beneficios que ya enumeró Eric , también debe tener en cuenta que, en términos de costo, S3 puede o no ser más barato que EBS . Estoy de acuerdo en que la diferencia de costo es relativamente pequeña si sigue ejecutando ambos tipos de instancia dentro de la misma plataforma y arquitectura de la aplicación todo el tiempo.

Sin embargo, si hay un escenario para ejecutar la aplicación en un servicio de menor costo, tirar de todas las tareas no controlada y que el papel de la VPC / EBS a través de una tubería o lambda en un ejemplo corto de tiempo <1 hora al día, lo que imposible hacer cuando use una tienda de instancias , entonces será una historia diferente.

Chetabahana
fuente