我有一个web应用程序,它存在于两个AWS实例上--一个实例承载站点,另一个实例托管实际数据库(MySQL)。承载站点的实例有一个弹性IP指向它,这是绑定到我的域名。
显然,AWS的主要好处之一是在事情繁忙时能够同时运行一堆实例,AWS甚至提供了自动化的解决方案。太棒了。但是,如果我的域指向一个IP,并且该IP绑定到一个实例,我如何在多个实例之间分配通信量?我是否让主机器充当负载均衡器?如果是,是否有一个常用的负载平衡解决方案用于LAMP?
发布于 2010-02-19 04:22:45
您可以使用循环DNS,如前所述.如果您正在寻找一个快速而简单的解决方案,这可能也是我推荐的。
但是,EC2实例不是持久的,您不应该这样对待它们。意思是,他们可以上升和消失像屁在风和你的应用程序必须容忍这一点。RR DNS可能是一个痛苦的来源,因为它不够聪明,以处理容错/高可用性。如果您的一个web服务器死亡,用户将被困在试图连接到死机器,直到TTL失效的记录。前面提到的设置一个可笑的低TTL的技巧是行不通的。下游缓存DNS服务器不会满足那么低的TTL要求。你要是能有一个小时的TTL就好了。许多用户可能会在24小时或更长时间内试图连接同一个死气沉沉的web服务器。
我建议你调查一下HAProxy。Reddit.com在EC2上使用HAproxy来平衡大约2亿页的浏览量/月。跨越几十个web服务器实例。我相信它也能处理你的应用程序。
发布于 2010-02-23 22:07:05
Amazon还提供弹性负载平衡服务。
发布于 2010-02-23 23:17:32
您可以使用您的EIP来进行弹性负载平衡,就像四月提到的那样;但是,当我评估它时,它有一些缺陷,使得它不太适合我的部署。
我有两个弹性I,它们被分配给两个EC2实例,作为我的前端web服务器。这只是运行线程化的Apache2服务器,它处理对它们后面的应用服务器的负载平衡。然后将这两个EIP放入标准DNS循环。
Apache2配置使用mod_balancer来平衡后端服务器实例之间的请求,而后端服务器实例不少于3个实例。数据库运行在它自己独立的EC2实例上,后端系统可以连接到这个实例。
您可以用HAProxy替换我的前端系统上的HAProxy配置。我确实看过了,但需要做比我想象的更智能的HAProxy路由,但是有一天我可能会回去重新评估这个位置。
在这种配置中,我正在处理超过6个受重击的站点,它们每月的点击量为数千万次。线程化的前端Apache2服务器几乎没有负载,因为它们只是充当中间的角色,而真正的工作是在后端服务器上完成的。我注意到,在传统的专用服务器上运行的数据中心中,速度性能有了很大的提高。
https://serverfault.com/questions/114491
复制相似问题