网站首页 > 精选教程 正文
Nginx不仅可以作为一个Web服务器或反向代理服务器,还可以按照权重,轮询,IP Hash,URL Hash等多种方式实现对后端服务器的负载均衡。
一、什么是负载均衡
负载均衡(load balance)就是负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。
二、负载均衡的配置
通过Nginx中的upstream指令可用实现负载均衡,在该指令中能够配置负载服务器组,目前负载均衡有4中典型的配置方式,分别是轮询,权重,ip_hash,以及利用第三方模块的方式。
轮询方式:负载均衡默认设置方式,每个请求安装时间顺序逐一分配到不同的后端服务器进行处理,如果有服务器宕机,会自动删除。
权重方式:利用weight指定轮询的权重比率,与访问率成正比,用于后端服务器性能不均的情况。
ip_hash方式:每个请求按访问IP的hash结果分配,这样可以使每个访客固定访问一个后端服务器,可以解决Session共享的问题。
第三方模块:第三方模块采用fair时,按照每台服务器的响应时间来分配请求,响应时间短的优先分配;若第三方模块采用url_hash时,按照访问url的hash值来分配请求。
在upstream指定的服务器组中,若每个服务器的权重都设置为1(默认值)时,表示当前的负载均衡是一般轮询方式。
Nginx本身不包含第三方模块的实现方式,如fair或url_hash等,在使用时必须下载对应的upstream_fair模块或安装hash软件包,才可以实现第三方模块提供的负载均衡配置。
1、一般轮询负载均衡
1)、准备3台虚拟机并全部安装Nginx,一台Nginx服务,另外两台作为Web服务器。
2)、配置一般轮询负载均衡
upstream指令后的web_server表示代理的服务器主机名。
通过test.ng.test访问网站发现请求的服务ip在32和33之间变化,说明负载均衡服务器根据每个请求按照实际顺序逐一分配到32和33两台服务器。
可以在模拟其中一台宕机。
2、加权轮询负载均衡
如果负载均衡服务器组中的服务器硬件配置强弱不一,可以通过weight参数配置权重大小。
修改upstream配置:
weight参数表示权值,权值越高则被分配到的概率越大,在负载均衡的过程中,Nginx将按照平滑加权轮询算法进行具体分配。其中,权值总和为一个循环,这里的配置是以4次请求为一个循环,在循环过程中,服务器32会在4次请求中被分配到1次,33服务则会被分配到3次,但是这3次被选取的机会并不会连续执行,而是按照算法分散执行。
负载均衡调度中的状态常用的参数说明:
max_fails:允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream指令定义的错误。
fail_timeout:在经历了max_fails次失败后,暂停服务的时间,且在实际应用中max_fails一般与fail_timeout一起使用。
backup:预留的备份机器。
down:表示当前的server暂时不参与负载均衡。
关闭32和33服务后在访问test.ng.test可以发现服务器请求到了34服务器,
这说明备份服务器已经开始工作。
3、ip_hash负载均衡
ip_hash方式的负载均衡,是将每个请求按照访问IP的hash结果分配,这样就可以使用来自同一个IP的客户端用户固定访问一台Web服务器,这样侧面可以解决session共享问题。
上述配置中,upstream块中的ip_hash指令用于标识当前负载均衡的处理方式。其中对于一个暂时性宕机的服务器,可以使用down参数标识出来,这样的负载均衡时,就会忽略该服务器的分配。
需要注意的是,在使用ip_hash方式处理负载均衡时,Web服务器在负载均衡列表中的状态不能使用weight和backup设置。
再次访问test.ng.test:
为了验证可以在服务器32中执行如下命令查看连接数:netstat -n | grep :80 | wc -l,刷新后连接数会增加。
由于ip_hash方式为每一个用户IP绑定一个Web服务器处理,将会导致某些Web服务器接收的请求多,某些Web服务器请求少,无法保证Web服务器的负载均衡,建议只有在必要的时候使用这种方式。
4、利用第三方模块
第三方提供的方式有多种,下面以fair方式为例,安装Web服务器的响应时间实现负载均衡,响应时间断短的优先分配。
1)、备份安装的Nginx
由于使用第三方模块需要重新编译Nginx,所以在之前需要关闭已经开启的Nginx进程,对已经安装好的Nginx进行备份,以便恢复。
2)、重新编译安装Nginx
在开源软件平台GitHub中可以获取fair模块,下载nginx-upstream-fair-master.zip模块文件到root目录下,然后将其解压并重命名为nginx-upstream-fair;
解压:unzip nginx-upstream-fair-master.zip
编译安装nginx-upstream-fair模块的支持:
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/root/nginx-upstream-fair
编译安装是出现如下错误:
解决问题方法:
修改:/data/soft/nginx-1.13.11/src/http/ngx_http_upstream.h,增加:in_port_t default_port
重新make && make install即可
修改upstream配置,重启服务按照其他方式访问域名
上篇:9、Nginx反向代理
猜你喜欢
- 2024-10-03 nginx 负载均衡的方式详解 nginx负载均衡几种方式
- 2024-10-03 Nginx 负载均衡算法与实例详解 nginx负载均衡算法有哪些
- 2024-10-03 详解Nginx负载均衡的4种方案 详解nginx负载均衡的4种方案是什么
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)