我有一个NodeJS脚本,想运行带有NGINX负载均衡功能的用户。
我在NodeJS中给出地址
console.log(server.address());
这回馈了
{ address: '::', family: 'IPv6', port: 2055 }
{ address: '::', family: 'IPv6', port: 2055 }
{ address: '::', family: 'IPv6', port: 2055 }
对于所有用户,每次都使用相同的端口。网站上的20-30。 但是为什么都一样?
那是我的nginx设置
upstream nodes {
ip_hash;
server localhost:2055;
server localhost:2056 weight=5;
server localhost:2057;
}
我还给2056进行了更多的测试,但是在其他服务器上没有人比2055更好...
而且可以肯定的是,更改后我会进行service nginx reload
。
那是我在nginx中站点的位置
location / {
add_header "Access-Control-Allow-Origin" "*" always;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://nodes;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
这就是我在nodejs上启动的服务器
server.listen(2055);
server.listen(2056);
server.listen(2057);
多数民众赞成在代码的末尾(底部) 我的意思是,该网站正在运行,但是server.address()仅返回2055。
我把它放在这里
io.on('connection', function(socket) {
console.log(server.address());
Any Ideas如何检查这仅仅是一个日志错误,以及如何检查其他端口是否正在运行?
答案 0 :(得分:0)
从docs
通过ip-hash,客户端的IP地址用作哈希键,以确定应为客户端的请求选择服务器组中的哪台服务器。此方法可确保将来自同一客户端的请求始终定向到同一服务器,除非该服务器不可用。
所以改变
upstream nodes {
ip_hash;
server localhost:2055;
server localhost:2056 weight=5;
server localhost:2057;
}
到
upstream nodes {
server localhost:2055;
server localhost:2056 weight=5;
server localhost:2057;
}
应该为您提供加权的负载平衡。