我不清楚我在Amazon EC2上为我的实例从EBS和实例存储中获得了什么好处。如果有的话,似乎EBS在成本相对较小的差异方面更有用(停止,开始,持续+更好的速度)......?此外,是否有更多人正在使用EBS,因为它仍然相对较新?
最重要的是,你应该几乎总是使用EBS支持的实例。
这就是原因
我是亚马逊的重度用户,一旦技术出现测试版,就将我的所有实例转换为EBS支持的存储。我对结果非常满意。
EBS仍然可能失败 - 而不是银弹
请记住,任何基于云的基础架构都可能随时出现故障。相应地规划基础架构。虽然与临时存储实例相比,EBS支持的实例提供了一定程度的持久性,但它们可能会失败。有一个AMI,您可以根据需要在任何可用区域中启动新实例,备份您的重要数据(例如数据库),如果您的预算允许,运行多个服务器实例以实现负载平衡和冗余(理想情况下在多个可用区域中) )。
什么时候不
在某些时间点,在实例存储实例上实现更快的IO可能更便宜。曾经有一段时间它确实是真的。现在有许多EBS存储选项,可满足许多需求。随着技术的变化,选项及其定价也在不断变化。如果您有大量实际可以丢弃的实例(如果它们刚刚消失,它们对您的业务影响不大),请对成本与性能进行比较。 EBS支持的实例也可能在任何时间点死亡,但我的实际经验是EBS更耐用。
如果您运行多个实例并将AWS实例的预定服务指定为Avoiding Unexpected Charges的优先级之一,我建议不要使用实例存储。
正如EBS Volumes的文档和j2d3和Siddharth Sharma的答案所解释的那样,实例存储可以运行所需的时间,但它无法停止。意味着服务无法由Automatic Start/Stop或Instance Recovery安排。
此外,对于这种方案,在EBS Backed上使用Elastic Beanstalk也没有任何好处,因为它旨在确保您需要的所有资源都是keep running。它将始终自动重新启动您停止的任何服务。 回顾all the rest,使用加入VPC的EBS,ELB和EC2-Classic的总费用,与EC2-VPC的ELB大多是最好的选择,与EC2-Classic不同,停止的实例retains其相关的Elastic IP addresses和EBS卷是stored自动。
作为结论,采取问题的主要部分:
似乎EBS在成本相对较小的差异方面更有用(停止,开始,持续+更好的速度)......?
答案是肯定的,但如果您的实例是基于EBS的,则可以停止。它将保留在您的帐户中,you will not be charged for it。您将只收取音量,但EBS is charged hourly。你也可以考虑在所有available types中你有灵活性Resize the EBS Volume。
除了Eric已经列出的好处之外,它还应该知道在成本方面S3 may or may not be cheaper than EBS。我同意,如果你一直在应用程序的同一平台和架构中运行both types of instance,它的成本差异相对较小。
但是,如果有一种方案可以在较低成本的服务上运行应用程序,pull all unhandled task和role them会在短时间内通过VPC/EBS或pipeline说lambda每天<1小时,这在使用实例存储时是不可能的,那将是一个不同的故事。
99%的AWS设置都是可回收的。所以对我而言,如果我终止一个实例并不重要 - 永远不会丢失任何东西。例如。我的应用程序自动部署在SVN的实例上,我们的日志被写入中央系统日志服务器。
我看到的实例存储的唯一好处是节省成本。否则EBS支持的实例获胜。埃里克提到了所有的优点。
[2012-07-16]今天我会说这个答案有很多不同。
在过去一年左右的时间里,我对EBS支持的实例没有任何良好的经验。 AWS的最后停机时间也是EBS失败的原因。
我猜测像RDS这样的服务也使用某种EBS,这似乎在很大程度上起作用。在我们自己管理的实例中,我们尽可能地摆脱了EBS。
摆脱我们将数据库集群移回铁(=真实硬件)的延伸。我们基础架构中唯一剩下的部分是数据库服务器,我们将多个EBS卷分成软件RAID并每天备份两次。无论在备份之间丢失什么,我们都可以忍受。
EBS是一种有点过时的技术,因为它本质上是一个网络卷:从远程连接到服务器的卷。我并没有否定用它完成的工作 - 它是一个了不起的产品,因为基本上无限的持久存储只是一个API调用。但它很难适用于I / O性能至关重要的场景。
除了网络存储的行为方式外,所有网络都在EC2实例上共享。较小的实例(例如t1.micro,m1.small)越差,因为实际主机系统上的网络接口在运行在其上的多个VM(=您的EC2实例)之间共享。
你得到的实例越大,当然越好。这里更好意味着理性。
当需要持久性时,我总是建议人们使用类似S3的东西来集中实例。 S3是一项非常稳定的服务。然后将您的实例设置自动化到可以启动新服务器的位置,并自行准备。然后,不需要具有比实例更长寿命的网络存储。
总而言之,我认为EBS支持的实例没有任何好处。我宁愿添加一分钟到bootstrap,然后运行潜在的SPOF。
我们喜欢实例店。它迫使我们使我们的实例完全可循环使用,并且我们可以轻松地自动化在给定AMI上从头开始构建服务器的过程。这也意味着我们可以轻松换掉AMI。此外,EBS仍然不时出现性能问题。
埃里克几乎把它钉了起来。我们(Bitnami)是流行的应用程序和开发框架的免费AMI的流行提供商(PHP,Joomla,Drupal,你明白了)。我可以告诉你,EBS支持的AMI比S3支持的更受欢迎。一般来说,我认为s3支持的实例用于分布式,限时工作(例如,大规模数据处理),如果一台机器发生故障,另一台机器就会被简化。 EBS支持的AMIS倾向于用于“传统”服务器任务,例如在本地保持状态的Web或数据库服务器,因此在崩溃的情况下需要数据可用。
我没有看到提到的一个方面是,您可以在运行时拍摄EBS支持的实例的快照,从而有效地允许您对基础架构进行非常经济高效的备份(快照是基于块的和增量的)
我在上一个职位上和Eric有过完全相同的经历。现在,在我的新工作中,我将完成我在上一份工作中执行的相同流程...为EBS支持的实例重建所有AMI - 可能还有32位机器(更便宜 - 但不能在32和32上使用相同的AMI) 64台机器)。
EBS支持的实例启动得足够快,您可以开始使用Amazon AutoScaling API,它允许您使用CloudWatch指标触发其他实例的启动并将它们注册到ELB(Elastic Load Balancer),并在不再使用时关闭它们需要。
这种动态自动扩展就像AWS一样 - IT基础架构的真正节省可以发挥作用。使用旧的s3“InstanceStore”支持的实例进行自动缩放几乎是不可能的。
我刚开始使用EC2,所以不是专家,但Amazon's own documentation说:
我们建议您将本地实例存储用于临时数据,对于需要更高级别持久性的数据,我们建议使用Amazon EBS卷或将数据备份到Amazon S3。
强调我的。
我做的更多data analysis而不是网络托管,所以持久性对我来说并不像对网站那么重要。鉴于亚马逊本身的区别,我不认为EBS适合所有人。
我会尝试记住在使用两者之后再次称重。
EBS就像VM的虚拟磁盘:
实例存储是:
大多数人选择使用EBS支持的实例,因为它是有状态的。它更安全,因为您在其中运行和安装的所有内容都将在停止/停止或任何实例故障后继续存在。
实例存储是无状态的,如果出现任何实例故障情况,您可以使用内部的所有数据将其丢失。但是,它是免费且更快的,因为实例卷与运行VM的物理服务器相关联。