Nginx 精通 - 实战之负载均衡时怎么让请求不转发到一台正在启动的tomcat服务器上

文章讲述了如何在Nginx中配置健康检查以防止将请求转发给未准备好或正在启动的Tomcat服务器,包括NginxPlus的内置健康检查和开源版Nginx通过第三方模块实现的配置方法。
摘要由CSDN通过智能技术生成

在Nginx中配置负载均衡时,为了防止将请求转发到正在启动或尚未准备好接收请求的Tomcat服务器,可以利用Nginx的健康检查(Health Check)功能。在Nginx Plus中,健康检查是内置功能;而在开源版Nginx中,可以通过第三方模块如ngx_http_upstream_check_module实现。

Nginx Plus健康检查配置
在Nginx Plus中,配置健康检查的方式如下:

stream {
    upstream backend_tomcats {
        server backend1.example.com:8080;
        server backend2.example.com:8080;
        health_check type=http port=8080 path=/health-check-url;
    }

    server {
        listen 80;
        proxy_pass backend_tomcats;
    }
}

这里,Nginx Plus会定期向Tomcat服务器发送HTTP健康检查请求到指定的路径(如/health-check-url),只有当Tomcat返回成功的HTTP响应时,Nginx才会将请求转发到该服务器。

开源版Nginx使用ngx_http_upstream_check_module
对于开源版Nginx,需要先安装ngx_http_upstream_check_module模块,然后配置健康检查:

http {
    upstream backend_tomcats {
        server backend1.example.com:8080;
        server backend2.example.com:8080;

        check interval=30000 rise=2 fall=5 timeout=1000;
        check_http_send "HEAD /health-check-url HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_tomcats;
        }
    }
}

这里的配置意味着Nginx每隔30秒(interval=30000)对每个后端服务器发送一个HEAD请求到/health-check-url,只有当收到200系列或300系列的HTTP响应时,才认为服务器是健康的。若服务器连续两次健康(rise=2)则加入可用列表,连续五次不健康(fall=5)则移出可用列表。

通过以上配置,Nginx在转发请求时只会将请求发送到通过健康检查的Tomcat服务器上,从而避免了将请求转发到正在启动或无法正常处理请求的服务器上。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值