对于Amazon EC2上的实例,我不清楚从EBS和实例商店获得了哪些好处。如果有什么区别的话,似乎EBS更有用(停止,启动,坚持+更好的速度),成本差异相对较小…?另外,考虑到EBS仍然相对较新,是否有任何指标可以衡量现在使用EBS的人更多?
当前回答
99%的AWS设置是可回收的。所以对我来说,如果我终止一个实例并不重要——什么都不会丢失。例如,我的应用程序自动部署在SVN的实例上,我们的日志被写入中央syslog服务器。
我认为实例存储的唯一好处是节省成本。否则,ebs支持的实例胜出。埃里克提到了所有的好处。
今天,我会用不同的措辞来回答这个问题。
在过去一年左右的时间里,我在使用ebs支持的实例方面没有什么好的经验。AWS的最后一次停机也几乎破坏了EBS。
我猜像RDS这样的服务也使用某种EBS,这似乎在大多数情况下都是可行的。在我们自己管理的情况下,我们已经尽可能地摆脱了EBS。
摆脱一个扩展,我们移动了一个数据库集群回铁(=真实硬件)。我们的基础设施中仅剩下一个DB服务器,我们将多个EBS卷分条到一个软件RAID中,并每天进行两次备份。不管在备份之间会损失多少,我们都可以接受。
EBS是一种有点不可靠的技术,因为它本质上是一个网络卷:从远程连接到服务器的卷。我并不是在否定使用它所做的工作——这是一个了不起的产品,因为从本质上讲,无限持久存储只是一个API调用。但是它几乎不适合I/O性能是关键的场景。
除了网络存储的行为方式外,所有网络都在EC2实例上共享。实例越小(例如t1。micro, m1.small)会变得更糟糕,因为您在实际主机系统上的网络接口是由运行在其上的多个虚拟机(=您的EC2实例)共享的。
当然,实例越大,效果就越好。这里更好的意思是在合理范围内。
当需要持久性时,我总是建议人们使用S3之类的东西来集中实例。S3是一个非常稳定的服务。然后将实例设置自动化到可以引导新服务器并自行准备就绪的程度。这样就没有必要使用比实例存活时间更长的网络存储。
因此,总而言之,我认为ebs支持的实例没有任何好处。我宁愿增加一分钟的引导,然后运行一个潜在的SPOF。
其他回答
我们喜欢实例存储。它迫使我们使实例完全可回收,并且我们可以轻松地在给定AMI上从头构建服务器的过程自动化。这也意味着我们可以很容易地交换ami。此外,EBS仍然时不时地存在性能问题。
大多数人选择使用EBS支持的实例,因为它是有状态的。这是更安全的,因为您在其中运行和安装的所有内容都将在停止/停止或任何实例故障中幸存下来。
实例存储是无状态的,在任何实例失败的情况下,您将丢失其中的所有数据。但是,由于实例卷绑定到虚拟机运行的物理服务器上,因此它是免费的,而且速度更快。
底线是您应该几乎总是使用EBS支持的实例。
这是为什么
EBS backed instances can be set so that they cannot be (accidentally) terminated through the API. EBS backed instances can be stopped when you're not using them and resumed when you need them again (like pausing a Virtual PC), at least with my usage patterns saving much more money than I spend on a few dozen GB of EBS storage. EBS backed instances don't lose their instance storage when they crash (not a requirement for all users, but makes recovery much faster) You can dynamically resize EBS instance storage. You can transfer the EBS instance storage to a brand new instance (useful if the hardware at Amazon you were running on gets flaky or dies, which does happen from time to time) It is faster to launch an EBS backed instance because the image does not have to be fetched from S3. If the hardware your EBS-backed instance is scheduled for maintenance, stopping and starting the instance automatically migrates to new hardware. I was also able to move an EBS-backed instance on failed hardware by force-stopping the instance and launching it again (your mileage may vary on failed hardware).
我是Amazon的忠实用户,在技术beta版一出来,我就把所有实例都切换到EBS支持的存储。我对结果非常满意。
EBS仍然可能失败——这不是一颗银弹
Keep in mind that any piece of cloud-based infrastructure can fail at any time. Plan your infrastructure accordingly. While EBS-backed instances provide certain level of durability compared to ephemeral storage instances, they can and do fail. Have an AMI from which you can launch new instances as needed in any availability zone, back up your important data (e.g. databases), and if your budget allows it, run multiple instances of servers for load balancing and redundancy (ideally in multiple availability zones).
什么时候不做
At some points in time, it may be cheaper to achieve faster IO on Instance Store instances. There was a time when it was certainly true. Now there are many options for EBS storage, catering to many needs. The options and their pricing evolve constantly as technology changes. If you have a significant amount of instances that are truly disposable (they don't affect your business much if they just go away), do the math on cost vs. performance. EBS-backed instances can also die at any point in time, but my practical experience is that EBS is more durable.
EBS就像虚拟机的虚拟磁盘:
持久,由EBS支持的实例可以自由启动和停止(节省资金) 可以在任何时间点进行快照,以获得时间点备份吗 可以从EBS快照创建ami,因此EBS卷成为新系统的模板
实例存储为:
本地的,所以通常比较快 非联网,在正常情况下,EBS I/O是以网络带宽为代价的(EBS优化实例除外,它们具有独立的EBS带宽) 每秒I/O IOPS有限。即使配置的I/O最大IOPS也只有几千 脆弱的。一旦实例停止,就会丢失实例存储中的所有内容。
以下是使用它们的地方:
Use EBS for the backing OS partition and permanent storage (DB data, critical logs, application config) Use instance storage for in-process data, noncritical logs, and transient application state. Example: external sort storage, tempfiles, etc. Instance storage can also be used for performance-critical data, when there's replication between instances (NoSQL DBs, distributed queue/message systems, and DBs with replication) Use S3 for data shared between systems: input dataset and processed results, or for static data used by each system when lauched. Use AMIs for prebaked, launchable servers
如果您运行多个实例,并将AWS实例的预定服务分配为避免意外收费的优先级之一,我建议不要使用实例存储。
正如EBS文档中解释的那样 卷 j2d3和Siddharth Sharma的答案 实例存储可以运行多长时间就可以运行多长时间,但它不能 停止了。表示服务不能由自动调度程序调度 启动/停止或实例 复苏。
Moreover, for this kind of scheme there is also no benefit to use EBS Backed on Elastic Beanstalk as it is designed to ensure that all the resources you need are keep running. It will always do an automatically relaunches any services that you stop. Reviewing all the rest, out of the total charges on using the VPC, EBS and ELB that added to EC2-Classic, the EC2-VPC with ELB is mostly the best choice where unlike on EC2-Classic, a stopped instance retains its associated Elastic IP addresses and the EBS volume is stored automatically.
作为结论,以你问题的主要部分为例:
似乎EBS更有用(停止,启动,坚持+更好 速度)成本差异相对较小…?
答案是肯定的,但如果您的实例是基于ebs的,则可以停止它。这笔钱会留在您的账户上,不收取任何费用。您将只收取容量,但EBS是按小时收费的。您还可以考虑,在所有可用类型中,您可以灵活地调整EBS卷的大小。
除了Eric已经列出的好处之外,还应该意识到,就成本而言,S3可能比EBS便宜,也可能不便宜。我同意,如果你一直在同一个平台和应用程序的架构中运行这两种类型的实例,成本上的差异相对较小。
然而,如果在一个低成本的服务上运行应用程序,在短时间内(比如每天1小时以内)通过管道或lambda将所有未处理的任务和角色拉到VPC/EBS中,这在使用实例存储时是不可能做到的,那么情况就不同了。
推荐文章
- 警告:未受保护的私钥文件!当尝试SSH到Amazon EC2实例时
- 使用boto3连接CloudFront时,如何选择AWS配置文件
- 在亚马逊云服务器上设置FTP
- 使用scp将文件复制到Amazon EC2实例?
- 无法将图像推送到Amazon ECR -由于“没有基本的身份验证凭据”而失败
- 如何测试AWS命令行工具的凭据
- 将Keypair添加到现有的EC2实例中
- AWS S3:您试图访问的桶必须使用指定的端点寻址
- 你会因为EC2上的“停止”实例而被收费吗?
- 下载一个已经上传的Lambda函数
- S3 - Access-Control-Allow-Origin头
- 何时使用Amazon Cloudfront或S3
- 如何处理错误与boto3?
- 什么数据存储在亚马逊EC2实例的临时存储?
- boto3 client NoRegionError:只能在某些时候指定区域错误