2013-01-07 29 views
0

我运行一个小的socket.io node.js应用程序,它总是有少量的并发用户。大多数情况下,它可以在单个进程中运行100%(无论是在我的Linode还是Heroku上)。在两台服务器上负载均衡两个单独的node.js进程?

我希望能在几天内宣传一下,在此期间我会期待体面的流量。这意味着并发websocket/xhr-polling连接。但是,两个socket.io连接不要不是必须相互通信。

该应用程序在我的Linode上运行了很长一段时间,但我最近将它转移到了一个免费的heroku dyno。即使使用xhr-polling(heroku本身不支持websockets),它运行得非常快。

我很好奇我如何利用我的Linode本质上运行和负载平衡的应用程序。但是如果它开始放慢速度,推送用户到heroku dyno运行(反之亦然)。这应该是可能的,像node-http-proxy,但我有一个艰难的时间让它正常运行。希望我可以对它进行微调,或者我可以轻弹一个开关,它将开始将用户平衡到第二个站点。

基本上,我只是希望指出正确的方向。代码会很好,但不是必需的。该解决方案甚至不必在节点中。

谢谢!

[1]我已经尝试了nodejitsu以及相当一段时间,只是没有发现它准备好生产使用。

编辑:我应该使用简单的roundrobin,如解释here?如果我想相互支持一个呢?

+0

既然Heroku已经有了一个有效的负载平衡器,为什么不把它们用于生产应用主机?如果您的流量超出预期,他们的设置将允许您轻松快速地扩展。 – redhotvengeance

+0

由于第二台测功机的售价为34美元,而且我已经拥有至少一个月的完美Linode。我是学生。 :) - 另外,我不确定Heroku是否能正确处理多个dynos上的socket.io。 – switz

+0

这是[Cluster](http://nodejs.org/api/cluster.html)的用途,但它仍处于实验状态。 – mekwall

回答

0

您可以使用Foreman这种类型的工作:

Procfile

web: node app.js 

然后,只需在命令行中调用此:

$ foreman start -c web=4 

这将创建4个实例您的节点应用在不同的端口上侦听。

08:29:41 web.1 | started with pid 2576 
08:29:41 web.2 | started with pid 1968 
08:29:41 web.3 | started with pid 2712 
08:29:41 web.4 | started with pid 5280 
08:29:42 web.3 | Express server listening on port 5002 
08:29:42 web.1 | Express server listening on port 5000 
08:29:42 web.2 | Express server listening on port 5001 
08:29:42 web.4 | Express server listening on port 5003 

然后,您可以使用nginx并将它们设置为上游。

相关问题