nginx负载均衡_Nginx负载均衡upstream
Nginx负载均衡upstream参数详解
- 负载均衡
nginx负载均衡是根据它的均衡策略,将请求分配给后端的不同服务器处理,比如配置了A、B、C三台服务器,如果A服务器挂了,那请求自动会落到B和C这两台服务器进行处理。
如果其中的服务器正在处理请求,那么新的一次请求则会选择比较空闲的服务器进行处理,所以它能使你的服务响应更快,可用性高,避免资源的过载和浪费。 - 均衡策略
(1)轮询(默认)
每个请求按时间顺序分配到不同的后端服务器,如果后端服务器down掉了,能自动剔除,下次请求不会落入。upstream xxxx{ server 192.168.1.1:8080; server 192.168.1.2:8080; server 192.168.1.3:8080; }
(2)weight(权重)
指定服务器的倾斜比例,轮询的几率,权重和访问率成正比,可用于后端服务器性能不均的情况,权重越大,落入的几率越高,需根据实际情况合理配置upstream xxxx{ server 192.168.1.1:8080 weight=2; server 192.168.1.2:8080 weight=1; server 192.168.1.3:8080; }
(3)ip_hash(通过客户端请求的ip进行hash,再通过hash值来选择响应的后端服务器)
每个请求按IP的hash结果分配,同一个用户多次访问时,可以固定一个服务器,这样避免建立多次的Http链接问题,也可以解决session的问题upstream xxxx{ ip_hash; server 192.168.1.1:8080; server 192.168.1.2:8080; server 192.168.1.3:8080; }
使用ip_hash的注意点:不能把后台服务器直接移除,只能标记down
(4)url_hash(通过客户端请求的url进行hash,再通过hash值来选择响应的后端服务器)
每个请求按url的hash结果分配,使每个url定向到一个后端服务器upstream xxxx{ server 192.168.1.1:8080; server 192.168.1.2:8080; server 192.168.1.3:8080; hash $request_url; }
- upstream 指令参数
(1)max_conns
限制每台serve的连接数,用户保护服务器过载,可以起到限流的作用upstream xxxx{ server 192.168.1.1:8080 max_conns=2; server 192.168.1.2:8080 max_conns=2; server 192.168.1.3:8080 max_conns=2; }
(2)slow_start
商业版,需付费upstream xxxx{ server 192.168.1.1:8080 weight=6 slow_start=60s; server 192.168.1.2:8080 weight=2; server 192.168.1.3:8080 weight=2; }
(3)down
用于标记某台服务器节点不可使用upstream xxxx{ server 192.168.1.1:8080 weight=6; server 192.168.1.2:8080 down; server 192.168.1.3:8080 weight=2; }
(4)backup(备胎)
表示被标记的服务器节点是备用机,只有在其他服务器都凉凉的情况下,才会加入到集群,才会被用户访问到upstream xxxx{ server 192.168.1.1:8080 weight=6; server 192.168.1.2:8080 backup; server 192.168.1.3:8080 weight=2; }
(5)max_fails
表示失败几次,则会判定为server已宕机,自动剔出集群服务。
(6)fail_timeout
表示失败的重试时间upstream xxxx{ server 192.168.1.1:8080 weight=6; server 192.168.1.2:8080 max_fails=2 fail_timeout=20s; server 192.168.1.3:8080 weight=2; }
与max_fails组合使用max_fails=2 fail_timeout=20s:
代表在20秒内请求某一台服务器失败次数达到2此以后,则表示这台服务器已经挂了,随后的20秒内,都不会有新的请求到达这台挂了的服务器节点上,而是会请到正常的服务器节点上,20秒过后再有新的请求到挂掉的服务器是,如果还是失败,则会重复这个步骤,一直到恢复为止。
常用配置:
upstream pan{
ip_hash;
server 192.168.10.1:80 weight=1 max_fails=2 fail_timeout=20s;
server 192.168.10.2:80 weight=2 max_fails=2 fail_timeout=20s;
#内部加入weight参数,则表示权重寻址:表示访问两次8002,访问一次8001。循环下去
#server 192.168.10.21:8001 weight=1;
#server 192.168.10.21:8002 weight=2;
#fail_timeout和slow_start。fail_timeout表示服务请求超过多长时间,就认为该服气宕机了,slow_start表示继续监控该服务多长时间,如果正常则认为服务已恢复正常。注意slow_start参数不能与 hash,ip_hash和随机 负载平衡方法一起使用
#server 192.168.10.21:5244 fail_timeout=5s slow_start=30s;
}
server {
listen 80;
server_name localhost;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_pass http://pan ;
# 上传的最大文件尺寸
client_max_body_size 30000m;
}
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。