nginx 负载均衡实例与负载均衡策略介绍

时间:2019-11-23 21:01 作者:Mr.Pan 阅读数:204


在上一篇文章 nginx 反向代理,url正则匹配到不同站点 中,设置了反向代理的实现演示,本文将介绍负载均衡的实现方式。

演示环境与上文相同,这里不在过多描述,正式开始配置实现负载均衡


需求:

        在客户端浏览器中,访问nginx的9001端口,可以均衡的访问tomcat8080和tomcat8001

方案:

        修改配置文件 /usr/local/nginx/conf/nginx.conf

        worker_processes  1;
        events {
            worker_connections  1024;
        }
        http {
            include       mime.types;
            default_type  application/octet-stream;
            sendfile        on;
            keepalive_timeout  65;
            ############新增加  upstream 配置,讲服务器信息卸载配置里,myserver为服务器的访问别名 ##############
            upstream myserver{
        	server 192.168.168.195:8080;
        	server 192.168.168.195:8081;	
            }
            server {
                listen       80;
                server_name 192.168.168.195;    ########修改server_name为服务器Ip地址
                location / {
                    root   html;
        	    proxy_pass    ######增加 proxy_pass  http://myserver 
                    index  index.html index.htm;
                }
                location / {    ###如果你的轮询不起作用,加上这个local,解决/favicon.icon加载不到的问题##############
                }
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                    root   html;
                }
            }
            server {
                listen       9001;
                server_name 192.168.168.195;
        
                location ~/home/ {
                    proxy_pass http://127.0.0.1:8080;
                }
        	location ~/about/ {
        	    proxy_pass http://127.0.0.1:8081;
        	}
            }
        }

验证是否可用

image.png

image.png


nginx 负载均衡常用的4种策略


  1. 轮询    默认方式

  2. 权重(weight)   权重分配

  3. ip_hash   根据ip分配

  4. 第三方策略   

        1.fail   响应时间分配

        2.url_hash   根据url分配


轮询


 upstream mysvr { 
      server 127.0.0.1:7878 weight=2 max_fails=2 fail_timeout=2;
      server 127.0.0.1:3333 weight=1 max_fails=2 fail_timeout=1;    
    }


参数说明

fail_timeout与max_fails结合使用
max_fails设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了
fail_time服务器会被认为停机的时间长度,默认为10s
backup标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里
down标记服务器永久停机了


  1. 在轮询中,如果服务器down掉了,会自动剔除该服务器。

  2. 缺省配置就是轮询策略。

  3. 此策略适合服务器配置相当,无状态且短平快的服务使用。


权重(weight)


 upstream mysvr { 
      server 127.0.0.1:7878 weight=1;
      server 127.0.0.1:3333 weight=2;
}
  1. 权重越高分配到需要处理的请求越多。

  2. 此策略可以与least_conn和ip_hash结合使用。

  3. 此策略比较适合服务器的硬件配置差别比较大的情况。



ip_hash


upstream mysvr { 
      server 127.0.0.1:7878; 
      server 127.0.0.1:3333;
      ip_hash;
    }
  1. ip_hash不能与backup同时使用。

  2. 此策略适合有状态服务,比如session。

  3. 当有服务器需要剔除,必须手动down掉。



第三方策略:fail


  upstream dynamic_zuoyu {
        server localhost:8080;  
        server localhost:8081;  
        server localhost:8082;  
        server localhost:8083;  
        fair;    #实现响应时间短的优先分配
    }

按后端的服务器响应时间来分配请求,响应时间短的优先分配


第三方策略:url_hash


upstream dynamic_zuoyu {
        hash $request_uri;    #实现每个url定向到同一个后端服务器
        server localhost:8080;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082;  #tomcat 8.5
        server localhost:8083;  #tomcat 9.0
    }




评论列表




注册用户登录后才能发表评论,请登录注册,访问 博客首页