【发布时间】:2013-01-07 07:47:36
【问题描述】:
我运行一个小的 socket.io node.js 应用程序,它总是有少量并发用户。在大多数情况下,它可以 100% 的时间在单个进程上运行(无论是在我的 Linode 还是 Heroku[1] 上)。
我希望将它宣传几天,在此期间我预计会有相当多的流量。这意味着并发 websocket/xhr-polling 连接。但是,这两个 socket.io 连接不一定必须相互通信。
该应用程序在我的 Linode 上运行了很长一段时间,但我最近将它转移到了一个免费的 heroku dyno 上。即使使用 xhr-polling(heroku 本身不支持 websockets)运行也非常快。
我很好奇如何利用我的 Linode 来运行和负载平衡应用程序。但是,如果它开始变慢,请将用户推到正在运行的 heroku dyno(反之亦然)。这应该可以通过node-http-proxy 之类的方式实现,但我很难让它正常运行。希望我可以对其进行微调,使其达到一个点,或者我可以轻按一个开关,它就会开始平衡用户到第二个站点。
基本上,我只是希望指出正确的方向。代码会很好,但不是必需的。解决方案甚至不必在节点中。
谢谢!
[1] 我也尝试了 nodejitsu 很长一段时间,但发现它还没有准备好用于生产。
编辑:我应该只使用简单的循环,正如here 解释的那样吗?如果我想偏爱一个怎么办?
【问题讨论】:
-
既然 Heroku 已经有一个有效的负载均衡器,为什么不将它们用于生产应用程序主机呢?如果您的流量超出预期,他们的设置将使您能够轻松快速地扩大规模。
-
因为第二台测功机的价格为 34 美元,而且我已经拥有一台非常好的 Linode 至少一个月了。我是学生。 :) - 另外,我不确定 Heroku 是否会正确处理多个测功机上的 socket.io。
-
这是Cluster 的用途,但仍处于实验状态。
-
集群用于在一台服务器上分叉一个进程。这里我想在两个独立的服务器上对两个独立的进程进行负载均衡。
-
@switz 集群负载平衡多个 Node.js 进程的请求。标题有点误导,建议改一下。
标签: node.js express load-balancing derbyjs