4

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

有些请求相当慢,为了防止出现其他请求在它们后面排队的情况,我们正在考虑代理选项,如果有一个空闲的杂种,它将把请求定向到一个空闲的杂种。

选项似乎包括:

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

4

6 回答 6

4

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

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

于 2008-10-13T10:32:47.753 回答
3

HAProxy 提供了比mod_proxy_balancerNginx 和几乎所有其他软件更丰富的负载平衡功能。

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

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

37Signals 在这里有一篇关于 Rails 和 HAProxy 的帖子(最初在这里看到)。

于 2008-12-26T00:40:21.670 回答
2

如果你想避免使用 Apache,可以部署一个 Mongrel 集群,它带有一个替代的 Web 服务器,比如 nginx 或 lighttpd,以及一个负载均衡器,比如 Pound 或基于硬件的解决方案。

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

于 2008-10-13T11:12:33.490 回答
2

haproxy 和 SMF 的唯一问题是您不能使用它的软重启功能来实现“刷新”操作,除非您编写包装脚本。我在这里写得更详细一点

但是,IME haproxy 在 solaris 上绝对是防弹的,我强烈推荐它。我们通过 solaris 10 上的单个 haproxy 实例每天发送从几百 GB 到几 TB 的任何内容,到目前为止(触摸木头)在 2 年以上的运行中我们没有遇到任何问题。

于 2009-04-08T20:23:02.747 回答
1

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

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

Pound 很小,有据可查,并且易于配置。

于 2009-11-30T03:26:29.027 回答
0

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

于 2008-10-14T10:43:09.697 回答