代理选择:mod_proxy_balancer、nginx + proxy balancer、haproxy?

4
我们正在http://hansard.millbanksystems.com上运行一个Rails网站,使用专用Accelerator。我们目前使用Apache和mod-proxy-balancer设置,将请求代理到运行应用程序的四个mongrel。
一些请求非常缓慢,为了防止其他请求排队等待,我们正在考虑代理选项,如果有空闲的mongrel,则将请求转发到该mongrel。
选项似乎包括:
- 按照http://labs.reevoo.com/中所述重新编译Apache的mod_proxy_balancer - 使用公平代理负载均衡器为Solaris编译nginx - 为Open Solaris编译haproxy(尽管这可能与SMF不兼容)
这些选项合理吗?我们有没有遗漏任何明显的内容?非常感谢您的建议。
6个回答

4

Apache在负载均衡方面使用起来有些棘手。虽然它很强大,但就像用一辆坦克去购物一样。

Haproxy/Nginx更专门为此工作而设计。您可以在同时使用更少资源的情况下获得更高的吞吐量。


3

HAProxy提供了比mod_proxy_balancer、nginx和其他几乎所有软件都更丰富的负载均衡功能。

特别是针对您的情况,日志输出高度可定制,因此应该更容易识别慢请求发生的时间、地点和原因。

此外,还有几种不同的负载分配算法可用,并具有良好的自动故障转移能力。

37Signals在Rails和HAProxy上发布了一篇文章,点击这里(最初在这里看到)。


2
如果你想避免使用Apache,可以部署一个Mongrel集群,并使用其他Web服务器(如nginx或lighttpd)和一种负载均衡器(例如Pound或基于硬件的解决方案)。
对我来说,Pound(http://www.apsis.ch/pound/)效果很好!

2
haproxy和SMF的唯一问题是,除非编写包装脚本,否则无法使用其软重启功能来实现“刷新”操作。在太阳能下,haproxy非常可靠,我强烈推荐它。我们通过一个单独的haproxy实例在太阳能10上运输从几百GB到几TB的任何东西,迄今为止(敲木头)在2年多的运营中我们没有遇到任何问题。详细信息请参见这里

1

Pound是一个HTTP负载均衡器,我过去曾经成功地使用过它。它包括一个动态缩放功能,可能有助于解决您的特定问题:

DynScale(0|1):启用或禁用动态重新缩放代码(默认值:0)。如果启用Pound将定期尝试修改后端优先级,以平衡各个后端的响应时间。可以为特定服务覆盖此值。

Pound体积小,文档齐全,易于配置。


0

我已经成功地使用了mod_proxy_balancer + mongrel_cluster(小流量网站)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接