使用http-proxy与node.js进行负载平衡

我正在尝试使用node.js和http-proxy编码负载平衡。 我想要一个在两台服务器之间共享传入请求的loadBalancer。

var http = require('http'), httpProxy = require('http-proxy'); var servers = [{host :'127.0.0.1', port :3000}, {host : 'remote_adr',port :3000}]; httpProxy.createServer(function (req, res, proxy) { var target = servers.shift(); proxy.proxyRequest(req, res, target); servers.push(target); }).listen(8000); 

我认为这样做,它会做一个loadBalancer交替发送请求到serv1和serv2。

但是,当我尝试出来,似乎要求2个服务器没有特定的顺序。 另外,大多数请求都发送到我的本地主机节点服务器(127.0.0.1:3000)

有人能解释这种行为吗?

这应该是你所要求的循环赛,但这是一个非常天真的循环赛。 您可能会看到的是,您的favicon.ico请求在单个服务器上请求的请求份额高于正常。 例如。

 Server 1: Actual Requests Server 2: favicon.ico Server 1: Another Request Server 2: favicon.ico Server 1: Final Request Server 2: favicon.ico 

所以,根据你的logging方式,看起来服务器1正在获得所有的请求,当技术上每个服务器获得相同数量的请求。 另外请记住,如果您正在从节点提供服务,则您的资产也将包含在循环中。 因此,每个图像或文件请求也将被切换到不同的节点实例。