配置实例
upstream model{
ip_hash;
server www.aaa.cn;
server zb.bbb.cn;
}
server
{
listen 80;
#listen [::]:80;
server_name www.ning.com;
#root /home/wwwroot/a;
#include enable-php.conf;
location / {
proxy_pass http://model/;
proxy_set_header Host $proxy_host;
}
}
【说明】配置项加载在域名配置文件nginx.conf中
权重分配方式
- 1.轮询
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream model{
server www.aaa.cn;
server www.bbb.cn;
}
- 2.weight (加权轮询)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream model{
server www.aaa.cn weight=5;
server www.bbb.cn weight=10;
}
[附加说明]
权重配置时,最好后面服务器的权重>前面服务器的权重,否则后面的服务器分配不均,访问量少,可能导致访问不到。
- 3.ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
可避免session、文件分片上传等问题。
upstream model{
ip_hash;
server www.aaa.cn;
server www.bbb.cn;
}
[附加说明]
同一台服务器不建议使用ip_hash,没有作用(真实情况也不会再同一台服务器进行负载均衡,哈哈😁)。
- 4.fair[第三方]
fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡,响应时间短的优先分配。
upstream model{
server www.aaa.cn;
server www.bbb.cn;
fair;
}
[附加说明]
需要安装 nginx-upstream-fair 模块
- 5.url_hash[第三方]
同一个url(同一个资源请求)会到达同一台机器,配合缓存命中来使用。服务器集群,同一个资源多次请求,可能会到达不同的服务器,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。为了使得缓存命中率提高,使用url_hash策略,同一个url(也就是同一个资源请求)会到达同一台机器,一旦缓存资源,再次收到请求,就可以从缓存中读取,既减少了带宽,也减少的下载时间。
配置参数
1.down 表示当前的server暂时不参与负载 。
2.weight 默认为1,weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1。
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。