使用HTTP代理的node.js负载平衡(Load balancing with node.js u

2019-07-04 05:45发布

我试图代码的Node.js和HTTP代理一个负载平衡。 我想共享2个服务器之间传入请求处理负载均衡器。

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);

我想,这样做,一定会成为其中交替发送请求到SERV1和serv2上负载均衡器。

然而,当我尝试它,它似乎要求在没有特定的顺序在2台服务器。 另外大部分请求被发送到我的本地节点服务器(127.0.0.1:3000)

是有人能解释这种行为?

Answer 1:

这应该做一个循环,你的要求,但它是一个非常幼稚的循环赛。 你可能会看到的是你的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

所以,这取决于你如何记录,它会出现一个服务器1获得所有的请求,当技术上每个服务器越来越相同数量的请求。 也请记住,你的资产会,如果你从节点为他们提供服务纳入循环为好。 因此,每个图像或文件请求也将被越区切换到不同的节点实例。



文章来源: Load balancing with node.js using http-proxy