关键技术:nginx upstream

基本语法说明

在进行实际操作之前我们先进行简单的介绍nginx upstream 的一些基础使用方法。

基本结构 :upstream name{指令…} 基本配置例子,如下:

upstream uname{
 	server ip;
 	server ip;
 	#多个ip 以此往下递增
}
server{
	location /{
  		proxy_pass http://uname/; #转发upstream
  		#此处需要注意uname为upstream 的名字,且最后有/
      	proxy_set_header X-Forwarded-For $remote_addr;
      	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      	proxy_set_header Host $host;
      	proxy_redirect off;
    }
}
server 指令的基本语法 server address [配置参数…]
配置参数 参数说明 使用示例
weight 服务器权重,权重越搞访问次数越高 weight =1
max_fails 访问失败多少次后踢出,表示为宕机 max_fails=2
fail_timeout 踢出后重新探测服务器是否正常的时间,单位s fail_timeout=20
max_connsr 服务器的最大连接数量,默认为0,不限制 max_connsr=100
backup 标记服务器为备用,当其他服务器都不可用时才会访问此服务器(轮询下可用) backup
down 标记服务器为宕机状态,暂不参与负载策略 down
指令使用示例[轮询策略]
轮询策略:nginx按加权轮转的方式将请求分发到各服务器,常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能。比如以下配置第一会访问192.168.0.1,第二次和第三次会访问到192.168.0.2,第四次又访问192.168.0.1,以此类推。
 
upstream uname{
	server 192.168.0.1 weight=1 max_fails=2 max_connsr=100 backup; 
	server 192.168.0.2 weight=2 max_fails=2 max_connsr=100 ; 
}

iphash策略

每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,而不是像轮询那样,没次访问都会再重新分配。

upstream uname{
	ip_hash;
	server 192.168.0.1 weight=1 max_fails=2 max_connsr=100 backup; 
	server 192.168.0.2 weight=2 max_fails=2 max_connsr=100 ; 
}

least_conn

将你新来的访问转发到访问量最少的服务器上,保证了每个服务器的服务数量尽可能的平等

upstream uname{
	least_conn;
	server 192.168.0.1; 
	server 192.168.0.2 ; 
}

fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配。保证性能最好的服务器能够充分发挥。

upstream uname{
	server 192.168.0.1; 
	server 192.168.0.2 ; 
	 fair;
}