#三台服务器集群
upstream jinsh {
server 192.168.10.125:8080;
server 192.168.10.126:8080;
server 192.168.10.127:8080;
}
#当浏览器每次访问 http://www.jinsh.com 时,将会以轮询的形式访问上面的三台服务器
server {
listen 80;
server_name www.jinsh.com;
location / {
proxy_pass http://jinsh;
}
}
#使用weight来配置权重,weight值越大该台服务器接受请求会越多
#不加weight,默认是按轮询的方式挨个接收请求的
upstream jinsh {
server 192.168.10.125:8080 weight=5;
server 192.168.10.126:8080 weight=2;
server 192.168.10.127:8080 weight=1;
}
upstream tomcats {
ip_hash;
server 192.168.1.173:8080;
server 192.168.1.174:8080 down;
server 192.168.1.175:8080;
}
参考:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash
哈希算法与一致性哈希算法


负载均衡 url_hash
算法:hash(url) % node_counts = index
根据请求的 url 来分配响应节点
upstream tomcats {
# url hash
hash $request_uri;
server 192.168.1.173:8080;
server 192.168.1.174:8080 down;
server 192.168.1.175:8080;
}
upstream tomcats {
least_conn;
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
#如果此时worker进程数配置的是1,那么该集群同一时刻就只能处理6个请求
upstream jinsh {
server 192.168.10.125:8080 max_conns=2;
server 192.168.10.126:8080 max_conns=2;
server 192.168.10.127:8080 max_conns=2;
}
upstream tomcats {
server 192.168.1.173:8080 weight=6 slow_start=60s;
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}
#该参数不能使用在hash和random load balancing中
#如果在upstream中只有一台server,则该参数失效
upstream tomcats {
server 192.168.1.173:8080 down; #这台服务器将无法访问
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}
upstream tomcats {
server 192.168.1.173:8080 backup; #当下面两台服务器都无法访问时,请求才会访问到这一台备用服务器
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}
#backup参数不能使用在hash和random load balancing中。
#max_fails:表示失败几次,则标记server已宕机,剔除上游服务。
#fail_timeout:表示失败的重试时间。
upstream tomcats {
server 192.168.1.173:8080 max_fails=2 fail_timeout=15s;
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}
#则表示在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复
upstream tomcats {
server 192.168.1.190:8080;
keepalive 32;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
原文:https://www.cnblogs.com/jinshengnianhua/p/15196559.html