首页 > 系统相关 >nginx负载均衡中常见的算法及原理有哪些?

nginx负载均衡中常见的算法及原理有哪些?

时间:2023-10-07 15:22:54浏览次数:38  
标签:负载 hash 请求 192.168 server nginx 算法 upstream 服务器

 

#1)轮询 (round-robin)
轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有 台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历。
特点:由于该算法中每个请求按时间顺序逐一分配到不同的服务器处理,因此适用于服务器性能相近的集群情况,其中每个服务器承载相同的负载。但对于服务器性能不同的集群而言,该算法容易引发资源分配不合理等问题。
配置样例:
upstream backserver {
server 192.168.0.10;
server 192.168.0.20;
}

#2)加权轮询(weight round robin)
为了避免普通轮询带来的弊端,加权轮询应运而生。在加权轮询中,每个服务器会有各自的 weight。一般情况下,weight 的值越大意味着该服务器的性能越好,可以承载更多的请求。该算法中,客户端的请求按权值比例分配,当一个请求到达时,优先为其分配权值最大的服务器。
特点:加权轮询可以应用于服务器性能不等的集群中,使资源分配更加合理化。
配置样例:
upstream backserver {
server 192.168.0.10 weight=10;
server 192.168.0.20 weight=20;
}

#3)源地址hash(ip_hash)
ip_hash 依据发出请求的客户端 IP 的 hash 值来分配服务器,该算法可以保证同 IP 发出的请求映射到同一服务器,或者具有相同 hash 值的不同 IP 映射到同一服务器。
特点:该算法在一定程度上解决了集群部署环境下 Session 不共享的问题。实际应用中,我们可以利用 ip_hash,将一部分 IP 下的请求转发到运行新版本服务的服务器,另一部分转发到旧版本服务器上,实现灰度发布。再者,如遇到文件过大导致请求超时的情况,也可以利用 ip_hash 进行文件的分片上传,它可以保证同客户端发出的文件切片转发到同一服务器,利于其接收切片以及后续的文件合并操作。
配置样例:
upstream backserver {
ip_hash;
server 192.168.0.10;
server 192.168.0.20;
}

#4)目的Url hash(url_hash)
url_hash 是根据请求的 URL 的 hash 值来分配服务器。该算法的特点是,相同 URL 的请求会分配给固定的服务器,当存在缓存的时候,效率一般较高。
配置样例:
upstream backserver {
hash $request_uri;
hash_method crc32;
server 192.168.0.10;
server 192.168.0.20;
}

#5)最少连接数(least_conn)
假设共有n台服务器,当有新的请求出现时,遍历服务器节点列表并选取其中连接数最小的一台服务器来响应当前请求。连接数可以理解为当前处理的请求数。
配置样例:
upstream backserver {
least_conn;
server 192.168.0.10;
server 192.168.0.20;
}

#6)最快响应时间(fair)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
配置样例:
upstream backserver {
fair;
server 192.168.0.10;
server 192.168.0.20;
}

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

 

标签:负载,hash,请求,192.168,server,nginx,算法,upstream,服务器
From: https://www.cnblogs.com/tanll/p/17746385.html

相关文章

  • Lnton羚通视频分析算法开发平台监控区域自动识别人员闯入行为 危险区域闯入算法预警系
    Lnton羚通的算法算力云平台是一款卓越的解决方案,具备出众的特点。它提供高性能、高可靠性、高可扩展性和低成本的优势,使用户能够高效地执行复杂计算任务。此外,该平台还提供广泛的算法库和工具,并支持用户上传和部署自定义算法,以增强平台的灵活性和个性化能力。危险区域闯入识别预警......
  • ClickHouse选择正确的join算法
    支持的JOIN类型 JOIN算法概览clickhouse提供了6种JOIN算法:1.直接连接(Directjoin)2.哈希连接(Hashjoin)3.并行哈希连接(Parallelhashjoin)4.优雅哈希连接(Gracehashjoin)5.全排序合并连接(Fullsortingmergejoin)6.部分合并连接(Partialmergejoin) 这......
  • 总结查看系统负载的几种命令,总结top命令的指标大概什么含义
    [12:57:20root@centos8~]#uptime12:57:22up2min, 1user,loadaverage:0.12,0.15,0.07​12:57:22up2min系统当前时间12:57:22,up表示系统运行的状态,开机运行了2分钟​1user一个用户登录系统​loadaverage:0.12,0.15,0.07 表示最近1,5,15分钟的系统负载情......
  • 输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
    [12:38:09root@centos8~]#bashsort.shbeforesort:1475626459133973060324422175901602255661082520888121022092421146668557255975852542867817400aftersort:3060328678264592442220888175901740016022147561339711466108259758924272......
  • 探索程序员需要掌握的算法?
    文章目录一:引言二:常见算法介绍三:重点算法总结......
  • 10.7算法
    将有序数组转换为二叉搜索树给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。 示例1:输入:nums=[-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]......
  • ATPG的D算法介绍
    ATPG算法实现测试向量自动化生成的算法,其中包含D算法、PODEM算法和FAN算法等。D算法为测试某一节点单固定故障,将其故障信息传递反映到输出中体现出来,我们把用穷举得出正确路径的方法称之为D算法。每个节点分为四种状态,1、0、X、D和D(-)。其中,X为0或1,意思是该节点值不影响最终......
  • 聊聊前端算法复杂度
    算法复杂度前端开发一般:重时间轻空间什么是复杂度程序执行时需要的计算量和内存空间(和代码简洁度无关)复杂度是数量级,不是具体的数字一般针对一个具体的算法,而非一个完整的系统时间复杂度程序执行时需要的计算量(cpu)O(1)一次就够"可数的",和输入量无关,无论输入量......
  • manacher 回文串处理算法
    忘了具体什么时候写的,应该是2023.8初这算是个算法复习,因为我太菜了以前学的都不会了。manacher回文串处理算法其实这个我已经看两天了却一直没有看懂,觉得自己很愚笨,结果发现是自己一直不想去理解吧,然后今天仔细研究了以后发现就是那么个东西,没有什么很深奥的东西,那就自己整......
  • 10 对比不同的优化算法
    importnumpyasnpimportmatplotlib.pyplotaspltimportscipy.ioimportmathimportsklearnimportsklearn.datasetsfromopt_utilsimportload_params_and_grads,initialize_parameters,forward_propagation,backward_propagationfromopt_utilsimportcomp......