Node.js的Nginx或LVS负载均衡?

时间:2012-04-20 03:43:34

标签: node.js nginx load-balancing

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

提案是:(Nginx或LVS)+ Keepalived + Node Cluster

enter image description here

问题:

  1. 与TCP服务器的高并发客户端连接需要很长时间。哪一个更合适,Nginx还是LVS?
  2. 我们需要在主服务器上为节点主服务器分配不同的优先级(localhost服务器的优先级将高于远程服务器)。哪一个可以做到这一点,Nginx还是LVS?
  3. 谁的CPU利用率较小且吞吐量较高,Nginx或LVS?
  4. Nginx和LVS之间性能基准测试/功能比较的任何推荐文档?
  5. 最后,我们想知道我们的提案是否合理。还有其他更好的建议或组件可供选择吗?

1 个答案:

答案 0 :(得分:3)

我假设您不需要nginx来服务静态资产,否则LVS将不是一个选项。

1)nginx仅通过第三方模块支持TCP https://github.com/yaoweibin/nginx_tcp_proxy_module如果您不需要网络服务器,我会说LVS更合适,但请看#d答案结尾处的其他评论

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

3)可能是LVS:nginx是userland,LVS内核。

4)谎言,诅咒谎言和基准。您必须模拟装备上的负载,编写节点客户端脚本并敲定设置。

我们正在寻找从前到后的所有节点https://github.com/LearnBoost/up尚未投入生产,但我们正在寻求这条路线,原因如下:

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

2)我们部署了大量代码更新,并允许我们在不中断现有客户端的情况下完成更新。因为你可以编写代码来做你想做的任何事情,所以我们可以启动全新的流程来处理新的连接,并在现有的连接全部消失时让旧的连接消失。

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

我确信它不是每个进程/服务器中性能最高的,但是拥有如此多的程序控制的优势是值得的,并且向外扩展具有更多冗余的优势,因此我们不会考虑挤压最后一点表现越来越好。

我只是快速检查一下,看看我是否可以复制/粘贴一堆代码,但是我们正在快速编写它并且它有很多引用不适合公共消费的内容。