1、轮询(Round Robin 默认)

请求在服务器之间均匀分布,并考虑服务器权重。默认情况下使用此方法

upstream backend {# 没有为循环指定负载平衡方法server backend1.example.com;server backend2.example.com;
}

2、 服务器权重

默认情况下,Nginx 使用 Round Robin 方法根据权重在组中的服务器之间分配请求。该指令的 weight 参数设置服务器的权重;默认是1:

upstream backend {server backend1.example.com weight=5;server backend2.example.com;server 192.0.0.1 backup;
}


在这个例子中,backend1.example.com有 weight 5;其他两台服务器有默认权重(1),但有 IP 地址的那台192.0.0.1被标记为 backup 服务器,除非其他两台服务器都不可用,否则不会接收请求。上述这种权重配置,每当有6请求,5个会发送到 backend1.example.com ,1个会发送到 backend2.example.com

3、最少连接(Least Connections )

请求被发送到活动连接数最少的服务器,其次考虑服务器权重:

upstream backend {least_conn;server backend1.example.com;server backend2.example.com;
}

4、IP Hash

请求发送到的服务器由客户端 IP 地址确定。在这种情况下,要么使用 IPv4 地址的前三个八位字节,要么使用整个 IPv6 地址来计算哈希值。该方法保证来自同一地址的请求到达同一服务器,除非它不可用。

upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;
}

如果其中一台服务器需要暂时从负载平衡轮换中移除,则可以使用down参数对其进行标记,以保留客户端 IP 地址的当前散列。由该服务器处理的请求会自动发送到组中的下一个服务器:

upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;server backend3.example.com down;
}

5、通用哈希

通用哈希- 请求发送到的服务器由用户定义的键确定,该键可以是文本字符串、变量或组合。例如,密钥可以是成对的源 IP 地址和端口,或 URI,如本例所示:

upstream backend {hash $request_uri consistent;server backend1.example.com;server backend2.example.com;
}

该指令的可选参数一致hash启用 ketama 一致性哈希负载平衡。请求根据用户定义的散列键值均匀分布在所有上游服务器上。如果将上游服务器添加到上游组或从上游组中删除,则仅重新映射少数键,从而在负载平衡缓存服务器或其他累积状态的应用程序的情况下最大限度地减少缓存未命中。

6、最短时间(Least Time)

最少的时间(Nginx Plus) - 对于每个请求,Nginx选择具有最低平均延迟和最低数量的活动连接,其中,最低平均延迟是根据以下哪一个参数计算得出的,以最短时间指令为准:

  • header:从服务器接收第一个字节的时间
  • last_byte:从服务器接收完整响应的时间
  • last_byte inflight:考虑到不完整的请求,从服务器接收完整响应的时间
upstream backend {least_time header;server backend1.example.com;server backend2.example.com;
}

7、Random

每个请求都将传递到随机选择的服务器。如果指定了两个参数,Nginx首先会考虑服务器权重随机选择两台服务器,然后使用指定的方法选择其中一台服务器:

  • least_conn:活动连接的最少数量
  • least_time=header(NGINX Plus):从服务器接收响应标头的最短平均时间( $upstream_header_time)
  • least_time=last_byte(NGINX Plus):从服务器接收完整响应的最小平均时间( $upstream_header_time)
upstream backend {random two least_time=last_byte;server backend1.example.com;server backend2.example.com;server backend3.example.com;server backend4.example.com;
}

的随机负载平衡方法应被用于在多个负载平衡器传递请求到相同组的后端分布式环境。对于负载均衡器可以查看所有请求的环境,请使用其他负载均衡方法,例如循环、最少连接和最少时间。

注意:当配置除 Round Robin 之外的任何方法时,将相应的指令(hash、ip_hash、least_conn、least_time、 或random)放在块中server指令列表的上方upstream {}。

注: Nginx Plus 是ngxin的商业版。

