对于这篇文章,这是一个后续问题,因为我试图让我的脑袋围绕所有这些云托pipe服务:
https://webmasters.stackexchange.com/questions/32273/scaling-a-cloud-based-ecommerce-site
我偶然发现了一个博客,这个:
Amazon Elastic Block Store(EBS)提供块级存储卷以用于Amazon EC2实例。 Amazon EBS卷是离开实例生命周期而独立存在的非实例存储。 Amazon Elastic Block Store提供高度可用且高度可靠的存储卷,可以将其附加到正在运行的Amazon EC2实例,并作为实例中的设备公开。 Amazon EBS特别适用于需要数据库,文件系统或访问原始块级存储的应用程序。
所以看起来好像应该把EC2和EBS连接起来。 现在剩下要做的就是让您的数据库软件(在EC2上)读取/写入EBS上的数据库数据文件。
AWS有这么多的产品,听起来很相似。 不确定Rackspace和其他云服务器是否有类似的东西。
如果EC2的多个实例可以读/写同一个EBS,我仍然很模糊。 或者,如果EC2的每个实例都有自己的EBS,并且还有一些其他机制(例如安装在EC2上的数据库软件)来保持所有EBS同步。
此外,电子商务平台将Spre / Rails与PostGreSQL / MySQL数据库…万一有人有进一步的见解…
谢谢!
一个EBS卷一次只能由一个EC2实例使用。 您可以从一个EC2实例中分离EBS卷并将其附加到另一个EC2实例,但无法同时将其附加到多个EC2实例,请参阅Amazon EC2常见问题了解更多信息。 例如,我所提到的是在这里回答: http : //aws.amazon.com/ec2/faqs/#Do_you_plan_to_support_multiple_instances_accessing_a_single_volume
如果您的数据库是MySQL,MS SQL或Oracle,那么最好使用RDS实例,而不是试图使用EC2和EBS推出自己的产品。 RDS的function类似于基于云的数据库服务器版本,极大地简化了configuration和维护可扩展的容错数据库。 底层的操作系统是完全pipe理你的,所以你不能SSH到它,但你可以连接到它与您的普通客户端工具来pipe理您的数据库。
EBS卷就像块设备。 大多数系统和软件不准备共享块级设备。 在“现实生活”中,相当于将一个硬盘连接到两台或更多台机器。 有没有看到? 自从我在IBM大型机上工作以来我一直没有。 甚至当我在机器之间共享数据的时候做编程,为了避免腐败,它也需要很多。 唯一安全的共享方式是以只读模式共享。 我们有一个带外的方式来谈判哪台机器有写权限。 即使如此,它需要一个谨慎的结构,以确保一个作家最终不会混淆任何读者。 虽然我可以说在某些情况下可能会成功地使用共享块设备,但这可能是非常严重的情况,我会避免这种情况。 鉴于最终用户对共享卷的麻烦,我可以看到为什么AWS不会花费精力使EBS以共享模式工作。
如果你需要共享数据库,只需要为它创build一个特殊的(可能是高I / O和/或10-gignetworking)实例,给它所需的卷,并让它为其他实例提供服务。 需要冗余? 在具有自己的卷的另一个区域或区域中设置另一个区域,并在networking上configuration复制。
如果你需要共享的纯文件,我想你必须去作为一个NFS或Samba文件服务器运行的实例。
如果你需要一个文件仓库,可以做同样的事情(一个实例有自己的卷,也可能在另一个区域有一个副本),并运行你最喜欢的修订版本存储软件(git,svn,hg,cvs等等)。