nginx的五种负载均衡算法

来源:互联网 发布:centos 离线安装redis 编辑:程序博客网 时间:2024/06/06 12:33

1.轮询
其nginx.conf文件编写如下

upstream test {server 172.25.40.1:80;servse 172.25.40.2:8080;}

可选择是否用于后备’backup’
轮询的方法是通过按照时间顺序将请求往不同的后端服务器发送,来缓解服务器的压力,如果后台的某个服务器down掉了,则剔除它,可以设置权重,来分配访问的频率。
2.权重轮询
其nginx.conf文件编写如下

upstream test {server 172.25.40.1:80 weight=3; servse 172.25.40.2:8080 weight=2;}

与之前提到的轮询比较类似,但是轮询只是单一的交替,而权重添加以后可以自己设定某个后端服务器被访问的频率,比如说上面给的例子,就是1号访问3次后,2号访问两次。

3.IP_hash
其nginx.conf文件编写如下

upstream test {            ip_hash;server 172.25.40.1:80;servse 172.25.40.2:8080;}

IP_hash的方法是通过将请求和访问按照IP来给其分配服务器,解决了动态网页共享session的问题,特定的IP只能固定访问一个后端服务器。
4.fair
其nginx.conf文件编写如下

upstream test {server 172.25.40.1:80;servse 172.25.40.2:8080;fair;}

fair方法比起之前的几个算法要比较灵活一点是按照后端服务器的响应时间来进行分配,响应时间短的优先分配。
5.url_hash
其nginx.conf文件编写如下

pstream test {server squidIP1:3128;servse squidIP2:3128;            hash  $request_uri;            hash_method  crc32;         }

这种方法是按照URL的hash结果来分配请求,使URL定向到同一个服务器,在upstream中加入hash语句后,server语句不能写入weight等其他参数,这种算法一般在后端缓存的时候比较适合。

tips:
在Nginx upstream模块中,可以设定每台后端服务器在负载均衡调度中的状态,常用的状态有:
1、down,表示当前的server暂时不参与负载均衡
2、backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最低
3、max_fails,允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。
4、fail_timeout,请求失败超时时间,在经历了max_fails次失败后,暂停服务的时间。max_fails和fail_timeout可以一起使用。

Nignx负载均衡功能是通过upstream模块实现的,是基于内容和应用的7层交换负载均衡。Nginx负载均衡默认对后端服务器有健康检测能力,但是检测能力较弱,仅限于端口检测,在后端服务器比较少的情况下(10台及以下)负载均衡能力表现突出。