nginx负载均衡的五种算法

nginx负载均衡的五种算法nginx负载均衡的五种算法一、Nginx负载均衡算法1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。例如:upstreambakend{server192.168.0.1;server192.168.0.2;}2、weight(轮询权值)we…


Jetbrains全系列IDE稳定放心使用

nginx负载均衡的五种算法

一、Nginx负载均衡算法

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。

例如:

upstream bakend {  
    server 192.168.0.1;    
    server 192.168.0.2;  
}

2、weight(轮询权值)

weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

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

upstream bakend {  
    server 192.168.0.1 weight=10;  
    server 192.168.0.2 weight=10;  
}

3、ip_hash

每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。

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

upstream bakend {  
    ip_hash;  
    server 192.168.0.1:88;  
    server 192.168.0.2:80;  
} 

4、fair(第三方)

比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

按后端服务器的响应时间来分配请求,响应时间短的优先分配。
例如:

upstream backend {  
    server 192.168.0.1:88;  
    server 192.168.0.2:80;  
    fair;  
}

5、url_hash(第三方)

按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。

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

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

例如:

upstream backend {  
    server 192.168.0.1:88;  
    server 192.168.0.2:80;  
    hash $request_uri;  
    hash_method crc32;  
}

二、Nginx负载均衡调度状态

在Nginx upstream模块中,可以设定每台后端服务器在负载均衡调度中的状态,常用的状态有:

  1. down,表示当前的server暂时不参与负载均衡
  2. weight 默认为1,weight越大,负载的权重就越大。
  3. backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最低
  4. max_fails,允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。
  5. fail_timeout,请求失败超时时间,在经历了max_fails次失败后,暂停服务的时间。max_fails和fail_timeout可以一起使用。

例如:

upstream bakend{ 
      ip_hash; 
      server 192.168.0.1:90 down; 
      server 192.168.0.1:80 weight=2; 
      server 192.168.0.2:90; 
      server 192.168.0.2:80 backup; 
}

参考博文:https://www.cnblogs.com/lvgg/p/6140584.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182742.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 数据库表设计之用户权限表[通俗易懂]

    数据库表设计之用户权限表[通俗易懂]需求分析1、管理员给用户分配权限,权限数据写到数据库中。2、认证服务在进行用户认证时从数据库读取用户的权限数据(动态数据)user:用户表,存储了系统用户信息,用户类型包括:学生、老师、管理员等role:角色表,存储了系统的角色信息,学生、老师、教学管理员、系统管理员等user_role:用户角色表,一个用户可拥有多个角色,一个角色可被多个用户所拥有menu:记录了菜单及菜单下的权限role_permission:角色权限表,一个角色可拥有多个权限,一个权限可被多个角色所拥有…

    2022年9月29日
  • 进程、线程、协程

    进程、线程、协程

    2021年10月14日
  • PostgreSQL copy 命令教程

    PostgreSQL copy 命令教程报文介绍PostgreSQLcopy命令,通过示例展示把查询结果导出到csv文件,导入数据文件至postgresql。1.copy命令介绍copy命令用于在postgreSql表和标准文件系统直接传输数据。copy命令让PostgreSQL服务器直接读写文件,因此文件必须让PostgreSQL用户能够访问到。该命令使用的文件是数据库服务器直接读写的文件,不是客户端应用的文件,因此必须位于服务器本地或被直接访问的文件,而不是客户端位置。copyto命令拷贝表内容至文件,也可以拷贝selec

    2022年10月28日
  • APK反编译工具_exe反编译工具

    APK反编译工具_exe反编译工具序言:可以利用Python来写一些工具来提高工作效率。把重复繁琐机械化的事情交给Python脚本去完成。这里利用Python来写一个反编译和重签名的工具。一、Python及工具的安装工欲善其事必先利其器。首先下载并安装Python和对应的开发工具。Python的安装进入官网的Downloads下载界面选择对应的python版本。其中executable表示可执行版,需要安装后使用。e…

    2022年9月18日
  • python编程100例_python进阶路线图

    python编程100例_python进阶路线图异常模块下面介绍python常用的异常模块AttributeError异常AttributeError试图访问一个类中不存在的成员(包括:成员变量、属性和成员方法)而引发的异常Attribut

    2022年7月28日
  • COM :IUnknown接口QueryInterface函数介绍

    COM :IUnknown接口QueryInterface函数介绍
    一、COM组件的目标:
    COM组件的一个主要优势是:便于升级。
    要实现这个优势需要满足一下两个条件:
    1、运行时从客户程序动态加载和卸载,采用DLL技术可以实现。
    2、为了更好的突出DLL的优势,还需要信息隐藏,即封装性。
    二、COM组件的信息隐藏采用IUnknown接口来实现:
          1、IUnknown接口功能简介:
    IUnknown意思是未知,即未知的接口。采用这个名字是为了简单起见,所有的COM接口都需要继承I

    2022年7月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号