我正在利用upstream
块来平衡两个nodejs
个实例:
upstream Balancer {
least_conn;
server 127.0.0.1:9300;
server 127.0.0.1:9301;
}
位置指令:
location = /Balancer {
proxy_pass http://Balancer;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
一切正常。但是,如果9301
实例发生故障,并且当新玩家连接到Balancer
指令时,nginx
会挂起并且无法连接到9300
(这是只有一个活着)。似乎它仍在尝试连接到9301
......已经死了。
我尝试了weight
选项,如下所示:
upstream Balancer {
least_conn;
server 127.0.0.1:9300 weight=1;
server 127.0.0.1:9301 weight=2;
}
这可能是nginx
问题还是我的配置错了?
答案 0 :(得分:0)
我错过了proxy_connect_timeout 1s;
设置。
location = /Balancer {
proxy_connect_timeout 1s;
proxy_pass http://Balancer;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
现在一切正常。看起来nginx
现在等待大约1s
来测试是否有效连接,如果没有,它会移动到下一个服务器。必须启用此设置或连接将挂起。 (这可能是有意的,或者是一个错误,不确定)