这是该帖子的后续问题,因为我正在尝试了解所有这些云托管服务:
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 同步。
此外,电子商务平台将是带有 PostGreSQL/MySQL 数据库的 Spree/Rails...如果有人有进一步的见解......
谢谢!
答案1
一个 EBS 卷一次只能被一个 EC2 实例使用。您可以将 EBS 卷从一个 EC2 实例分离并将其附加到另一个 EC2 实例,但不能同时将其附加到多个 EC2 实例,请参阅 Amazon EC2 常见问题解答了解更多信息。例如,我提到的问题在这里得到解答:http://aws.amazon.com/ec2/faqs/#Do_you_plan_to_support_multiple_instances_accessing_a_single_volume
答案2
如果你的数据库是 MySQL、MS SQL 或 Oracle,那么最好使用RDS 实例而不是尝试使用 EC2 和 EBS 自行开发。RDS 的功能类似于基于云的 DB 服务器版本,大大简化了可扩展、容错数据库的配置和维护。底层操作系统完全由您管理,因此您无法通过 SSH 进入它,但您可以使用常规客户端工具连接到它来管理您的数据库。
答案3
EBS 卷就像块设备。大多数系统和软件不准备共享块级设备。在“现实生活中”,这相当于一个硬盘连接到两台或更多台机器。见过吗?自从我在 IBM 大型机上工作以来,我就没见过。即使我在机器之间共享的数据上进行编程,也需要做很多工作才能避免损坏。唯一安全的共享方式是以只读模式共享。我们有一种带外方法来协商哪台机器有写访问权限。即使这样,也需要一个仔细的结构来确保一个写入器不会让任何读取器感到困惑。虽然我会说在某些情况下使用共享块设备是有可能成功的,这些情况可能是非常极端的情况,但我会避免这样做。考虑到最终用户在使用共享卷时会遇到的麻烦,我可以理解为什么 AWS 不会花费精力让 EBS 在共享模式下工作。
如果您需要共享数据库,只需为其构建一个特殊实例(可能是高 I/O 和/或 10 GB 网络),为其提供所需的卷,然后让它为您的其他实例提供服务。需要冗余?在不同的地区或区域设置另一个具有自己的卷的实例,并通过网络配置复制。
如果您需要共享纯文本文件,我想您必须使用作为 NFS 或 Samba 文件服务器运行的实例。
如果您需要文件存储库,请执行相同的操作(具有自己的卷的实例,也可能是另一个区域中的副本)并运行您最喜欢的修订存储软件(git,svn,hg,cvs等)。