nginx做负载均衡的时候,怎么让请求不转发到一台正在启动的tomcat服务上?

newsomeone 发布于 03/11 21:59
阅读 443
收藏 1

有两台服务器做负载均衡,nginx设置的权重一样,有一台挂掉的时候,请求转发到另外一台去,但是启动这一台挂掉的tomcat时候,请求还是会转发到这台正在请求的服务器上,页面就会一直卡住知道tomcat启动完成,想问问有没有办法让tomcat启动完成后才接收nginx的转发

加载中
0
gammey
gammey

请使用nginx_upstream_check_module这个模块,它会帮你主动检查后端的tomcat是否在正常提供服务,如果不能提供服务那就不会发送请求到故障的tomcat上。

n
newsomeone
这个靠谱些
0
w
wailouci
增加一层api gateway
0
下一秒瞬间

我也有这个疑问,等待老鸟解答。

0
iehyou
iehyou

这个我觉得是tomcat的问题,你可以试下不经过nginx直接访问tomcat,在启动的时候,访问也是一致在loading中,所以我的建议是你换另外一种web容器

0
花花兽
花花兽

proxy_connect_timeout   

0
j
jybd

我的做法是设置proxy_connect_timeout 1;

j
jybd
回复 @newsomeone : connect是连接的意思,如果有连接就等着,没有换下一个,我是这么理解的
n
newsomeone
哪几个超时时间我都设置成1秒了,问下如果tomcat正常的,但是请求超过1秒了 这个时候是不是都不能成功请求这个了
0
n
newsomeone

我把这几个超时时间都设置成1秒了 暂时看可以满足,原理还不太懂,比如一个请求数据量比较大,tomcat响应超过1秒了会怎么样         

proxy_connect_timeout 1;
#后端服务器连接的超时时间_发起握手等候响应超时时间 默认60
proxy_send_timeout 1;
 #后端服务器处理请求的时间 默认60
 proxy_read_timeout 1;
 

0
careyjike
careyjike

nginx + lua实现动态的调整upstream

0
b
beastxiao

你可以先修改NGINX配置把重启的机器注释掉,reload,启动好了后在加上去,reload。

n
newsomeone
你别说我也这样干过,但是有些麻烦~
返回顶部
顶部