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保存,然而当某一后台服务器发生故障时,某些客户端将访问失败;

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

posted on 2019-05-04 10:37  喜欢喜宝  阅读(4123)  评论(0编辑  收藏  举报

导航