我们经常用nginx做反向代理和负载均衡,这里汇总一下nginx的几种调度算法:
1、轮询
按时间顺序逐一分配到不同的后端服务器。
upstream lb_demo { server 172.16.255.194:9001; server 172.16.255.195:9001; }
2、加权轮询
可在配置的server后面加个weight=number,number值越高,分配的概率越大。
upstream lb_demo { server 172.16.255.194:9001 weight=10; server 172.16.255.195:9001 weight=20; }
3、ip_hash
每个请求按访问IP的hash分配,这样来自同一IP固定访问一个后台服务器。
upstream lb_demo { ip_hash; server 172.16.255.194:9001; server 172.16.255.195:9001; }
4、least_hash
最少链接数,哪个机器连接数少就发分发给哪个机器。
upstream lb_demo { least_conn; server 172.16.255.194:9001; server 172.16.255.195:9001; }
5、url_hash
按访问的url的hash结果分配请求,是每个url定向到同一后端服务器上。
upstream lb_demo { url_hash; server 172.16.255.194:9001; server 172.16.255.195:9001; }
6、hash关键值
hash自定义的key。
注:调度算法在设置upstream中配置,例如在此大括号里面写入ip_hash表示使用ip_hash的方式分配