代理选择:mod_proxy_balancer,nginx +代理平衡器,haproxy?

时间:2008-10-13 10:26:55

标签: ruby-on-rails apache proxy solaris mongrel

我们正在http://hansard.millbanksystems.com上的专用加速器上运行Rails站点。我们目前使用mod-proxy-balancer进行Apache设置,代理运行该应用程序的四个mongrel。

有些请求速度很慢,为了防止其他请求在其后排队,我们正在考虑代理选项,如果有请求,会将请求定向到空闲杂项。

选项似乎包括:

  • 重新编译Apache的mod_proxy_balancer,如http://labs.reevoo.com/所述

  • 使用Solaris的公平代理平衡器

  • 编译nginx
  • 为Open Solaris编译haproxy(虽然这可能不适用于SMF)

这些合理的选择吗?我们错过了什么明显的错我们非常感谢您的建议。

6 个答案:

答案 0 :(得分:4)

Apache用于平衡是一种奇怪的野兽。它当然有能力,但就像用坦克去购物一样。

Haproxy / Nginx更专门针对这项工作量身定制。您应该获得更高的吞吐量并同时使用更少的资源。

答案 1 :(得分:3)

HAProxy提供了比mod_proxy_balancer,nginx以及几乎任何其他软件更丰富的负载均衡功能。

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

此外,还有一些不同的负载分配算法,具有良好的自动故障转移功能。

37Signals有关于Rails和HAProxy here的帖子(最初看到here)。

答案 2 :(得分:2)

如果您想避免使用Apache,可以使用备用Web服务器(如nginx或lighttpd)和各种负载均衡器(如Pound或基于硬件的解决方案)部署Mongrel群集。

磅(http://www.apsis.ch/pound/)对我来说效果很好!

答案 3 :(得分:2)

haproxy和SMF的唯一问题是,除非编写包装器脚本,否则不能使用它的软重启功能来实现“刷新”操作。我更详细地写了here

然而,IME haproxy在solaris上绝对是防弹的,我会高度推荐它。我们通过solaris 10上的单个haproxy实例每天从几百GB到几TB的运输,到目前为止(触摸木材)在2年多的运行中我们没有遇到任何问题。

答案 4 :(得分:1)

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

  

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

庞德很小,文档齐全,易于配置。

答案 5 :(得分:0)

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