Nginx几种调度算法

Posted hipphappy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx几种调度算法相关的知识,希望对你有一定的参考价值。

我们经常用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的方式分配

轮询只是简单实现请求的顺序转发,并没有考虑不同服务器的性能差异;

加权轮询设置了初始时服务器的权重,但是没有考虑运行过程中的服务器状态;

IP Hash保证同一个客户端请求转发到同一个后台服务器实现了session保存,然而当某一后台服务器发生故障时,某些客户端将访问失败;

最少连接数只是考虑了后端服务器的连接数情况,并没有完全考虑服务器的整体性能。

以上是关于Nginx几种调度算法的主要内容,如果未能解决你的问题,请参考以下文章

java nginx监控服务程序调度算法实现的代码

几种进程调度算法总结

nginx upstream 常用的几种调度方式

常见的几种页面调度算法

目前常用的磁盘调度算法有哪几种?每种算法优先考虑的问题是啥?

常见的几种操作系统进程调度算法