如何在node.js中的两个相同主机之间加载平衡(弹性)

时间:2012-08-15 14:19:31

标签: javascript json node.js load-balancing bounce

我遇到了在两个相同主机但不同端口之间弹跳的问题。

所以我在node.js中使用模块bouncy,我在同一主机(localhost)上有两个应用程序主机,但是监听不同的端口。

我正在使用routes.json

{ "localhost" : 8001, "localhost" : 8000 }

并指出命令行的弹性。

但似乎它不适用于两个相同的主机?只有端口为8000的主机才有效...

任何解决方案? 提前谢谢

1 个答案:

答案 0 :(得分:1)

我认为你误解了routes.json的观点:哈希中的键表示虚拟主机名。

它可以使用域名,例如:

{ "dev.xx.com" : 8001, "prod.xx.com" : 8000 }

基于文件的配置的工作原理是检查req.headers.host以确定将流量路由到何处。

您是否尝试在“localhost”上对同一应用的两个实例进行负载均衡?在这种情况下,您应该查看内置于节点的集群库:http://nodejs.org/api/cluster.html

编辑:

群集和弹性都可用于为您加载平衡请求。如果你使用有弹性,你必须自己编写一个简单的循环方案(不能使用routes.json),集群内置它。

弹性的另一个缺点(对于您的特定用例)是弹性不会监视它反弹请求的服务器。您必须将逻辑添加到bouncy以检查两个服务器是否都是响应式的。同样,这些都内置在集群中(它将服务器作为子进程运行,如果它们发生故障,可以重新启动它们。)集群还可以用于使用新代码安全地重新启动子服务器,而不会丢失任何请求。

总而言之:如果你想将它用作代理,那么Bouncy就可以,但群集可以实现负载均衡。