我们的项目需要对node.js进行TCP数据包负载平衡。
build议是:(Nginx或LVS)+ Keepalived +节点集群
问题:
最后,我们想知道我们的build议是否合理。 还有其他更好的build议或组件可供select吗?
我假设你不需要nginx服务器静态资产,否则LVS不会是一个选项。
1)nginx只支持通过第三方模块的TCP https://github.com/yaoweibin/nginx_tcp_proxy_module如果你不需要一个网络服务器,我会说LVS更合适,但看到我的额外评论#答案。
2)LVS支持优先级,nginx不支持。
3)可能是LVS:nginx是userland,LVS内核。
4)谎言,诅咒谎言和基准。 你必须在你的装备上模拟你的负载,编写一个节点客户端脚本并敲击你的设置。
我们正在考虑使用https://github.com/LearnBoost/up从前面到后面的所有节点尚未投入生产,但是我们正在追求这条路线,理由如下:
1)我们也有优先要求,但是他们是自定义的,动态变化。 我们正在调整运行时的优先级,我们花了不到一个小时编程节点来做到这一点。
2)我们部署了大量的代码更新,并允许我们在不中断现有客户端的情况下进行更新。 因为你可以编写代码来做任何你想做的事情,所以我们可以启动全新的流程来处理新的连接,并在现有连接全部消失的情况下让旧连接断开。
3)我们可以看到所有的东西,因为我们把我们想看到的任何度量标准都放到了redis服务器上。
我确定这不是每个进程/服务器中性能最高的,但是具有这么多的程序控制的优势是值得的,而扩展具有更多冗余的优势,所以我们并没有考虑将性能的最后一点压缩堆栈。
我只是检查了一下,看是否可以复制/粘贴一堆代码,但是我们正在快速编写代码,并且提供了很多不适合公共消费的东西。