多个 AWS 实例和一个数据库

mat*_*af1 6 amazon-ec2 amazon-web-services

我有一个 Web 应用程序,它位于两个 AWS 实例上 - 一个实例托管站点,另一个实例托管实际数据库 (MySQL)。托管该站点的实例有一个指向它的弹性 IP,该 IP 与我的域名相关联。

显然,AWS 的主要优势之一是能够在事情变得繁忙时同时运行一堆实例,AWS 甚至提供了自动化解决方案来做到这一点。伟大的。但是,如果我的域指向一个 IP,并且该 IP 绑定到一个实例,我该如何在多个实例之间分配流量?我是否让主机充当负载平衡器?如果是这样,是否有与 LAMP 一起使用的常用负载平衡解决方案?

Apr*_*ril 5

亚马逊还提供弹性负载均衡服务。

http://aws.amazon.com/documentation/elasticloadbalancing/


jam*_*ieb 3

您可以使用循环 DNS,如前所述。如果您正在寻找一种快速且简单的解决方案,这可能也是我推荐的。

然而,EC2 实例并不持久,您不应该这样对待它们。这意味着它们可以像风中的屁一样升起并消失,您的应用程序必须容忍这种情况。RR DNS 可能会给您带来痛苦,因为它不够智能,无法处理容错/高可用性。如果您的一台 Web 服务器挂掉了,用户将无法连接到挂掉的机器,直到 TTL 失效为止。前面提到的设置低得离谱的 TTL 的技巧是行不通的。下游缓存 DNS 服务器不会遵守这么低的 TTL。如果您的 TTL 为一小时,那您就很幸运了。许多用户可能会在 24 小时或更长时间内尝试连接到同一个失效的 Web 服务器。

我建议您研究HAProxyReddit.com在 EC2 上使用 HAproxy 来负载平衡每月约 2 亿的页面浏览量。跨越数十个 Web 服务器实例。我确信它也能处理您的应用程序。