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; } } }