多个AWS实例和一个数据库

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

显然,AWS的主要优势之一就是能够在事情繁忙的时候同时运行大量实例,AWS甚至提供了自动化解决scheme。 大。 但是,如果我的域名指向一个IP,并且该IP绑定到一个实例,那么如何在多个实例之间分配stream量? 我有主机作为负载平衡器吗? 如果是这样,是否有常用的LAMP负载平衡解决scheme?

如前所述,您可以使用循环法DNS。 如果你正在寻找一个快速和简单的解决scheme,这可能是我推荐的。

但是,EC2实例不是持久的,你不应该这样对待它们。 意思是说,他们可以像风中的屁一样起来消失,你的申请必须是容忍的。 RR DNS可能会成为你的痛苦来源,因为它不够聪明来处理容错/高可用性。 如果你的一个networking服务器死了,用户将被卡住,试图连接到死机,直到TTL失效的logging。 前面提到的设置一个可笑的低TTL技巧是行不通的。 下游cachingDNS服务器将不会兑现那么低的TTL。 一个小时的TTL就可以逃脱。 许多用户可能被卡住,试图连接到相同的死Web服务器24小时或更长时间。

我build议你看看HAProxy 。 Reddit.com使用EC2上的HAproxy负载平衡约2亿浏览量/月。 跨越几十个Web服务器实例。 我相信它也会处理你的应用程序。

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

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

像4月份所说的那样,您可以使用弹性负载平衡的EIP。 然而,当我评估这个时,它有一些缺陷,使得它不太适合我的部署。

我有2个弹性IP被分配给几个EC2实例作为我的前端Web服务器。 这只是运行线程Apache2服务器负责平衡我的应用服务器在他们身后。 这两个EIP然后被放在标准的DNS循环中。

Apache2configuration使用mod_balancer来平衡后端服务器实例之间的请求,从不less于3个实例。 数据库在后端系统可以连接的独立EC2实例上运行。

您可以使用HAProxyreplace我的前端系统上的Apache2configuration。 我看过,但是需要做比HAProxy更实用的智能路由,但是总有一天我会回去重新评估一下这个位置。

在这个configuration中,我正在处理超过半打的重击网站,每月数千万的点击量。 线程前端的Apache2服务器几乎没有负载,因为它们只是作为中介,而真正的工作是在后端服务器上完成的。 我注意到,当我们在位于同一地点的数据中心的传统专用服务器上运行时,性能有了相当大的提升。

超级基本解决scheme

您可以使用DNS Round Robin来为网站configuration您的DNS条目,以指向多个主机IP。 为每个前端实例提高一个独立的弹性IP。 在DNS方面,这只是为相同的主机名添加第二个条目的情况,以及替代的IP。 将每个条目的TTL设置得相当低(5-60秒)。

更多信息在这里: http : //en.wikipedia.org/wiki/Round_robin_DNS