Nginx配置负载均衡

配置策略

Nginx负载均衡是通过upstream模块来实现的,Nginx内置实现了三种负载策略(轮询、加权轮询、ip hash)其他的是扩展策略,配置还是比较简单的。
1. 轮询
所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,upstream中默认是轮询法,策略配置代码如下,包含在http全局块中:

	upstream xxx_server_name{
	    server 192.168.10.1:80;
	    server 192.168.10.2:80;
	    server 192.168.10.3:80;
	 }

Nginx配置负载均衡_第1张图片
2. 加权轮询
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,策略配置代码如下,包含在http全局块中:

	upstream xxx_server_name{
	    server 192.168.10.1:80 weight=1;
	    server 192.168.10.2:80 weight=2;
	    server 192.168.10.3:80 weight=3;
	}

Nginx配置负载均衡_第2张图片
3. Ip hash
每一个请求按ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,能够解决session的问题,策略配置代码如下,包含在http全局块中:

	upstream xxx_server_name{
	    ip_hash;
	    server 192.168.10.1:80;
	    server 192.168.10.2:80;
	    server 192.168.10.3:80;
	}

Nginx配置负载均衡_第3张图片
4. 按后端服务器的响应时间来分配请求
fair,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短的后端服务器优先分配请求,如果需要使用这种调度算法,必须下载Nginx的upstr_fair模块。策略配置代码如下,包含在http全局块中:

	upstream xxx_server_name{
		fair;
	    server 192.168.10.1:80;
	    server 192.168.10.2:80;
	    server 192.168.10.3:80;
	}

5.url_hash
与ip hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。策略配置代码如下,包含在http节点中:

	upstream xxx_server_name{
	    server 192.168.10.1:80;
	    server 192.168.10.2:80;
	    server 192.168.10.3:80;
	    hash $request_uri; 
	    hash_method crc32; 
	    }
使用方式

将server块中的location块中的proxy_pass配置为:http://+upstream名称,以加权轮询为例,配置如下:

#举例使用,IP、端口无效
http{
	...
	upstream test{ 
	      server 192.168.10.1:80 weight=1; 
	      server 192.168.10.2:80 weight=2; 
	      server 192.168.10.3:80 down; 		#down表示当前的server临时不参与负载
	      server 192.168.10.4:80 backup;	#其他全部非backup机器down或者忙的时候,会请求这台服务器
	}
	...
	server{
		...
		location / { 
		    root  html; 
		    index  index.html index.htm; 
		    proxy_pass http://test; 
		}
		...
	}
	...
}

Nginx文件结构
...				#全局块
events{			#events块
	...
}
http{			#http块
	...				#http全局块
	server{				#server块
		...					#sever全局块
		location [pattern] {	#location块
			...
		}
	}
	server{
		...
	}
	...
}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。

参考博客:
使用Nginx实现负载均衡
Nginx 配置详解

你可能感兴趣的:(Nginx,nginx)