四、Nginx实现负载均衡的7种方式相关推荐

  1. nginx实现负载均衡的6种方式

    nginx实现负载均衡的6种方式 一.负载均衡 1.轮询 2.权重 3.ip_hash 4.最少连接least_conn nginx.conf配置文件内容详解 后续更新 一.负载均衡 nginx负载均 ...

  2. Nginx负载均衡的4种方式 :轮询-Round Robin 、Ip地址-ip_hash、最少连接-least_conn、加权-weight=n

    负载均衡的概念: Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法. 我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务 ...

  3. 【Nginx】实现负载均衡的几种方式

    要理解负载均衡,必须先搞清楚正向代理和反向代理. 正向代理与反向代理[总结] 注: 正向代理,代理的是用户. 反向代理,代理的是服务器 什么是负载均衡 当一台服务器的单位时间内的访问量越大时,服务器压 ...

  4. IIS Web负载均衡的几种方式

    Web负载均衡的几种实现方式 摘要: 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应 ...

  5. SpringCloud集群的搭建,分布式的实现,负载均衡的几种方式,路由,页面监听

    SpringCloud 服务注册与发现--Netflix Eureka 负载均衡: 客户端负载均衡--Netflix Ribbon 服务端负载均衡:--Feign(其也是依赖于Ribbon,只是将调用 ...

  6. nginx负载均衡的五种方式

    文章目录 前言 :负载均衡是什么 一.方式1:轮询 二.方式2:权重 方式3:iphash 方式4:最小连接 方式5:fair 总结:根据这几种方式可以猜测处nginx的底层使用了计数器,从而可以将海 ...

  7. nginx 负载均衡的4种方式

    A)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器; B)ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器.可以保证来自同一ip的请求被打到固定 ...

  8. 负载均衡的几种方式_负载均衡的几种方式

    负载均衡其实就是任务的分发,使得任务能按照你的预想分配到各个计算单元上,它能提高服务对外的性能,避免单点失效场景.这里要注意的一点是虽说叫负载均衡,但是有时候我们的分配算法就是不是均衡的. 比如配个n ...

  9. nginx配置负载均衡(史上最详细)

    所谓负载均衡就是:就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况. 一:nginx反向代理 实现负载均衡之前我 ...

最新文章

  1. ubuntu16 18 用着速度不错的apt源
  2. SQL获取所有数据库名、表名、储存过程以及参数列表
  3. DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...
  4. Android中的Fragment
  5. java元婴期(20)----java进阶(spring(4)---spring aop编程(全自动)AspectJ)
  6. SGU 294 He's Circles (polay计数)
  7. 教程:测试期间的日志记录
  8. 【Java学习笔记八】包装类和vector
  9. 大数据包围你我,技术人如何走知识分享之路
  10. 【Elasticsearch】Elasticsearch 中增加分片数量,聚合一定会变快吗?
  11. Web 设计师的 50 个超便利工具[下]
  12. 科隆OPTIFLUX2100W/4100C分体式电磁流量计维修
  13. Unity3D角色换装及换装编辑器
  14. Android WIFI列表搜索及无线热点的开启和关闭
  15. 富媒体超级短信(多媒体短信、视频短信)亮点、应用场景
  16. python股票交易接口源代码分享
  17. Vim插件管理:Pathogen安装
  18. Vue+antd中关于发送请求时候的Loading遮罩层闪烁无法覆盖问题
  19. modprobe ipmi_si报错问题
  20. 青云志 java_青云志手游纯手工架设含本地注册教程

热门文章

  1. 【方法】树莓派小车自动循迹(摄像头)
  2. 坚果云android功能,坚果云-安卓版5大新功能,一次性解锁!
  3. 十分钟教你打造一个微信语音点歌系统
  4. matlab读取八叉树,基于改进型八叉树分解的三维超声图像数据抽样方法
  5. 查看windows操作系统的默认编码(字符集)-chcp
  6. iphone丢了以后发现关机了怎么办?
  7. springboot bean生命周期
  8. 一分钟掌握js中的map方法
  9. 辉太郎看前端(博客目录导航)
  10. Java中将字符类型转换成各种类型