基于Nginx 、Tomcat实现负载均衡情况下,某台服务器宕机自动切换至健康服务。

通常有两种实现方式:

方式一:设置备用服务器,当访问服务器异常时才访问备用服务;

方式二:设置服务器转发请求超时时间;

一、设置备机

在Nginx根目录下conf目录中,修改nginx.conf:

upstream choupangxia.com {   
    server  127.0.0.1:6666 weight=1;
    server  127.0.0.1:8080 weight=1;
    server  127.0.0.1:8081 backup;
}

其中最后一行“server 127.0.0.1:8081 backup;”表示8081这个端口服务是备用服务,专门应对其他服务宕机情况。

二、设置转发请求超时时间

nginx.conf配置如下:

location / {
        proxy_pass   https://www.choupangxia.com;
        proxy_redirect  default;
        proxy_connect_timeout 1;
        proxy_read_timeout 1;
	proxy_send_timeout 1;
}

其中proxy_connect_timeout表示,超时1s即转发到其他服务器请。但这里需要注意接口的幂等性问题。确保服务处理时间过长导致超时,但实际上已经执行的情况存在。

另外,如果未设置proxy_connect_timeout或对应的值比较大,则会出现一半访问速度快,一半访问速度慢的情况。其中访问慢是因为连接超时之后才会切换到另外一台服务器上。



Nginx+Tomcat负载均衡宕机自动切换插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2021/12/27/nginx-tomcat-2/