一、负载均衡算法
upstream 支持4种负载均衡调度算法
A、轮询(默认)
:每个请求按时间顺序逐一分配到不同的后端服务器;
B、ip_hash
:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
C、url_hash
:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。
D、fair
:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx
本身是不支持 fair
的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair
模块。
二、配置实例
反向代理(负载均衡):--------- 10.3.134.72 (有nginx)
web1 服务器:-------- 10.3.134.99 (有nginx)
web2 服务器:-------- 10.3.134.111 (有nginx)
客户端:-------------------------------10.3.134.127
Web服务器操作
测试为了便于识别,两台服务器的网页内容不一样;正常生产中必须保持一致
web1(编译安装的nginx,需要自己加路径)

[root@mpn-salve ~]# mkdir -p /ding/html/
[root@mpn-salve ~]# vim /ding/html/index.html
this is web1 AAAAAAAAAAAAAAAAAAAA
web2(yum安装的nginx,已经有路径)
[root@yum-n ~]# vim /usr/share/nginx/html/index.html
This is web2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
~
1、热备:
如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦(宕机),BBBBBBBBBBBBBB.....
upstream myweb {
server 10.3.134.99;
server 10.3.134.111 backup; #热备
}

2、轮询:
nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB....
upstream myweb {
server 10.3.134.99;
server 10.3.134.111;
}
3、加权轮询:
跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB....
upstream myweb {
server 10.3.134.99 weight=1;
server 10.3.134.111 weight=2;
}
4、ip_hash:
nginx会让相同的客户端ip请求相同的服务器。
upstream myweb {
server 10.3.134.99;
server 10.3.134.111;
ip_hash;
}
5、nginx负载均衡配置状态参数
- down,表示当前的server暂时不参与负载均衡。
- backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
- max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
- fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。
upstream myweb {
server 10.3.134.99 weight=2 max_fails=2 fail_timeout=2;
server 10.3.134.111 weight=1 max_fails=2 fail_timeout=1;
}
如果你像跟多更深入的了解 nginx 的负载均衡算法,nginx官方提供一些插件大家可以了解下。
网友评论