10、Nginx负载均衡

作者 : 开心源码 本文共2342个字,预计阅读时间需要6分钟 发布时间: 2022-05-11 共96人阅读

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)、配置一般轮询负载均衡

10、Nginx负载均衡

upstream指令后的web_server表示代理商的服务器主机名。

通过test.ng.test访问网站发现请求的服务ip在32和33之间变化,说明负载均衡服务器根据每个请求按如实际顺序逐一分配到32和33两台服务器。

10、Nginx负载均衡

10、Nginx负载均衡

能在模拟其中一台宕机。

2、加权轮询负载均衡

假如负载均衡服务器组中的服务器硬件配置强弱不一,能通过weight参数配置权重大小。

修改upstream配置:

10、Nginx负载均衡

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服务器,

这说明备份服务器已经开始工作。

10、Nginx负载均衡

3、ip_hash负载均衡

ip_hash方式的负载均衡,是将每个请求按照访问IP的hash结果分配,这样即可以用来自同一个IP的用户端使用户固定访问一台Web服务器,这样侧面能处理session共享问题。

10、Nginx负载均衡

上述配置中,upstream块中的ip_hash指令使用于标识当前负载均衡的解决方式。其中对于一个暂时性宕机的服务器,能用down参数标识出来,这样的负载均衡时,就会忽略该服务器的分配。

需要注意的是,在用ip_hash方式解决负载均衡时,Web服务器在负载均衡列表中的状态不可以用weight和backup设置。

再次访问test.ng.test:

10、Nginx负载均衡

为了验证能在服务器32中执行如下命令查看连接数:netstat -n | grep :80 | wc -l,刷新后连接数会添加。

10、Nginx负载均衡

因为ip_hash方式为每一个使用户IP绑定一个Web服务器解决,将会导致某些Web服务器接收的请求多,某些Web服务器请求少,无法保证Web服务器的负载均衡,建议只有在必要的时候用这种方式。

4、利使用第三方板块

第三方提供的方式有多种,下面以fair方式为例,安装Web服务器的响应时间实现负载均衡,响应时间断短的优先分配。

1)、备份安装的Nginx

因为用第三方板块需要重新编译Nginx,所以在之前需要关闭已经开启的Nginx进程,对已经安装好的Nginx进行备份,以便恢复。

10、Nginx负载均衡

2)、重新编译安装Nginx

在开源软件平台GitHub中能获取fair板块,下载nginx-upstream-fair-master.zip板块文件到root目录下,而后将其解压并重命名为nginx-upstream-fair;

解压:unzip nginx-upstream-fair-master.zip

10、Nginx负载均衡

编译安装nginx-upstream-fair板块的支持:

./configure –prefix=/usr/local/nginx –with-http_ssl_module –add-module=/root/nginx-upstream-fair

10、Nginx负载均衡

编译安装是出现如下错误:

10、Nginx负载均衡

处理问题方法:

修改:/data/soft/nginx-1.13.11/src/http/ngx_http_upstream.h,添加:in_port_t default_port

10、Nginx负载均衡

重新make && make install就可

10、Nginx负载均衡

修改upstream配置,重启服务按照其余方式访问域名

10、Nginx负载均衡

上篇:9、Nginx反向代理商

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 10、Nginx负载均衡

发表回复