`

Nginx upstream的5种权重分配方式分享

 
阅读更多

1、轮询(默认) 

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

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

复制代码代码如下:

upstream backend { 
server 192.168.0.14 weight=10; 
server 192.168.0.15 weight=10; 


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

复制代码代码如下:

upstream backend { 
ip_hash; 
server 192.168.0.14:88; 
server 192.168.0.15:80; 


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

复制代码代码如下:

upstream backend { 
server server1.linuxany.com; 
server server2.linuxany.com; 
fair; 


5、url_hash(第三方) 

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

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 

复制代码代码如下:

upstream backend { 
server squid1:3128; 
server squid2:3128; 
hash $request_uri; 
hash_method crc32; 

#定义负载均衡设备的Ip及设备状态 
upstream backend{ 
ip_hash; 
server 127.0.0.1:9090 down; 
server 127.0.0.1:8080 weight=2; 
server 127.0.0.1:6060; 
server 127.0.0.1:7070 backup; 


在需要使用负载均衡的server中增加 
proxy_pass http://bakend/; 

每个设备的状态设置为: 
1.down 表示单前的server暂时不参与负载 
2.weight 默认为1.weight越大,负载的权重就越大。 
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。 
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。 

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug 
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录 

location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

 

########################################

1、轮询

轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器。
配置的例子如下:

http{ 
 upstream sampleapp { 
   server <>; 
   server <>; 
 } 
 .... 
 server{ 
   listen 80; 
   ... 
   location / { 
    proxy_pass http://sampleapp; 
   }  
 } 

上面只有1个DNS入口被插入到upstream节,即sampleapp,同样也在后面的proxy_pass节重新提到。

2、最少连接

Web请求会被转发到连接数最少的服务器上。
配置的例子如下:

http{ 
  upstream sampleapp { 
    least_conn; 
    server <>; 
    server <>; 
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://sampleapp; 
    }  
  } 

上面的例子只是在upstream节添加了least_conn配置。其它的配置同轮询配置。

3、IP地址哈希

前述的两种负载均衡方案中,同一客户端连续的Web请求可能会被分发到不同的后端服务器进行处理,因此如果涉及到会话Session,那么会话会比较复杂。常见的是基于数据库的会话持久化。要克服上面的难题,可以使用基于IP地址哈希的负载均衡方案。这样的话,同一客户端连续的Web请求都会被分发到同一服务器进行处理。
配置的例子如下:

http{ 
  upstream sampleapp { 
    ip_hash; 
    server <>; 
    server <>; 
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://sampleapp; 
    }  
  } 

上面的例子只是在upstream节添加了ip_hash配置。其它的配置同轮询配置。

4、基于权重的负载均衡

基于权重的负载均衡即Weighted Load Balancing,这种方式下,我们可以配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器。
配置的例子如下:

http{ 
  upstream sampleapp { 
    server <> weight=2; 
    server <>; 
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://sampleapp; 
    } 
 } 

上面的例子在服务器地址和端口后weight=2的配置,这意味着,每接收到3个请求,前2个请求会被分发到第一个服务器,第3个请求会分发到第二个服务器,其它的配置同轮询配置。

还要说明一点,基于权重的负载均衡和基于IP地址哈希的负载均衡可以组合在一起使用。

分享到:
评论

相关推荐

    Nginx深入详解之upstream分配方式.docx

    总之,Nginx 的 upstream 配置提供了灵活的负载均衡策略,可以根据业务需求选择合适的分配方式,并通过各种参数调整后端服务器的行为,以确保服务的稳定性和高效性。同时,了解并熟练掌握这些配置对于优化和维护大...

    nginx配置upstream负载均衡的资源文件文件通用版

    5. **公平算法(fair)**:这个资源包中的`nginx-upstream-fair`实现的是公平算法,它根据服务器的实际响应时间动态调整权重,响应时间短的服务器将得到更多请求。 配置公平算法(fair)的示例如下: ```nginx ...

    nginx-upstream-fair-master.zip

    "nginx-upstream-fair-master.zip"是一个包含Nginx公平负载均衡(fair)第三方模块的压缩包,该模块使得Nginx可以根据服务器的实际响应时间来分配请求,从而实现更公平的负载均衡策略。 公平负载均衡(fair)模块...

    nginx_upstream_hash-0.3.1.tar.gz

    3. **权重分配**:与标准的upstream模块一样,`nginx_upstream_hash`同样支持为每个服务器设置权重,以便在负载均衡时考虑服务器的处理能力差异。 4. **备用服务器**:在主服务器不可用时,可以自动切换到备用...

    nginx_upstream_check_module

    **Nginx Upstream Check Module** 是一个由淘宝团队开发的插件,专门用于Nginx服务器,旨在增强其反向代理功能,提供对后端服务器节点的健康检查。这个模块使得运维人员能够实时监控后端服务器的状态,确保在将请求...

    nginx upstream fair算法

    总的来说,Nginx Upstream Fair算法是一种智能的负载均衡策略,它通过动态响应时间来分配请求,有助于提升系统整体的稳定性和效率。在配置和使用过程中,需要根据实际工作负载进行调整和优化,以达到最佳的服务器...

    nginx-upstream-manager.zip

    `nginx-upstream-manager.zip` 提供了一个开源项目,用于更方便地管理和操作 Nginx 的 upstream 配置。 这个项目的核心是 `upstream_manager.py` 脚本,它提供了对 Nginx upstream 集群进行增删改查等操作的能力。...

    nginx upstream 容错机制.pdf

    此外,还将简要介绍Nginx的四种负载均衡方式,并提供相应的配置示例。 #### 二、Nginx判断节点失效状态 Nginx默认通过`connect refuse`和`time out`两种状态来判断上游节点是否已失效。需要注意的是,Nginx并不会...

    nginx_upstream_check_module-master

    其内部的Upstream模块是处理负载均衡的核心部分,它允许Nginx将客户端的请求分发到一组后端服务器上,可以按照轮询、权重、IP哈希等多种策略进行分发。 **2. Upstream Check模块功能** - **健康检查**:检查上游...

    nginx依赖及心跳检查包

    在实际应用中,`upstream_check_module`常与负载均衡策略结合使用,如轮询、权重轮询、最少连接等。通过心跳检查,可以确保负载均衡策略总是将流量分配给健康的服务器,从而提升整体系统的稳定性和可用性。 总之,...

    nginx负载均衡配置,宕机自动切换方式

    通过配置文件nginx.conf中的upstream指令块,用户可以定义服务器组和权重,使得nginx根据相应的算法将客户端请求均衡地分配到各个服务器上。 在传统的nginx负载均衡配置中,并未直接提供后端服务器健康检查的功能,...

    Nginx-配置负载均衡的几种方式

    ### Nginx 配置负载均衡的几种方式详解 #### 一、引言 随着互联网技术的飞速发展,单一服务器已经无法满足日益增长的服务需求。为了提高系统的稳定性和扩展性,采用负载均衡技术成为了常见解决方案之一。Nginx作为...

    详解nginx upstream 配置和作用

    其中,upstream模块是Nginx用于负载均衡的核心功能之一。负载均衡主要作用是将网络的流量尽可能均匀地分配到多个服务器上,以提高系统的处理能力和服务的稳定性。 在Nginx配置中,upstream模块的配置通常位于http块...

    02Nginx负载均衡策略配置.pdf

    权重策略(Weighted Round-Robin)允许为服务器分配一个权重值,Nginx会根据权重来决定分配的请求数量,权重越高,分配到的请求就越多。这适合于后端服务器性能不一的情况,可以通过权重来让性能更好的服务器承担更...

    Nginx集成阿里健康检查相关包.rar

    1. **Nginx Upstream模块**:理解upstream的基本配置,如定义服务器组、设置负载均衡策略(轮询、权重、最少连接等)以及处理服务器的故障检测和恢复机制。 2. **健康检查机制**:了解阿里健康检查服务的工作原理,...

    内网安装nginx(离线)

    内网安装Nginx(离线)是一种常见的情况,特别是在企业环境中,由于安全政策或网络隔离,服务器可能无法直接访问互联网。Nginx是一个高性能的HTTP和反向代理服务器,常用于网站服务、负载均衡以及内容缓存。本文将...

    nginx-1.25.3

    可以设置多个后端服务器,并用`upstream`模块实现负载均衡策略,如轮询、权重分配、最少连接等。 ```nginx upstream backend { server backend1.example.com; server backend2.example.com; server backend3....

    基于linux下nginx的安装及项目部署

    - **负载均衡配置**:使用`upstream`块定义一组后端服务器,并配置负载均衡策略,如轮询、权重分配、最少连接数等。例如: ```nginx upstream backend { server backend1.example.com weight=2; server ...

Global site tag (gtag.js) - Google Analytics