题 AWS:使用单个RDS实例的多区域设置


我正在尝试在多区域方案中扩展我们的Web应用程序(PHP,MySQL,memcache)。目前,我们正在使用具有ELB和RDS实例背后的两个EC2实例的设置,所有这些实例都在US-EAST(弗吉尼亚州)地区。

我们也希望在欧盟(爱尔兰)地区开展业务。这意味着至少有一个新的EC2实例(与其他实例相同,为同一个应用程序提供服务)。

我已经复制了所需的AMI,设置了新实例,设置了相同的ELB配置(SSL终止所需),并在Route53中配置了基于延迟的路由。它按照建议工作。

但是,来自欧盟的客户有速度问题。这是因为EU EC2实例连接到基于美国的RDS实例。据我所知,亚马逊尚未启用RDS多区域复制。

在使用单个RDS实例时,您对如何正确加速整个设置有任何建议吗?

此外,关于如何扩大规模的一般想法?理想情况下,我们希望出于各种原因继续使用RDS技术。不过,我愿意接受建议(我想下一个想法就是托管我们自己的MySQL服务器)。


11
2018-05-28 10:20






答案:


您应该仔细考虑为什么需要在美国和欧盟使用相同的数据。毕竟这些都是不同的用户。

在多区域环境中运行要复杂得多,并且由于美国和欧盟之间的固有延迟,通常会回报性能。

即使您离开RDS并尝试在区域之间复制数据,无论是异步还是同步,您都会遇到延迟问题,这会给您的用户带来糟糕的性能。

最简单的方法是在EU中设置专用RDS服务器,并在这些实例之间不共享任何内容。


5
2018-05-28 18:44



Hello Guy,这里的问题是欧盟和美国客户需要访问相同的数据。有没有解决方法/想法? - Ion
这些数据的更新频率(如果不经常,您可以轻松地在区域之间复制)? - Guy
数据通常会更新。随着应用程序在用户中的增长,它们将开始更频繁地更新。我想我们必须寻找其他一些解决方案。 - Ion


由于低延迟,RDS非常适合单区域部署,但当您开始扩展到不同区域时,RDS会变得不同。如果要保留RDS实例,可以在EU区域中设置自己的MySQL服务器并进行复制。这样,速度将更加可以接受。


4
2018-05-28 11:02



是否有任何(半)自动方式在间隔中复制RDS实例?有任何想法吗?我想这个副本也是只读的,对吧? - Ion
AWS默认支持只读副本,这是正确的: aws.amazon.com/rds/faqs/#86  - 我确信可以进行读/写复制,但这超出了SF的范围(我会查看我们的DBA网站)。 - Nathan C
是的,但是在同一区域中创建了只读副本。我们需要一个不同区域的只读副本,上次我检查它们不支持这个。 - Ion


最近,AWS通过宣布向我在我的问题中提出的方向迈进了一步 跨区域RDS读取副本。然而,这只是迈向真正的多区域设置的一小步。


2
2017-12-16 17:20





我相信这就是你想要的。 RDS复制到EC2在不同区域运行mysql。

https://aws.amazon.com/about-aws/whats-new/2013/09/05/amazon-rds-new-data-migration-capabilities-mysql/


1
2017-10-19 15:46



欢迎来到服务器故障!虽然理论上这可以回答这个问题, 这会更好 在这里包括答案的基本部分,并提供参考链接。 - slm
谢谢,看起来很有趣!这是一个更相关的链接: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/... - Ion


一种可能的改善延迟的解决方案可能是使用Amazon ElastiCache(基本上是Memcached)。

您必须在每个区域(US-EST和EU)中创建ElastiCache节点,并让应用程序逻辑(EC2)尽可能使用缓存节点。如果你走这条路线,你将不得不重新构建你的应用程序1)知道要缓存什么,何时和2)尽可能多地从本地ElastiCache节点中获取。


0
2017-08-23 05:17