【问题标题】:Amazon AWS: Multiple Instances, Same DBAmazon AWS:多个实例,同一个数据库
【发布时间】:2012-10-16 13:59:40
【问题描述】:
在 Amazon AWS 设置中,两个克隆实例(位于不同区域)如何引用和共享相同的“基本”动态 Web 服务器文件并从同一个主数据库读取/写入?
我们当前的 AMI 实例现在位于 EBS 支持的卷上。但是,显然尝试在两个实例之间共享 EBS 卷是一个坏主意。我从 this older 2009 answer 收集了这么多信息,但它并没有分解除 Amazon S3 之外的其他替代方案。还是 S3 是唯一的选择? OP 的推理在 3 年后仍然有效吗?我们有哪些存储选项可让多个实例实时共享数据库数据?
如果您想要共享数据,您可以设置一个所有实例都可以访问的服务器。如果您希望为所有实例提供一个简单的存储区域,您可以使用 Amazon 的 S3 存储服务来存储分布式和可扩展的数据。
迁移到云端,您可以拥有完全相同的设置,但您可以将文件服务器替换为 S3,或者让您的所有实例都连接到您的文件服务器。
【问题讨论】:
标签:
database
amazon-s3
amazon-web-services
webserver
amazon-ebs
【解决方案1】:
第 1 点)GlusterFS 是多可用区和多区域复制的不错选择。在跨区域复制过程中会有一定的复制延迟,请在您的架构中注意这一点
第 2 点)如果您的 EBS 快照大小较小并且您可以适应几个小时的复制延迟,您可以使用 Amazon EBS 快照复制功能。但这需要在目标区域上努力分离/附加卷。
第 3 点)S3 仍然是此用例的一个选项
【解决方案2】:
确认:您希望在两个实例之间共享 a) 相同的数据库和 b) 相同的文件,每个实例位于不同的区域(不是不同的可用区)?
跨多个区域共享同一个数据库并不容易。您最好的选择是异步、多主复制或手动分片策略。但是,要安全有效地执行这些操作,必须仔细规划,并且在编写应用程序时必须牢记这种架构。 This article 将为您提供与 MySQL 的多主复制相关的注意事项的一个很好的概述。
跨区域共享文件也可能有点挑战,因为您有很多选择,但通常比使用 SQL 数据库更容易。变量包括:
- 可以接受多少复制延迟?
- 你要写信到这两个地方吗?
- 您在本地需要什么样的 I/O 性能?
- 文件多久更改一次?
GlusterFS 对于大多数用例来说通常是一个很好的折衷方案。然而,就在昨天,AWS 宣布了一项新功能 allows inter-region copies of EBS snapshots。根据您的需要,这也可能值得研究。
【解决方案3】:
如果您有一个 EBS 支持的 AMI,那么每个服务器实例都将拥有自己的 EBS 卷数据“副本”,这些数据存储在 AMI 中,它们不会共享完全相同的物理卷。这与您使用实例存储 AMI 然后将特定 EBS 卷安装到每个实例不同。