前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx负载均衡(加权轮询)

Nginx负载均衡(加权轮询)

作者头像
用户8851537
修改2021-08-19 14:45:18
7790
修改2021-08-19 14:45:18
举报
文章被收录于专栏:用户8851537的专栏

权重变量

weight

配置的权重,即在配置文件或初始化时约定好的每个节点的权重

effective_weight

后端的有效权重,初始值为weight 在释放后端时,如果发现与后端的通信过程中发生了错误,则减小effective_weight 此后有新的请求过来时,在选取后端的过程中,再逐步增加effective_weight,最终又恢复到weight 这个配置作用主要是为了当后端发生错误时,降低其权重

current_weight

后端的当前权重,初始值为0 每次选取后端时,会遍历集群中所有后端,对于每个后端,让它的current_weight增加它的effective_weight,同时累加所有后端的effective_weight,保存为total 如果该后端的current_weight是最大的,就选定这个后端,然后把它的current_weight减去total 如果该后端没有被选定,那么current_weight不用减小

算法逻辑

轮询所有节点,计算当前状态下所有节点的effectiveWeight之和totalWeight currentWeight = currentWeight + effectiveWeight,选出所有节点中currentWeight中最大的一个节点为命中节点 命中节点的currentWeight = currentWeight - totalWeight;

示例

代码语言:javascript
复制
upstream test {
    server localhost:8081 weight=1
    server localhost:8082 weight=2
    server localhost:8083 weight=3
}

current_weight

current_weight += effective_weight

total

命中

current_weight

[0,0,0]

[1,2,3]

6

8003

[1,2,-3]

[1,2,-3]

[2,4,0]

6

8002

[2,-2,0]

[2,-2,0]

[3,0,3]

6

8003

[3,0,-3]

[3,0,-3]

[4,2,0]

6

8001

[-2,2,0]

[-2,2,0]

[-1,4,3]

6

8002

[-1,-2,3]

[-1,-2,3]

[0,0,6]

6

8003

[0,0,0]

[0,0,0]

[1,2,3]

6

8003

[1,2,-3]

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 权重变量
  • 算法逻辑
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档