几种NGINX PLUS HTTP负载均衡的方式介绍
137 次浏览
发表于 2021-01-20 10:30
转载链接:

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发送给相对应的服务器。


如果您觉得不错,就打赏支持一下吧〜
已有 0 人进行打赏
点击标签,发现更多精彩
发表评论
发表者

屹哥

暂无个人介绍

  • 3

    文章

  • 5

    关注

  • 1

    粉丝

活动推荐
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5