精华内容
下载资源
问答
  • nginx负载均衡策略

    2020-03-01 22:51:59
    nginx负载均衡策略: 负载均衡: 提高网站吞吐量、减去单台服务器的压力 轮询机制 权重(比例分配) IP绑定 宕机轮询配置、

    nginx负载均衡策略:

    负载均衡: 提高网站吞吐量、减去单台服务器的压力

    轮询机制

    在这里插入图片描述

    权重(比例分配)

    在这里插入图片描述

    IP绑定

    在这里插入图片描述

    宕机轮询配置

    在这里插入图片描述

    展开全文
  • Nginx负载均衡策略

    2018-11-29 15:10:00
    Nginx负载均衡策略 一、轮询(round-robin) 这是nginx默认的负载均衡策略 配置: upstream app.com { #集群 server 127.0.0.1:8080; #server1 server 127.0.0.1:8081; #server2 } 解释: 加入...

    Nginx负载均衡策略

    一、轮询(round-robin)

    这是nginx默认的负载均衡策略

    配置:

    upstream app.com {    #集群
        server 127.0.0.1:8080;    #server1
        server 127.0.0.1:8081;    #server2
    }

    解释:

    加入同一时刻有10个request,那么该集群的处理顺序就是:server1、server2、server1、server2、server1、server2...

    二、最少连接(least-connected)

    配置:

    upstream app.com {    #集群
        least_conn;
        server 127.0.0.1:8080;    #server1
        server 127.0.0.1:8081;    #server2
    }

    解释:

    当request到达时,nginx会将该request分配给连接数最少的server

    三、权重(weighted)

    nginx默认给每个server的权重都是1,代表每个server的负载是一样的。

    但可以配置使得一些server负载重一些,一些server负载轻一些

    配置:

    upstream app.com {    #集群
        server 127.0.0.1:8080 weight=2;    #server1
        server 127.0.0.1:8081 weight=1;    #server2
    }

    解释:

    此时server1的权重是server2的两倍,代表每有3个request,前两个分配给server1,最后一个分配给server2

    四、session持久化(ip_hash)

    前面三种策略都无法保证client的session能被保存,因为同一个client的request可能被不同的server处理

    ip_hash这种策略将client的ip进行hash运算,同一个hash值的ip只会被分配到同一个server(但要保证所有的server都不会down)

    配置:

    upstream app.com {    #集群
        ip_hash;
        server 127.0.0.1:8080;    #server1
        server 127.0.0.1:8081;    #server2
    }

    转载于:https://www.cnblogs.com/javafucker/p/10038450.html

    展开全文
  • nginx 负载均衡策略

    2017-01-07 23:16:00
    nginx 负载均衡策略 1. 轮询轮询方式是nginx负载均衡的默认策略,根据每个server的权重值来轮流发送请求,例如:upstream backend {server backend1.example.com;server backend2.example.com;}这种情况是每个...

    nginx 负载均衡策略

     
    1. 轮询

    轮询方式是nginx负载均衡的默认策略,根据每个server的权重值来轮流发送请求,例如:

    upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    }

    这种情况是每个server都使用相同的权重,默认值为1

    可以手动设定权重,例如

    upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com;
    }

    2. 最少连接数

    把请求发送给激活连接数最少的那台服务器

    设置方式

    upstream backend {
    least_conn;

    server backend1.example.com;
    server backend2.example.com;
    }

    3. 最少延时

    把请求发送给连接延时最小的那台服务器

    延时的计算方式有两种:

    (1)header - 从server接收到第一个byte的时间

    (2)last_byte - 从server接收到全部响应的时间

    设置方式

    upstream backend {
    least_time header;

    server backend1.example.com;
    server backend2.example.com;
    }

    4. ip hash

    根据用户IP计算出一个hash值,并记录下来,以后相同hash值的请求都发送到同一个server,同一个用户的请求始终使用同一台服务器,不用担心跨服务器时的session问题

    设置方式

    upstream backend {
    ip_hash;

    server backend1.example.com;
    server backend2.example.com;
    }

    5. 通用hash

    对用户指定的key进行hash计算,可以指定文本、变量或者组合

    设置方式

    upstream backend {
    hash $request_uri consistent;

    server backend1.example.com;
    server backend2.example.com;
    }

     

    转载于:https://www.cnblogs.com/jun1019/p/6260670.html

    展开全文
  • Nginx 负载均衡策略

    千次阅读 2019-05-25 11:01:28
    简介 在多个应用实例中使用负载均衡是一种常用的技术,他可以优化资源利用率,最大限度的提高吞吐量,减少延迟,...nginx可以根据客户端ip进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客...

    简介

    在多个应用实例中使用负载均衡是一种常用的技术,他可以优化资源利用率,最大限度的提高吞吐量,减少延迟,增强容错。
    在多个web应用服务器中,使用nginx 可以有效的做到HTTP负载均衡和流量分配,提高性能,扩展性和稳定性

    负载均衡机制

    nginx 支持以下负载均衡机制:
    nginx可以根据客户端ip进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。

    nginx的upstream目前支持的7种方式的分配,分别是:

    1. 轮询策略,
    2. 权重轮询策略,
    3. ip_hash策略,
    4. 最少连接负载均衡
    5. fair策略,
    6. url_hash策略,
    7. sticky策略等。
    

    目前我总结的nginx负载策略共两大类,分别是:内置策略和扩展策略。

    内置策略有四种
    包括:轮询策略、加权轮询策略、 最少连接负载均衡和ip_hash策略。默认情况下内置策略会编译进Nginx的内核,只需要在nginx配置中指明参数即可。
    扩展策略有三种
    包括:fail 策略,url_hash 策略,sticky 策略。

    • 轮询方式(RR 默认)
      把请求以循环的方式分布在不同应用服务器上,每个请求按照时间顺序逐一分配到不同的后端服务器,如果服务器down 掉,能自动剔除。

      http {
           upstream bakendserver{
              server server1:8080 max_fails=3 fail_timeout=3s ;
              server server2:8080 max_fails=3  fail_timeout=3s ;
          }
          server {
              listen 80;
              location / {
              proxy_pass http://backendserver;
              }
          }
      }
      

      在上面的示例中,有三个相同的应用实例运行在server1~server2中。当没有配置负载均衡时,它默认使用轮询方式。所有的请求都被代理(proxied)在服务器群组 backendserver,nginx使用HTTP负载均衡来分发请求。

      nginx反向代理负载均衡实现包括以下:HTTP,HTTPS,FastCGI,uwsgi,SCGI,和memcached

      配置HTTPS的负载均衡取代HTTP,只需要使用https协议即可。

      当为FastCGI,uwsgi,SCGI和memcached设置负载均衡时,分别使用fastcgi, uwsgi_pass, scgi_pass, memcached_pass指令即可。

    • 加权轮询(weight)
      指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 weight值越大,分配到的访问几率越高。

      http {
          upstream bakendserver{
             server server1:8080 max_fails=3 fail_timeout=3s weight=8;
             server server2:8080 max_fails=3  fail_timeout=3s weight=9;
         }
         server {
             listen 80;
             location / {
             proxy_pass http://backendserver;
             }
         }
      }
      
    • 最少连接负载均衡(least_conn)
      当某些请求需要很长时间才能完成请求时,这种情况用最少连接方式来控制应用实例更公平一些。
      使用最少连接方式,nginx不会过度的去请求一个比较繁忙的服务器,而且把新请求分发到一些不忙的服务器上。

      在服务器群组配置中使用least_conn指令,最少连接负载均衡就会启用:

      http {
           upstream bakendserver {
              least_conn;
              server server1:8080 max_fails=3 fail_timeout=3s ;
              server server2:8080 max_fails=3  fail_timeout=3s ;
          }
          server {
              listen 80;
              location / {
              proxy_pass http://backendserver;
              }
          }
      }
      
    • ip_hash(保留Session)
      请注意轮询和最少连接的负载均衡方案,它们客户端后续的请求可能被分发到不同的服务器上,这样就不能保证同一个客户端一直被指向到同一台服务器上。

      如果有这样一个需求,就是想把一个客户端绑定到特定的服务器上–换句话说,就是使客户端的Session有粘性和持久化始终选择特定的机器,这种情况可以使用ip_hash负载均衡方式来处理。

      使用ip_hash的情况下,客户端的IP地址会被当做一个哈希表的key来决定这个客户端的请求是由服务器群组里的哪一台服务器去处理。这种方式保证了同一个客户端,它的请求总会被指向到同一台服务器上,除非这台服务器不可用。

      配置ip-hash负载均衡,只需要在服务(upstream)群组中添加ip_hash指令即可:

         http {
              upstream bakendserver {
                 ip_hash;
                 server server1:8080 max_fails=3 fail_timeout=3s weight=3;
                 server server2:8080 max_fails=3 fail_timeout=3s weight=4;
             }
             server {
                 listen 80;
                 location / {
                 proxy_pass http://backendserver;
                 }
             }
         }
      

      注意:ip_hash模块和后面的Sticky模块不能够同时使用。

    • Fail (第三方插件)
      按后端服务器的响应时间来分配请求,响应时间短的优先分配。
      该策略请求转发到负载最小的后端服务器节点上。Nginx通过后端服务器节点对响应时间来判断负载情况,响应时间最短的节点负载就相对较轻,Nginx就会将前端请求转发到此后端服务器节点上。

      http {
           upstream bakendserver {
              server server1:8080 max_fails=3 fail_timeout=3s weight=3;
              server server2:8080 max_fails=3 fail_timeout=3s weight=4;
              fair;
          }
          server {
              listen 80;
              location / {
              proxy_pass http://backendserver;
              }
          }
      }
      

      注意:这种策略具有很强的自适应性,但是实际的网络环境往往不是那么简单,因此需要慎用。

    • url_hash(第三方插件)
      按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
      在upstream中加入hash语句,hash_method是使用的hash算法。

      http {
           upstream bakendserver {
               hash $request_uri;//非域名后面的资源部分
               hash_method crc32;
              server server1:8080 max_fails=3 fail_timeout=3s weight=3;
              server server2:8080 max_fails=3 fail_timeout=3s weight=3;
          }
          server {
              listen 80;
              location / {
              proxy_pass http://backendserver;
              }
          }
      }
      
    • Sticky策略
      该策略在多台服务器的环境下,为了确保一个客户端只和一台服务器通讯,它会保持长连接,并在结束会话后再次选择一个服务器,保证了压力均衡。

         http {
              upstream bakendserver {
                sticky;
                 server server1:8080 max_fails=3 fail_timeout=3s weight=3;
                 server server2:8080 max_fails=3 fail_timeout=3s weight=3;
             }
             server {
                 listen 80;
                 location / {
                 proxy_pass http://backendserver;
                 }
             }
         }
      

      注意:如果浏览器不支持cookie,那么sticky不生效,毕竟整个模块是给予cookie实现。Sticky模块和ip_hash模块不能够同时使用。

    展开全文
  • Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询(默认),加权轮询,Ip hash,第三方。一、热备如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,029
精华内容 811
关键字:

nginx负载均衡策略