nginx负载均衡

2018-09-01 14:32:33


  • nginx之所以这么火的原因之一是因为其实现复制均衡的配置非常简单只需要在nginx的配置中添加upstream节点既可以轻松实现。
upstream phpserver { 
      server 127.0.0.1:9000; #节点一
      server 127.0.0.1:9001; #节点二
}
location ~ \.php$ {
				fastcgi_pass   phpserver;#此处填写upstream节点的名字
				fastcgi_index  index.php;
				fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
				include        fastcgi_params;
}
  • 这样就简单的配置好nginx的负载均衡配置了,不过现在该负载均衡的模式为轮询模式
  • 通过为每个服务器配置权重则可以使访问倾向于权重大的那个服务器,如下只需在服务器地址后添加weight参数即可实现。
upstream phpserver { 
      server 127.0.0.1:9000 weight=1; #权重为1
      server 127.0.0.1:9001 weight=3; #权重为3
}
  • ip_hash方式则是更具每个访问者的ip来使用不同的服务器
upstream phpserver { 
      ip_hash;
      server 127.0.0.1:9000;
      server 127.0.0.1:9001;
}
  • fair是按照后端服务器的响应时间来对服务器进行使用,会自动取响应时间最短的服务器
upstream phpserver { 
      server 127.0.0.1:9000; 
      server 127.0.0.1:9001;
			fair;
}
  • 根据请求的url的hash值进行服务器分配
upstream phpserver { 
      server 127.0.0.1:9000;
      server 127.0.0.1:9001;
			hash $request_uri;
			hash_method crc32;#hash方法
}
  • upstream可以为每个服务器设置状态值
down #此服务器暂不参与负载
weight=1#权重值
#下面两个参数的意思是10秒内请求出现一次错误则把该节点标记为不可用,直达下一个周期,在此周期内的访问将会转移至下一个节点
max_fails=1 fail_timeout=10s
backup#当所有非backup忙的时候才会请求该节点