美文网首页
nginx 负载均衡(upstream)4种分配方式

nginx 负载均衡(upstream)4种分配方式

作者: 師兄妖怪被師傅抓赱了 | 来源:发表于2018-12-07 10:50 被阅读0次

    实例 1    (简单用法)


    upstream backend {

        server backend1.example.com;

        server backend2.example.com;

    }

    server {

        location / {

            proxy_pass http://backend;

        }

    实例 2    (动态可配置组)


    resolver 10.0.0.1;

    upstream dynamic {

        zone upstream_dynamic 64k;

        server backend1.example.com      weight=5;

        server backend2.example.com:8080 fail_timeout=5s slow_start=30s;

        server 192.0.2.1                max_fails=3;

        server backend3.example.com      resolve;

        server backend4.example.com      service=http resolve;

        server backup1.example.com:8080  backup;

        server backup2.example.com:8080  backup;

    }

    server {

        location / {

            proxy_pass http://dynamic;

            health_check;

        }

    }

    参数说明:

    weight=number                                       设置定义的服务的权重,默认为1。

    max_conns=number                                默认值是0,意思是没有限制 , 限制连接到代理服务器的并发连接数

    max_fails=number                                   被 fail_timeout 定义的 时间内当和服务通信失败尝试的次数 。 默认值被设为1.为0表示不支持

    fail_timeout=time                                     重连时间范围,如果超过则表示该服务器不可用。   默认10秒.  

    backup                                                    热备服务. 当主服务不可用后才会把请求

    down                                                       标记该服务永久不可用。

    resolve                                                    监控绑定到一个服务的域名的ip地址的变化,然后自动修改upstream配置不需要重启nginx ,                                                                          指令必须定义在http 模块 :如;

                         http { 

                                    resolver 10.0.0.1;  

                                    upstream u { 

                                                         zone ...;

                                                         server example.com resolve; 

                                                    }

                                 }     

    route=string                                          设置服务路由的名称

    service=name                                       启用DNS SRV记录解析和设置服务的名称(1.9.13).为了让该参数生效,需要定义resolve参数和                                                                  指定一个不需要端口的hostname. 如:

                                                                  server backend.example.com service=http resolve; 

    解决session


    1、轮询(默认)    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

    2、weight        指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

    3、ip_hash    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    4、fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    5、url_hash(第三方)    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

    如:

    upstream backend {

        ip_hash;(可以解决session的问题)

        server backend1.example.com;

        server backend2.example.com;

    }

    相关文章

      网友评论

          本文标题:nginx 负载均衡(upstream)4种分配方式

          本文链接:https://www.haomeiwen.com/subject/jwgzcqtx.html