Amazon web services Web服务器和数据库服务器分别托管在AmazonEC2的不同实例上
我计划运行一个web应用程序,预计流量约为100到200个用户 目前我已经在Amazon上建立了一个小实例。这个实例由所有组件组成——Web服务器(Apache)、数据库服务器(MySQL)和IMAP服务器(Dovcot)。我正在考虑将我的数据库服务器移出这个实例,并为它创建一个单独的实例。现在我的问题是——Amazon web services Web服务器和数据库服务器分别托管在AmazonEC2的不同实例上,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我计划运行一个web应用程序,预计流量约为100到200个用户 目前我已经在Amazon上建立了一个小实例。这个实例由所有组件组成——Web服务器(Apache)、数据库服务器(MySQL)和IMAP服务器(Dovcot)。我正在考虑将我的数据库服务器移出这个实例,并为它创建一个单独的实例。现在我的问题是—— 我的Web服务器和数据库服务器(都托管在Amazon上的不同实例上)之间的通信是否会出现延迟 如果是,克服这一问题的标准方法是什么?(或者我需要设置虚拟私有云吗?) 我的Web服务器和
- 我的Web服务器和数据库服务器(都托管在Amazon上的不同实例上)之间的通信是否会出现延迟
- 如果是,克服这一问题的标准方法是什么?(或者我需要设置虚拟私有云吗?)
我强烈建议您看看RDS,它是AWS版本的托管MySQL、Oracle或MS SQL Server数据库服务器。这将允许您轻松设置和管理数据库,包括跨可用性区域复制和自动备份。我还写了一篇与你的问题相当相关的文章。当然,在不同的机器之间进行通信时会有延迟。如果它们都在同一可用性区域中,则可用性将极低,通常是同一局域网上两台服务器的预期值 如果它们位于同一地区的不同可用性区域,预计延迟约为2-3ms(根据2012年AWS re:Invent会议上提供的信息)。这仍然很低 使用VPC不会影响延迟。这不会在实例之间提供不同的物理连接,只是虚拟隔离
最后,考虑使用Amazon的RDB(关系数据库服务)代替MySQL数据库的专用EC2实例。成本大致相同,Amazon负责管理。如果您希望您的体系结构能够扩展,您应该将web服务器与数据库服务器分开 您将支付的低延迟(即使在多个可用性区域之间约1-2ms)将为您提供更好的性能,因为您可以单独扩展每一层
- 您可以添加小型(甚至是微型)实例,以在后面处理更多的web请求,而无需复制也必须有数据库的实例
- 您可以为web服务器添加组,该组将根据使用负载自动扩展web服务器层
- 您可以扩展DB实例,以获得更多内存,从而获得更好的缓存命中率
- 您可以在web服务器和数据库之间添加
- 您可以将其用作托管数据库服务,这样就完全不需要数据库实例(您只需为RDS中数据库的实际使用付费)
简而言之,为了实现可扩展性和高可用性,您应该将层(web和DB)分开。您可能也会发现自己节省了成本。我也会赞同在数据库中使用RDS的想法。实际上,除非您有非常具体的MySQL需求(群集、多主复制等),并且您希望在AWS中建立数据库,所以您首先应该考虑RDS.RDS不提供超级权限。你不能编辑my.cnf,这很重要。