nginx.conf----upstream

nginx---upstream
    放于http{}标签中
    默认算法是wrr(权重轮询 weighted round-robin)

配置例子
upstream example {
    server test.example.com weight=5;    
    server test2.example.com:8090 max_fails=3 fail_timeout=30s;
    server unix:/tmp/test3;            #u监听nix域套接字
    
    server test.example.com:8090 backup;
    server test2.example.com:8090 backup;    #备用服务器
    server test3.example.com down;        #服务器不可用
}

语法:server address [parameters];
    1、address:定义服务器地址,未指定端口默认80端口
        #“unix:”:指定“unix:”前缀的unix域套接字路径。
     参数:    
        weight=number:设定服务器的权重,默认是1。
        max_fails:设置nginx与服务器通信的尝试失败的次数。
        fail_timeout:定义时间段,如果失败达到max_fails,nginx认为服务不可用。
            #默认次数为1,0为停止统计尝试次数,认为一直可用。    
            #proxy_next_upstream、fastcgi_next_upstream、memcached_next_upstreamd配置什么是失败的尝试。
        backup:标记为备用服务器。主服务器不可用时,会传给这些服务器。
        down:标记服务器永久不可用,可与ip_hash一起用。


负载均衡
1、轮询
    默认方式,即每个请求按照时间顺序轮流分配到不同的后端服务器。

2、weight权重
    指定轮询比率,应用于后端服务器有区别的场景。
    upstream example {
        server test0.example.com weight=1;
        server test1.example.com weight=2;
        server test2.example.com weight=3;
    }

3、ip_hash
    每个请求按照访问ip的hash结果分配,这样每个访客会固定访问一个后端,可以解决session一致问题。
        #ip_hash时,server后的状态不能是weight和backup。
        #会导致负载不均衡。
    upstream example {
        ip hash;
        server test0.example.com weight=1;
        server test1.example.com weight=2;
        server test2.example.com weight=3;
    }

4、fair
    公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
    必须下载upstr_fair模块
    upstream example {
        server test0.example.com weight=1;
        server test1.example.com weight=2;
        server test2.example.com weight=3;
        fair;    
    }

5、url_hash/consistent_hash
    consistent_hash替代了url_hash,按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要用于后端服务器为缓存的场景。
    #用于cache服务,例:memcached,squid,varnish。
    #不能写入weight等其他参数。
    #hash_method是使用的算法。
    upstream example {
        server test0.example.com weight=1;
        server test1.example.com weight=2;
        server test2.example.com weight=3;
        hash $request_uri;
        hash_method crc32;
    }
   

posted @ 2019-11-04 22:52  zyxywy  阅读(712)  评论(0编辑  收藏  举报