nginx 负载均衡策略

Nginx负载均衡有四种方案配置

1.轮询

轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器上。
注意:

  1. 缺省配置就是轮询策略;
  2. nginx负载均衡支持http和https协议,只需要修改proxy_pass后协议即可;
  3. nginx支持FastCGI,uwsgi,SCGI,memcached的负载均衡,只需要把proxy_pass改为fastcgi,uwsgi_pass,scgi_pass,memcached_pass即可;

nginx配置:

http {
    upstream webs {
		#默认轮询
        server localhost:8081;
        server localhost:8082;
        server localhost:8083;
    }
    server {
    	#监听端口
        listen       80;
        #监听地址,写ip或者域名
        server_name  localhost 
        location / {
        	#请求转向webs定义的服务器列表
            proxy_pass http://webs;
        }
	}
}

2.最少连接 least_conn

web请求会被转发到连接数量最少的服务器上
注意:

  1. 最少连接负载均衡通过least_conn指令定义;
  2. 此策略适合请求处理时间长短不一造成服务器过载的情况;
    nginx配置:
http {
    upstream webs {
		#默认轮询
        #ip_hash; 
		#least_conn  
        server localhost:8081;
        #server localhost:8082;
        #server localhost:8083 weight=3;
    }
    server {
    	#监听端口
        listen       80;
        #监听地址,写ip或者域名
        server_name  localhost 
        location / {
        	#请求转向webs定义的服务器列表
            proxy_pass http://webs;
        }
	}
}

3. IP地址哈希ip_hash

前两种负载均衡方案中,同一客户端连续的web请求可能会被分发到不同的后端服务器进行处理,因此如果涉及到会话Session,那么会话会比较复杂,此时可以使用ip_hash的负载均衡策略,同一客户端连接的Web请求会被分发到同一服务器进行处理。
注意:

  1. ip哈希负载均衡使用ip_hash指令定义;
  2. nginx使用请求客户端的ip地址进行哈希计算,确保使用同一服务器响应请求;

nginx配置:

http {
    upstream webs {
		#默认轮询
        #ip_hash; 
		#least_conn  
        server localhost:8081;
        #server localhost:8082;
        #server localhost:8083 weight=3;
    }
    server {
    	#监听端口
        listen       80;
        #监听地址,写ip或者域名
        server_name  localhost 
        location / {
        	#请求转向webs定义的服务器列表
            proxy_pass http://webs;
        }
	}
}

4.基于权重 weight

基于权重的负载均衡即Weighted Load Balancing,在这种方式下,我们可以配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器。
注意:

  1. 权重负载均衡需要使用weight指令定义;
  2. 权重越高分配到需要处理的请求越多;
  3. 此策略可以和最少连接负载和ip哈希策略结合;
  4. 此策略比较适合服务器硬件配置差别较大的情况;
    nginx配置:
http {
    upstream webs {
        server localhost:8081;
        server localhost:8082;
        server localhost:8083 weight=3;
    }
    server {
    	#监听端口
        listen       80;
        #监听地址,写ip或者域名
        server_name  localhost 
        location / {
        	#请求转向webs定义的服务器列表
            proxy_pass http://webs;
        }
	}
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值