nginx负载均衡

1 概念

The ngx_http_upstream_module is used to define groups of servers that can be referenced by the proxy_passfastcgi_passuwsgi_passscgi_passmemcached_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;
}

  

posted @ 2018-07-03 14:03  jabbok  阅读(159)  评论(0编辑  收藏  举报