点赞
评论
收藏
分享
举报
几种NGINX PLUS HTTP负载均衡的方式介绍
发表于2021-01-20 10:30

浏览 1.2k

文章标签

NGINX PLUS HTTP负载均衡

1. RoundRobin

默认负载均衡方法为RoundRobin(轮询),会考虑服务器权值(serverweight),无法手动配置该指令。

2. LeastConnection

NGINXLeastConnection方法会把serverweight计算在其中。若有多个相同的server,则变为RoundRobin

3. LeastTime

HTTPLeastTime方法为NginxPlus专属,分为以下三种类型:

header:从服务器获取响应包包头的时间

last_byte:从服务器获取完整响应包的时间

last_byte inflight:从服务器获取完整响应包的时间,未完成的请求也计算在内

4. Generic Hash

根据hashkey值来关联客户端-服务器的映射关系。key值可以包括文本、变量或者两者组合。与TCP/UDP中的Hash相同。

5. IPHash

TCPLoad Balancing中的Hash方法类似,但IP Hash仅用在HTTP模块并只针对IPv4/IPv6类的客户端地址进行Hash值计算。来自同一个地址的请求会被分配到同一个服务器。

6. Random

Random方法会将请求随机分配给服务器。若指定了“two”参数,则Nginx随机选取两台服务器(计算serverweight),并选择其中一台服务器使用指定的负载均衡方法。可指定的参数有:

least_conn:最小活动连接数

least_time=headerPlus专属):从服务器获取响应包包头的最小平均时间

least_time=last_bytePlus专属):从服务器获取响应包最后一个字节的最小平均时间

7. Sticky

Sticky方法属于NGINX PLUS独有的SessionPersistence方法,其包含三种类型:sticky cookiesticky routesticky learn

(1)   Sticky cookie

该方法会在第一个请求到达nginxupstream时,会根据已配置的LB方法对server进行选择。当upstream返回

第一个请求的response时,nginx会将sessioncookie插入其中,nginx根据后面requestcookie值来选择

server。可设置的参数有:cookienameexpiresdomainpath,后三项为可选项。Cookie值为一般为

IP+Port二元组或者Unixsocket路径的MD5值,若server指令下存在“route”值,则cookie值为route值。

(2)   Sticky route

此方法和stickycookie类似,在客户端发起第一次请求时,接收它的服务器为其分配一个route,此后这个客户端

发起的所有请求都要带上这个route信息,或者在cookie中或者在uri中。然后和server指令中的route参数做对

比,决定选取哪个server。如果指定的服务器无法处理,那交给负载均衡算法去选择下一个服务器。此方法需

要服务器端生成cookie

(3)   Sticky learn

此方法利用request/response中生成的标识符来进行session persistence,比如通过cookieheadersessionid

进行识别和追踪,从而得知sessionid所对应的上游服务器。当一个requestcookie中包含了nginx已识别的

sessionidnginx会直接把该request发送给相对应的服务器。


已修改于2023-03-08 15:24
创作不易,留下一份鼓励
屹哥

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
屹哥
这家伙很懒还未留下介绍~
3
文章
0
问答
1
粉丝
相关文章
原文作者:Floyd Smith of F5原文链接:实现 10 倍应用性能提升的 10 个技巧转载来源:NGINX 官方网站Web 应用性能优化迫在眉睫。线上经济活动份额不断增长,发达世界的互联网经
点赞 0
浏览 2.6k