找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1075|回复: 2

利用Lua实现基于延迟动态调整HAProxy服务器权重(weight)

[复制链接]
发表于 2020-2-10 20:16 | 显示全部楼层 |阅读模式
本帖最后由 easyteacher 于 2020-2-14 09:16 编辑

将下面的Lua代码上传到路由器上,假设命名为dynamic_set_weight.lua。

  1. local function calculate_weight(ping_value,eresp)
  2.     -- from 1 to 256
  3.     return math.ceil(256/math.exp(0.1*(ping_value+eresp)))
  4. end
  5. local function adjust_weight()
  6.     while true do
  7.         for _, backend in pairs(core.backends) do
  8.             for _, server in pairs(backend.servers) do
  9.                 local stat = server:get_stats()
  10.                 if stat['check_desc'] == 'Layer4 check passed' and stat['bin'] > 1000 then
  11.                     -- adjust weight based on the ping value and the number of eresp
  12.                     server:set_weight(calculate_weight(stat['check_duration'],stat['eresp']))
  13.                 end
  14.             end
  15.         end
  16.         core.msleep(10000) -- 10s
  17.     end
  18. end

  19. core.register_task(adjust_weight)
复制代码

假设上传的位置为/usr/bin,则在HAProxy的配置文件里,在global下添加一行
  1. lua-load /usr/bin/dynamic_set_weight.lua
复制代码

重启HAProxy(OpenWRT上的命令为/etc/init.d/haproxy restart),一段时间后效果如图所示:

可以看到权重已经根据延迟做了调整。调整每10s进行一次,可以修改core.msleep括号内的数字对运行间隔进行调整。

更新:
2020年2月14日:修改节点在线状态判断方法


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 2恩山币 +3 收起 理由
lrii*** + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
cmh*** + 2 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-2-11 11:16 | 显示全部楼层
本帖最后由 easyteacher 于 2020-2-14 09:17 编辑

更新了权重计算方法
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-2-14 09:17 | 显示全部楼层
修改节点在线状态判断方法
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-26 08:48

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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