Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用http代理与node.js进行负载平衡_Node.js_Load Balancing_Node Http Proxy - Fatal编程技术网

使用http代理与node.js进行负载平衡

使用http代理与node.js进行负载平衡,node.js,load-balancing,node-http-proxy,Node.js,Load Balancing,Node Http Proxy,我正在尝试用node.js和http代理编写负载平衡代码。我想要一个负载平衡器,它在两台服务器之间共享传入的请求处理 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, r

我正在尝试用node.js和http代理编写负载平衡代码。我想要一个负载平衡器,它在两台服务器之间共享传入的请求处理

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发送请求

但是,当我尝试时,它似乎没有按特定顺序请求这两个服务器。此外,大多数请求被发送到我的本地主机节点服务器(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

因此,根据您的日志记录方式,服务器1似乎获得了所有请求,而从技术上讲,每台服务器都获得了相同数量的请求。还请记住,如果您从节点为资产提供服务,那么您的资产也将包含在循环中。因此,每个图像或文件请求也将被传递到不同的节点实例。

。favicon.ico是否未命中be node.js?如果是,为什么没有显示处理的请求?@Amareswar不确定“favicon.ico未被node.js命中”是什么意思。Node.js当然可以处理favicon请求,但如果您只是在express中记录显式路由,您可能不会在日志中看到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