nginx负载均衡
1 概念
The ngx_http_upstream_module
is used to define groups of servers that can be referenced by the proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass, and grpc_pass directives.
nginx反向代理做动静分离时,比如proxy_pass,后面只能写一个地址,如:http://127.0.0.1:8080,但有时需要多个动态组件以实现负载均衡,这时就可以把多个组件都写在一个upstream里,然后在proxy_pass后面调unstream标签。
2 参数
upstream写在http标签里,一般在server上面,然后在server里引用。或者直接在一个vhost.cong里,写在server上面。
upstream jabphp { server 10.102.22.12:9000 max_fails=20 fail_timeout=10 weight=5; server 10.102.22.13:9000 max_fails=20 fail_timeout=10 weight=5; server 10.102.22.14:9000 max_fails=20 fail_timeout=10 weight=5; } server { listen 80; server_name www.jab.com jab.com; root /data/jab.com/; #charset koi8-r; access_log logs/jab.com.log main; index index.php index.html; location ~ .*\.php?$ { fastcgi_pass jabphp; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location / {...} }
LB算法
轮询
upstream svr { server localhost:10001; server localhost:10002; }
权重
upstream svr{ server localhost:10001 weight=1; server localhost:10002 weight=2; }
iphash
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
upstream svr { ip_hash; server localhost:10001 weight=1; server localhost:10002 weight=2; }