Nginx实例之集群
Nginx集群原理
- 虚拟主机:接受和响应用户请求
- 反向代理:带用户去数据服务器拿数据
- upstream:告诉Nginx去哪个数据服务器拿数据
Nginx集群分发算法
- 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
- 权重:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream weightTest{
server 10.0.0.77 weight=5;
server 10.0.0.88 weight=10;
}
- ip_hash:每个请求按ip的hash结果分配,每个访客可以固定访问一台后端服务器,可以解决session不一致的问题
upstream hashTest{
ip_hash;
server 10.0.0.10:8080;
server 10.0.0.11:8080;
}
Nginx业务服务器状态
- down:表示当前server暂时不参与负载
- weight:默认为1,weight越大,负载的权重就越大
- max_fails:允许请求失败的次数,默认为1.当超过最大次数时,返回proxy_next_upstream模块定义错误
- fail_timeout:max_fails次失败后,暂停的时间,默认为10秒
- backup:其他所有的非backup机器down掉或者忙时,请求backup机器。backup 不能和 ip_hash 关键字一起使用
upstream bakend{ #定义负载均衡设备的Ip及设备状态
ip_hash;
server 10.0.0.11:9090 down;
server 10.0.0.11:8080 weight=2;
server 10.0.0.11:6060 max_fails=3 fail_timeout=30s; #最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s
}
实例
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream web{ # 名为web的反向代理群组
server 192.168.31.42;
server 192.168.31.43;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web; # 去找反向代理
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

浙公网安备 33010602011771号