我们的项目需要对node.js进行TCP数据包负载平衡.
建议是:(Nginx或LVS)保持生命的节点集群
问题:
>与TCP服务器的高并发客户端连接需要长期存在. Nginx或LVS中哪一个更合适?
>我们需要为主服务器上的节点主服务器分配不同的优先级(本地主机服务器的优先级将高于远程服务器). Nginx或LVS可以做到这一点?
> Nginx或LVS是谁的cpu使用率较小且吞吐量较高?
>在Nginx和LVS之间进行性能基准测试/功能比较的任何推荐文档吗?
最后,我们想知道我们的建议是否合理.还有其他更好的建议或组件可供选择吗?
1)Nginx仅通过第3方模块https://github.com/yaoweibin/nginx_tcp_proxy_module支持TCP如果您不需要Web服务器,我会说LVS更合适,但是请在#回答的末尾看到我的其他评论.
4)谎言,该死的谎言和基准.您必须模拟设备上的负载,编写节点客户端脚本并敲击设置.
我们正在考虑使用https://github.com/LearnBoost/up从头到尾的所有节点,但尚未投入生产,但由于以下原因,我们正在采用此路线:
1)我们也有优先级要求,但它们是自定义的,并且会动态更改.我们正在运行时调整优先级,并且花了不到一个小时的时间对节点进行编程.
2)我们部署了大量代码更新,并且向上更新使我们能够在不中断现有客户端的情况下进行更新.因为您可以对它进行编码以执行所需的任何操作,所以我们可以启动全新的流程来处理新的连接,并在现有连接全部消失后让旧的连接消失.
3)我们可以看到所有内容,因为我们将要查看的任何指标推送到Redis服务器中.
我确信它不是每个进程/服务器性能最高的,但是拥有这么多程序控制的优势是值得的,而横向扩展则具有更多冗余的优势,因此我们不打算从中挤出最后的性能.堆栈.
我只是快速地检查了一下是否可以复制/粘贴一堆代码,但是我们正在快速对其进行编码,并且它对很多不适合公众使用的内容进行了引用.