Nginx或LVS for Node.js负载平衡?

我们的项目需要对node.js进行TCP数据包负载平衡.

建议是:(Nginx或LVS)保持生命的节点集群

问题:

>与TCP服务器的高并发客户端连接需要长期存在. Nginx或LVS中哪一个更合适?
>我们需要为主服务器上的节点主服务器分配不同的优先级(本地主机服务器的优先级将高于远程服务器). Nginx或LVS可以做到这一点?
> Nginx或LVS是谁的CPU使用率较小且吞吐量较高?
>在Nginx和LVS之间进行性能基准测试/功能比较的任何推荐文档吗?

最后,我们想知道我们的建议是否合理.还有其他更好的建议或组件可供选择吗?

最佳答案
我假设您不需要nginx服务器静态资产,否则LVS将不是一个选择.

1)nginx仅通过第3方模块https://github.com/yaoweibin/nginx_tcp_proxy_module支持TCP如果您不需要Web服务器,我会说LVS更合适,但是请在#回答的末尾看到我的其他评论.

2)LVS支持优先级,nginx不支持.

3)可能是LVS:nginx是用户级的LVS内核.

4)谎言,该死的谎言和基准.您必须模拟设备上的负载,编写节点客户端脚本并敲击设置.

我们正在考虑使用https://github.com/LearnBoost/up从头到尾的所有节点,但尚未投入生产,但由于以下原因,我们正在采用此路线:

1)我们也有优先级要求,但它们是自定义的,并且会动态更改.我们正在运行时调整优先级,并且花了不到一个小时的时间对节点进行编程.

2)我们部署了大量代码更新,并且向上更新使我们能够在不中断现有客户端的情况下进行更新.因为您可以对它进行编码以执行所需的任何操作,所以我们可以启动全新的流程来处理新的连接,并在现有连接全部消失后让旧的连接消失.

3)我们可以看到所有内容,因为我们将要查看的任何指标推送到Redis服务器中.

我确信它不是每个进程/服务器性能最高的,但是拥有这么多程序控制的优势是值得的,而横向扩展则具有更多冗余的优势,因此我们不打算从中挤出最后的性能.堆栈.

我只是快速地检查了一下是否可以复制/粘贴一堆代码,但是我们正在快速对其进行编码,并且它对很多不适合公众使用的内容进行了引用.

转载注明原文:Nginx或LVS for Node.js负载平衡? - 代码日志