nginx负载均衡的五种算法

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android Studio(AS)–>导入项目

    Android Studio(AS)–>导入项目博文更新2015-10-22:AndroidStudio1.4版本开始,可以直接打开Eclipse项目;1:首先,你必须要有一个工程(Project),才可以打开项目(Module);(注意:Eclipse中的Workspace对应AndroidStudio中的Project,Eclipse中的Project对应AndroidStudio中的Module,);

  • 关于keil注册机的问题[通俗易懂]

    关于keil注册机的问题[通俗易懂]今天用keil时,因为程序太大(超过2k),所以出现了,不能生成hex文件的问题,下载了一个注册机后还是不行,最终找到了解决方法。WIN7系统使用注册机一定要使用xp兼容模式,以管理员身份运行。此外,win7下安装keil的路径不能出现中文,只能全部使用英文,不然还会有问题。右键点快捷方式或者执行程序→属性→兼容性→选项卡→以兼容模式运行打钩→选择兼容的WINDOWS版本(SP3)→以管理

  • 神经网络–反向传播详细推导过程

    神经网络–反向传播详细推导过程概述以监督学习为例,假设我们有训练样本集  ,那么神经网络算法能够提供一种复杂且非线性的假设模型  ,它具有参数  ,可以以此参数来拟合我们的数据。为了描述神经网络,我们先从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,以下即是这个“神经元”的图示:这个“神经元”是一个以  及截距  为输入值的运算单元,其输出为  ,其中函数  被称为“激活函数”。在本教程中,我们选用sigmoid函…

  • 如何用jdbc连接数据库(数据库java连接)

    目录一、介绍1、情况说明2、安装软件及依赖包二、配置连接数据库其他情况一、介绍1、情况说明在这里我使用SpringBoot配置Mybaits连接到PostgreSql数据库的。我的源码也会提供给大家(此文末尾),效果如下数据库:运行效果:2、安装软件及依赖包完整搭建SpringBoot及依赖包:https://blog.csdn.net…

  • 一个简洁的PHP可逆加密函数(分享)

    一个简洁的PHP可逆加密函数(分享)

    2021年10月12日
  • html获取表单提交数据_提交表单的两种方法

    html获取表单提交数据_提交表单的两种方法转载于:https://blog.csdn.net/yongwoozzang/article/details/83029128HttpURLConnectionx-www-form-urlencodedpublicstaticStringPost(StringhttpUrl,Stringdata){ PrintWriterout=null; InputStr…

发表回复

您的电子邮箱地址不会被公开。

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