Nginx负载均衡策略
Nginx负载均衡策略
一、轮询(round-robin)
这是nginx默认的负载均衡策略
配置:
upstream app.com { #集群 server 127.0.0.1:8080; #server1 server 127.0.0.1:8081; #server2 }
解释:
加入同一时刻有10个request,那么该集群的处理顺序就是:server1、server2、server1、server2、server1、server2...
二、最少连接(least-connected)
配置:
upstream app.com { #集群 least_conn; server 127.0.0.1:8080; #server1 server 127.0.0.1:8081; #server2 }
解释:
当request到达时,nginx会将该request分配给连接数最少的server
三、权重(weighted)
nginx默认给每个server的权重都是1,代表每个server的负载是一样的。
但可以配置使得一些server负载重一些,一些server负载轻一些
配置:
upstream app.com { #集群 server 127.0.0.1:8080 weight=2; #server1 server 127.0.0.1:8081 weight=1; #server2 }
解释:
此时server1的权重是server2的两倍,代表每有3个request,前两个分配给server1,最后一个分配给server2
四、session持久化(ip_hash)
前面三种策略都无法保证client的session能被保存,因为同一个client的request可能被不同的server处理
ip_hash这种策略将client的ip进行hash运算,同一个hash值的ip只会被分配到同一个server(但要保证所有的server都不会down)
配置:
upstream app.com { #集群 ip_hash; server 127.0.0.1:8080; #server1 server 127.0.0.1:8081; #server2 }