在我们的环境中,我们在不同的集群上同时使用了 Nginx 和 HA Proxy。使用其中一个相比另一个有什么优势吗?
或者,对基本 LAMP 服务器集群进行负载平衡的最佳方法是什么?
答案1
(我不会讨论“实现负载平衡的最佳方式”,因为这显然与具体情况有关。)
HAProxy 和 nginx 都是 Unix 上开源 HTTP 负载均衡器的绝佳选择。总体而言,我认为它们的优点和缺点如下:
nginx的:
- 可以进行 SSL 卸载(通常是一件大事)。
- 具有丰富的内容处理模块,例如头重写,内容压缩等。
- 有时可以是“您唯一需要的 HTTPd”,如果您不需要任何其他 HTTPd,则可以使管理更简单。
- 通过插件实现更好的扩展,用于路由流量。
HAProxy的:
- 可以提供比 nginx 更高的单服务器性能(特别是在 TCP 模式下运行时,10gbit/s 已得到验证)。
- 我认为,启动和运行基本的纯 HTTP 负载平衡设置更简单。
- 变化少一些,尤其是稍旧的稳定分支,通常一段时间内不需要安全性和稳定性更新。
但正如我所说,两者都是极好的选择。选择你觉得最舒服的一个。
答案2
这实际上取决于你想做什么。
Nginx 可以在集群之间分担负载,也可以将特定域路由到不同的集群。我们的 nginx 性能令人满意。它更像是一个负载路由器。
对于 haproxy,我知道它会不断查询服务器状态,并在将流量导向服务器之前检查服务器。它还有一个界面,您可以在其中查看统计信息。我认为 nginx 在这两个方面都没有做到这一点。
答案3
我们使用 nginx 作为 Web 服务器,并且对它非常满意。我再也不会使用 Apache 了。缺点是,如果您打算运行 PHP,则需要一些 hackery-jiggery 才能使其在 fastCGI 下工作。
别忘了使用 Varnish 进行缓存!这个简单的步骤解决了许多网站被 Slashdotted/Fireballed 的问题!
答案4
我不是这方面的专家,但据我所知,HAProxy 具有更好的性能,并且在负载平衡方面更具可配置性。
现在我可以给你列出一系列比较和基准,但我只会链接谷歌搜索结果https://encrypted.google.com/search?q=nginx+vs+haproxy