nginx 负责的几种模式
系统通过nginx 负载均衡提升服务并发
nginx 的upstream模块实现
nginx 负载的几种方式:
1、轮询
每个请求按时间顺序分配到不同的后端服务器,如果服务器down掉,能自动剔除
按顺序访问服务器,每刷新一次就会更换一个服务器,关闭其中一台服务器,重复刷新依旧是同一台服务器
upstream myserver{ server 127.0.0.1:10010; server 127.0.0.1:10011; } server { listen 80; client_max_body_size 10M; location / { root /root/; index index.html; } location /user { proxy_pass http://myserver; } }
2、加权
简单来说按照自己设定的几率将请求分配到服务器上,主要用于服务器性能分布不均的情况
upstream myserver{ server 127.0.0.1:10010 weight=30; server 127.0.0.1:10011 weight=10; } server { listen 80; client_max_body_size 10M; location / { root /root/; index index.html; } location /user { proxy_pass http://myserver; } }
3、IP哈希
每个请求按访问ip的hash结果分配,可以将每个用户固定到一台服务器上
upstream myserver{ ip_hash; server 127.0.0.1:10010; server 127.0.0.1:10011; } server { listen 80; client_max_body_size 10M; location / { root /root/; index index.html; } location /user { proxy_pass http://myserver; } }
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间快的优先分配
upstream myserver{ server 127.0.0.1:10010; server 127.0.0.1:10011; fair; } server { listen 80; client_max_body_size 10M; location / { root /root/; index index.html; } location /user { proxy_pass http://myserver; } }
5、URL哈希(第三方)
按访问URL哈希结果分配,让每个URL分配到同一台服务器上,适用于服务器缓存。例如有三台服务器A,B,C下载存储服务器D上的图片资源,用户被分配到A上,A访问D下载返回给用户。将图片资源缓存一周,在一周内同一个URL资源请求可以定向到A,避免访问到其他服务器上,令其他服务器再次访问D服务器并下载图片资源,造成不必要的带宽
upstream myserver{ server 127.0.0.1:10010; server 127.0.0.1:10011; hash $request_uri; hash_method crc32; } server { listen 80; client_max_body_size 10M; location / { root /root/; index index.html; } location /user { proxy_pass http://myserver; } }
关于upstream的参数
down:当前server不参与负载
weight=2:负载权重为2
max_fails和fail_timeout:#服务器X秒内出现请求失败X次,nginx会认为这台服务器已经宕机,X秒内不会再次进行请求,将请求转发到其他正常机器,时间结束后再次请求
backup;#其他非backup宕机或者忙的时候,会请求这台机器(热备机)
https://www.cnblogs.com/pandawan/p/10887845.html