AWS:使用单个RDS实例进行多区域设置


11

我正在尝试以多区域方案扩展我们的Web应用程序(PHP,MySQL,内存缓存)。当前,我们正在使用在ELB和RDS实例后面有两个EC2实例的设置,所有这些实例均位于美国东部(弗吉尼亚州)地区。

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

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

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

您是否对使用单个RDS实例时如何适当加快整个设置有任何建议?

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

Answers:


5

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

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

即使您移出RDS并尝试在异步或同步区域之间复制数据,也会遇到延迟问题,这会给用户带来不良性能。

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


大家好,这里的问题是欧盟和美国客户需要访问相同的数据。有什么解决方法/想法吗?
2013年

此数据多久更新一次(如果不经常更新,您可以在区域之间轻松复制)?
2013年

数据通常会经常更新。随着用户数量的增长,它们将开始更频繁地更新。我认为我们必须寻找其他解决方案。
2013年

4

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


1
是否有某种(半)自动方式在一定间隔内复制RDS实例?有任何想法吗?我想这个副本也是只读的,对吗?
离子

AWS默认情况下支持只读副本,这是正确的:aws.amazon.com/rds/faqs/#86-我确定可以进行读/写复制,但这不在SF的范围内(我会与我们联系DBA网站)。
弥敦道C

是的,但是只读副本是在同一区域中创建的。我们需要在其他区域中创建一个只读副本,上次我检查他们是否支持此副本。
离子

2

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


1

我相信这就是您想要的。RDS复制到在其他区域中运行mysql的EC2。

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


欢迎来到服务器故障!尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
slm 2013年

谢谢,似乎很有趣!这是一个更相关的链接:docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…–
Ion

0

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

您将必须在每个区域(US-EST和EU)中创建一个ElastiCache节点,并让您的应用程序逻辑(EC2)尽可能使用该缓存节点。如果您采用这种方式,则必须重新构建应用程序的架构:1)知道要缓存的内容以及何时缓存;以及2)从本地ElastiCache节点中获取尽可能多的缓存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.