吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1286|回复: 8
收起左侧

[求助] nginx如何根据服务器负载情况进行负载均衡分配请求?

[复制链接]
ppgjx 发表于 2022-9-6 12:56
我看nginx要么是分配权重 要么是轮着来 , 但是还是有个问题 有些请求非常耗费服务性能 有没有一种方法让 nginx和各个均衡服务器建立链接 实时获取到每个服务器的负载情况 根据这个负载情况去分配请求?
比如我有 a服务器 b服务器  一个请求打过来了 直接给a服务器cpu打满了 这时候后面的请求都交给b服务器了 等a服务器空闲下来再对a服务器进行转发请求

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Huashusu 发表于 2022-9-6 13:08
本帖最后由 Huashusu 于 2022-9-6 13:17 编辑

这种情况可以考虑自己写个中间件,根据负载分配任务,nginx的一般无法根据真实负载进行合理分配。
如果自己来实现的话,需要监控服务器,然后获取服务器地址和端口等信息,通过算法进行基于CPU负载的负载均衡。
可以尝试用Redis或ETCD来保存服务器信息,服务端额外增加功能:定时写入信息什么的
lm93129 发表于 2022-9-6 14:10
nginx主要是根据周期性的监控检查来判断负载均衡的服务器状态的,本身没有监控的功能,这个要不就二开。如果用的是k8s这套体系,就可以看看istio这个服务网格,这个更强
super2022 发表于 2022-9-6 14:46
nginx实现负载均衡,按后端服务器的响应时间来分配请求,响应时间短的优先分配。需要使用fair参数(第三方)
Js_Aaron 发表于 2022-9-6 15:03
你写一个lua脚本插件
jaybing926 发表于 2022-9-6 16:00
写个脚本吧,获取服务器负载,修改配置文件权重,然后reload ,这个方法简单~
萋小磊 发表于 2022-9-6 16:41
没办法, 不过你可以把耗时的路由单独做一个配置
pzx521521 发表于 2022-9-6 17:09
可以用least_time或least_conn
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue
nginx 本身只提供了这两个:
least_conn 优先最少连接
least_time 优先最少time


为什么没有cpu, 因为获取cpu 要子节点配合, 上面两个只记录自己转发的时间就可以了

而且cpu 策略不好定义, 每次请求都比较, 还是每隔多长时间 还是多少次请求 比较?

如果非要根据CPU自己用openresty 写lua 脚本

这是nginx的一套

当然也可以走k8s evony的另外一套
sbwfnhn 发表于 2022-9-6 17:50
nginx获取节点的硬件负载信息,肯定要节点要个api返回信息的,这个只能写个程序或脚本。
但其实这个已经超出nginx范围了。
一般是业务层自己写一套网关系统了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 08:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表