nginx负载均衡的方法
1. Nginx负载均衡?nginx负载均衡策略,并利用nginx对应用服务器的负载均衡集群搭建。
在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。
在upstream模块配置完成后,要让指定的访问反向代理到服务器列表:
#其他页面反向代理到tomcat容器
location ~ .*$ {
index index.jsp index.html;
proxy_pass http://dynamic_zuoyu; }
1、轮询
最基本的配置方法,上面的例子就是轮询的方式,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。
fail_timeout 与max_fails结合使用。
max_fails : 设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了。
fail_time:服务器会被认为停机的时间长度,默认为10s。
Backup:标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
down:标记服务器永久停机了
注意: 在轮询中,如果服务器down掉了,会自动剔除该服务器。 缺省配置就是轮询策略。 此策略适合服务器配置相当,无状态且短平快的服务使用。
2、weight
权重方式,在轮询策略的基础上指定轮询的几率。例子如下:
#动态服务器组
upstream dynamic_zuoyu {
server localhost:8080 weight=2; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082 backup; #tomcat 8.5
server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
}
在该例子中,weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比,比如Tomcat 7.0被访问的几率为其他服务器的两倍。
注意:
- 权重越高分配到需要处理的请求越多。
- 此策略可以与least_conn和ip_hash结合使用。
- 此策略比较适合服务器的硬件配置差别比较大的情况。
3、ip_hash
指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
#动态服务器组
upstream dynamic_zuoyu {
ip_hash; #保证每个访客固定访问一个后端服务器
server localhost:8080 weight=2; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
}
注意:
- 在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
- ip_hash不能与backup同时使用。
- 此策略适合有状态服务,比如session。
- 当有服务器需要剔除,必须手动down掉。
4、least_conn
把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
#动态服务器组
upstream dynamic_zuoyu {
least_conn; #把请求转发给连接数较少的后端服务器
server localhost:8080 weight=2; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082 backup; #tomcat 8.5
server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
}
注意:此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。
5、第三方策略
第三方的负载均衡策略的实现需要安装第三方插件。
①fair
按照服务器端的响应时间来分配请求,响应时间短的优先分配。
#动态服务器组
upstream dynamic_zuoyu {
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
fair; #实现响应时间短的优先分配
}
②url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。
#动态服务器组
upstream dynamic_zuoyu {
hash $request_uri; #实现每个url定向到同一个后端服务器
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
}
总结:
以上便是6种负载均衡策略的实现方式,其中除了轮询和轮询权重外,都是Nginx根据不同的算法实现的。在实际运用中,需要根据不同的场景选择性运用,大都是多种策略结合使用以达到实际需求。
转载于:https://www.cnblogs.com/wyf-love-dch/p/11552619.html
nginx负载均衡的方法相关推荐
- Nginx负载均衡的详细配置及使用案例
Nginx负载均衡的详细配置及使用案例详解 感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. ...
- Nginx负载均衡配置实例详解
负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...
- Nginx负载均衡:分布式/热备Web Server的搭建
Nginx是一款轻量级的Web server/反向代理server及电子邮件(IMAP/POP3)代理server.并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开 ...
- 解决nginx负载均衡高可用keepalived只针对物理机的问题
在高可用keepalived软件,在默认的情况下仅仅在对方机器宕机或keepalived停掉的时候才会接管业务. 但是在实际工作过程中,例如在nginx负载均衡工作实例中,nginx服务已停止,而ke ...
- Nginx负载均衡配置实例详解(转)
| 时间:2013-09-05 20:19:17 | 阅读数:810738 [导读] 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的 ...
- linux window nginx性能,Nginx负载均衡搭建(Window与Linux)
windows上搭建nginx负载均衡 1.准备几台http服务器软件,这里选用一台apache一台tomcat apache(windows)下载链接:https://www.apachehaus. ...
- nginx负载均衡的简单实现
负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...
- nginx负载均衡与反向代理
[1]负载均衡 1)问题:如何在多个网络设备或服务器之间实现合理的业务量分配,使之不会出现一台设备过忙,而其他设备却没有充分使用的情况. 2)解决方法:要解决这一问题,可以采用负载均衡的方法: 3)负 ...
- Nginx负载均衡配置和健康检查
Nginx负载均衡配置和健康检查 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. nginx的强大之处不必要我细说,当初第一次接触ngin ...
- nginx负载均衡 加权轮询和ip_hash
下面给大家总结了几种真正的nginx负载均衡的功能了,在此我们加了一个权重判断法就是根据nginx负载的状态实现分配访问用户到权重值少的机器了,具体配置如下. nginx为后端web服务器(apach ...
最新文章
- 小程序门店自提功能开启,酷客多带你玩转O2O模式
- windows核心编程之进程间共享数据
- 如何自学python数据分析-良心整理!学习Python数据分析的正确姿势
- WinAPI: GetWindow - 获取与指定窗口具有指定关系的窗口的句柄
- python程序代码是什么_python编程:下列代码表示什么含义
- 微软发布Azure Functions、Service Fabric和IoT Starter Kits新服务
- Android之通过ContentResolver获取手机图片和视频的路径和生成缩略图和缩略图路径
- P2168 [NOI2015] 荷马史诗(哈夫曼编码树)
- 《JSON笔记之三》---postman中传入json串
- plc有与计算机的通讯请求时,OMRON PLC网络Ethernet网_OMRON PLC与上位计算机之间的通信_OMRON PLC与上位计算机通信程序-维库电子通...
- 用Instant client批量安装Oracle客户端-安装配置
- getUpdateCount成员函数不能返回正确数量
- 从零开始搭建自己的网站四:博客网站模板下载
- SEO为什么一定要面面俱到?
- 1000+份计算机paper,卡耐基梅隆大学,芝加哥大学,facebook,google,微软,twitter等大牛一作,持续更新中...
- html调用ckplayer说明,CKplayer功能配置(示例代码)
- 2021年国家统计局发布全国统计用区划代码和城乡划分代码
- 今日头条秋招前端笔试附加题解题思路
- matlab 如何读取二进制、十六进制txt文档
- Problem fzu 2027 单词问题
热门文章
- mysql 创建数据库文件_mysql数据库的文件创建方式 - mysql数据库栏目 - 自
- 【Listener】监听器基础
- mysql/mariadb 安装开启spinx引擎
- windows10防Linux,用户禁用Defender提升Win10 Linux子系统性能
- java 2d 图形_Java学习笔记--Swing2D图形
- 解决(Missing artifact com.oracle:ojdbc14:jar:11.2.0.4.0)
- 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_08.RequestMapping注解的作用
- 今天突然出现了Property IsLocked is not available for Login '[sa]',我太阳,下面有绝招对付它!...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_6_字符输出流写数据的其他方法...
- el-dialog 一些问题 局中滚动