nginx 轮询转发请求不均衡

15 篇文章 0 订阅

       后端服务配置,一台116服务器用于nginx转发请求,使用轮询的负载均衡策略;两台后端API接口服务器57 和117,用于处理请求。

 

      现象背景:当对指定接口进行压力测试的时候,会出现绝大部分的请求都转发到57服务器,而117服务器上只有少量的请求。

 

     问题定位: 查看nginx的error日志发现,出现大量报错:2020/06/16 14:23:00 [error] 4950#4950: *4162133210 no live upstreams while connecting to upstream, client: xxx.xxx.xxx.xxx, server:

      出现no live upstreams while connecting to upstream表示nginx检测不到任何存活的后端服务。同时使用netstat命令查看117后端服务器,存在大量的TIME_WAIT连接

 

    .解决问题:在nginx.conf文件中增加了keep-Alive配置,如:

 

       upstream xxxxxxx {

              server 172.17.192.57:8087 max_fails=3 fail_timeout=5s weight=1;

              server 172.17.192.117:8087 max_fails=3 fail_timeout=5s weight=1;

              keepalive 256;

       }

  参考:https://www.cnblogs.com/xiaoleiel/p/8308514.html

          https://xiezefan.me/2017/09/27/nginx-502-bug-trace/

nginx是一种常用的Web服务器和反向代理服务器,通过其轮询负载均衡配置可以实现对多个后端服务器的请求分发。 在nginx中,可以通过upstream模块来配置轮询负载均衡。首先,需要在nginx的配置文件中定义多个后端服务器,例如: upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } 上述配置中,我们定义了三个后端服务器,nginx会将请求分发给这三个服务器。 接下来,需要配置具体的HTTP服务器,例如: server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } 上述配置中,我们监听80端口,并将请求通过代理转发给之前定义的upstream。这样,当有请求到达nginx时,nginx会根据默认的轮询算法依次将请求发送给后端服务器处理。 当然,在实际应用中,我们可以根据需要进行更多的配置。例如,可以设置权重来调整后端服务器的负载比例。可以使用ip_hash来实现会话保持,将同一个用户的请求都发送到同一个后端服务器。还可以设置健康检查等机制,用来自动排除不可用的后端服务器。 总结起来,nginx轮询负载均衡配置通过upstream模块实现,定义多个后端服务器后,nginx会根据默认的轮询算法将请求分发给这些服务器。可以根据需求进行更多的配置来满足实际需要。通过这种方式,可以提高系统的性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值