前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx负载均衡算法有哪些_dubbo负载均衡算法

nginx负载均衡算法有哪些_dubbo负载均衡算法

作者头像
全栈程序员站长
发布2022-11-04 11:57:49
6200
发布2022-11-04 11:57:49
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

前言: 在 nginx 中,我们通过 upstream 命令来实现的,由 ngx_http_upstream_module 模块提供支持。

nginx 负载均衡算法

  • 1:轮询(默认) 每个请求按照时间顺序逐一分配到下游的服务节点,如果其中某一节点故障,nginx 会自动剔除故障系统使用户使用不受影响。
  • 2.权重(weight) 在配置文件中对下游的服务节点指定权重值 weight, weight 值越大则被分配的评率越高,一般这种负载均衡,用于节点的配置情况不一样,有的可能配置高,有的配置低。
  • 3.ip_hash 对每个请求,针对 ip 进行 hash, 然后分配到后台节点,这样一来,同一 ip 会被固定分配到下游固定服务上。它能够暂时的解决集群环境中容器之间 session 共享的问题,但是不是解决的根本之道,只是权宜之策,我们试想,如果访问的好好的,家里的路由器被重启了,或者运营商分配给你的 ip 地址改变了,那么你再次访问的时候,新的 ip 就可能被分配到新的服务上,之前的 session 也就失效了。
  • 4.least_conn (最少连接调度算法) 最少连接调度算法,对下游服务中连接情况,优先选择连接数最少的服务分配。
  • 5.least_time (最小响应时间) 最小响应时间, 计算节点平均响应时间,然后取响应最快的那个,分配更高权重。

upstream 中可附加指令

  • down,表示当前的 server 不参与负载均衡。
  • backup, 预留的备份机,当其他所有非 backup 的机器出现故障或者忙的时候,才会请求 backup 机器,因此这台机器的压力最轻。
  • max_fails,允许请求失败的次数,默认为 1,当超过最大次数时,返回 proxy_next_upstream 模块定义的错误。
  • fail_timeout, 在经历了 max_fails 次失败后,暂停服务的时间,max_fails 可以和 fail_timeout 一起使用。
  • keepalive 连接数 N; 为每个 worker 进程保留的空闲的长连接数量, 可节约 nginx 端口,并减少连接管理的消耗

如何配置?

  • 轮询负载
代码语言:javascript
复制
upstream webserver { 
   
				server 192.168.214.133:80 max_fails=3 fail_timeout=30s;
				server 192.168.214.187:80 max_fails=3 fail_timeout=30s;
		}

测试:

代码语言:javascript
复制
[root@nfs ~]# for i in { 
   1..10};do curl www.a.com/index.html;done
web server 1 page
web server 2 page
web server 1 page
web server 2 page
web server 1 page
web server 2 page
web server 1 page
web server 2 page
web server 1 page
web server 2 page
  • 加权轮询
代码语言:javascript
复制
upstream webserver { 
   
		 server 192.168.214.133:80 weight=3 max_fails=3 fail_timeout=30s;
		 server 192.168.214.187:80 max_fails=3 fail_timeout=30s;
		}

测试:

代码语言:javascript
复制
[root@nfs ~]# for i in { 
   1..10};do curl www.a.com/index.html;done
web server 2 page
web server 1 page
web server 1 page
web server 1 page
web server 2 page
web server 1 page
web server 1 page
web server 1 page
web server 2 page
web server 1 page
  • ip_hash
代码语言:javascript
复制
upstream webserver { 
   
				ip_hash;
				server 192.168.214.133:80 max_fails=3 fail_timeout=30s;
				server 192.168.214.187:80 max_fails=3 fail_timeout=30s;
		}

测试:

代码语言:javascript
复制
[root@nfs ~]# for i in { 
   1..10};do curl www.a.com/index.html;done
web server 2 page
web server 2 page
web server 2 page
web server 2 page
web server 2 page
web server 2 page
web server 2 page
web server 2 page
web server 2 page
web server 2 page
  • least_conn 最少连接
代码语言:javascript
复制
upstream webserver { 
   
				least_conn;
				server 192.168.214.133:80 weight=3 max_fails=3 fail_timeout=30s;
				server 192.168.214.187:80 max_fails=3 fail_timeout=30s;
		}

测试:

代码语言:javascript
复制
[root@nfs ~]# for i in { 
   1..10};do curl www.a.com/index.html;done
web server 1 page
web server 1 page
web server 2 page
web server 1 page
web server 1 page
web server 1 page
web server 2 page
web server 1 page
web server 1 page
web server 1 page

原文地址:https://www.exception.site/article/20

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nginx 负载均衡算法
  • upstream 中可附加指令
  • 如何配置?
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档