当前位置:首页 » 密码管理 » nginx均衡负载访问量

nginx均衡负载访问量

发布时间: 2024-08-01 13:01:50

A. nginx璐熻浇鍧囱 绛栫暐

浜у搧鍨嫔彿锛歍hinkpad E15
绯荤粺鐗堟湰锛歝entos8
nginx璐熻浇鍧囱绛栫暐
Nginx璐熻浇镄5绉岖瓥鐣ヨ剧疆鏂规硶锛
1銆佽疆璇锛堥粯璁わ级
姣忎釜璇锋眰鎸夋椂闂撮‘搴忛愪竴鍒嗛厤鍒颁笉钖岀殑钖庣链嶅姟鍣锛屽傛灉钖庣链嶅姟鍣╠own鎺夛纴鑳借嚜锷ㄥ墧闄ゃ
upstream backserver {
server 192.168.1.62;
server 192.168.1.64;
}
2銆佹寚瀹氭潈閲
鎸囧畾杞璇㈠嚑鐜囷纴weight𨱒冮吨澶у皬鍜岃块梾姣旂巼鎴愭f瘆锛岀敤浜庡悗绔链嶅姟鍣ㄦц兘涓嶅潎镄勬儏鍐点
upstream backserver {
server 192.168.1.62 weight=1;
server 192.168.1.64 weight=2;
}
3銆乮p_hash
姣忎釜璇锋眰锛屾寜璁块梾ip镄删ash缁撴灉杩涜屽垎閰嶏纴杩欐牱姣忎釜璁垮锛屼细锲哄畾璁块梾钖屼竴涓钖庣链嶅姟鍣锛屽彲浠ヨВ鍐硈ession镄勯梾棰樸
upstream backserver {
ip_hash;
server 192.168.1.62:80;
server 192.168.1.64:80;
}
4銆乫air
鎸夊悗绔链嶅姟鍣ㄧ殑鍝嶅簲镞堕棿𨱒ュ垎閰嶈锋眰锛屽搷搴旀椂闂寸煭镄勪紭鍏埚垎閰嶃
upstream backserver {
server server1;
server server2;
fair;
}
5銆乽rl_hash
鎸夎块梾url镄删ash缁撴灉𨱒ュ垎閰嶈锋眰锛屼娇姣忎釜url瀹氩悜鍒板悓涓涓钖庣链嶅姟鍣锛屽悗绔链嶅姟鍣ㄤ负缂揿瓨镞舵瘆杈冩湁鏁堛
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
镐荤粨锛歂ginx璐熻浇镄5绉岖瓥鐣ヨ剧疆鏂规硶锛
1. 杞璇锛堥粯璁わ级
2. 鎸囧畾𨱒冮吨
3. IP缁戝畾 ip_hash
4. fair
5. url_hash

B. nginx如何实现负载均衡、限流、缓存、黑白名单和灰度发布

1.负载均衡配置

2.失败重试配置

在fail_timeout时间内失败了max_fails次请求后,认为上游服务器不可用,就会将服务地址剔除掉,fail_timeout时间后会再次将服务器加入存活列表进行重试。

limit_req_zone指令设置参数

参数说明

limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。

Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,例子区域可以存储160000个IP地址。

Rate定义最大请求速率。示例中速率不能超过每秒10个请求。

设置限流

burs排队大小,nodelay不限制单个请求间的时间。具体使用可以查看高并发场景如何使用nginx实现限流-实战篇

不限流白名单

该配置说明 192.168.1.0/24网段的ip访问是不限流的,其它限流。ip后面数字的含义

24表示子网掩码:255.255.255.0

16表示子网掩码:255.255.0.0

8表示子网掩码:255.0.0.0

1.浏览器缓存 静态资源缓存用expire

Response Header中添加了Expires和Cache-Control

所谓的静态资源一般包括一直不变的图像,如网站的logo,js、css静态文件还有可下载的内容,媒体文件

协商缓存(add_header ETag/Last-Modified value)包括html文件,经常替换的图片,经常需要修改的js、css文件和基本不变的api接口

不需要缓存包括用户隐私等敏感数据,用户经常变动的api接口

2.代理层缓存

在本地磁盘创建一个文件目录,根据我们的配置把请求资源以k(key自定义,这边用url的hash值)->v形式缓存到目录里,并根据需求对内容设置缓存时长,比如状态码为200缓存10分钟,其余的缓存1分钟等待。要清理缓存可以借助purger的功能。如果ab测试/个性化需求时应禁用浏览器缓存,否则会因为缓存导致误差。

方式一

方式二 lua+redis动态黑名单(openresty)

配置(/usr/local/openresty/nginx/conf/nginx.conf)

lua脚本编写(ip_blacklist.lua)

1.根据cookie实现灰度发布

根据cooke查询version值,根据version跳转到对应的host,如果没有匹配上的就跳转到默认配置。

2.根据来路ip实现灰度发布

C. 使用Nginx实现负载均衡

一、负载均衡的作用

1、转发功能

按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。

2、故障移除

通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。

3、恢复添加

如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。

二、Nginx实现负载均衡

1、源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

2、轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

3、随机法:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。

4、加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。

5、加权随机法:与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。

6、最小连接数法:由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。

三、配置说明

四、轮询

五、权重

六、iphash

七、最少链接

八、fair

九、完整代码

十、也可以使用域名

D. 13《Nginx 入门教程》Nginx负载均衡(下)

这一小节中,我们将实战 Nginx 的四层和七层负载均衡功能。条件有限,使用一台公网主机,在上面搭建好 Nginx 服务。公网 IP 为 180.76.152.113。

首先会进行简单的四层负载均衡实验,不会涉及多种负载均衡算法,只使用默认的 Round-Robin算法。在后续的七层负载均衡实验中,会重点测试不同的负载均衡策略,完成相关实验。

首先在 nginx.conf 中添加如下 stream 指令块配置:

上述配置用端口3000和3001模拟两个上游服务器,然后在 upstream 指令块中指定这两个上游服务器的地址,同时给第一个设置权重为2。由于默认采用的是加权的 Round-Robin 算法,默认服务器的权重为1。设置为2,表明3次请求中,2次会转发到3000端口,一次会转发到3001端口,下面的测试也验证了这一点。

和四层的配置其实差不多,在七层中除了测试最基本的,我们还将测试前面提到的几种负载均衡策略,进一步熟悉 Nginx 中的负载均衡配置。

在 nginx.conf 中添加如下的 http 指令块:

上述配置中,我们用8000,8001和8002三个端口模拟了3个上游服务器,默认使用轮询负载均衡算法,而且三个的权重均为1。进行如下的 http 请求操作,可以看到 Nginx 转发 http 请求会均匀地分配到3个服务器上。

我们打开 ip_hash 指令的注释,这个时候默认是使用客户端的 ip 地址作为 hash 的 key,然后重启 Nginx 服务并进行如下的命令行操作:

接下来,注释 ip_hash 指令,我们打开 hash user_$arg_username 这行配置的注释, hash 指令可以让我们根据我们设置的 key 进行 hash,然后根据 hash 值选择上游的服务器。具体测试参看下面的 Linux 命令:

这里我们可以看到,在请求中带上 username 参数,Nginx 中配置的 hash 算法会根据请求中带的 username 参数作为 key 去进行 hash,然后在根据 hash 结果映射上游服务器。username 相同时,选择的上游服务器肯定是一样的,只有在 username 的值发生变化时,返回的响应才可能有变化。

今天我们完成了几个测试实验,主要是针对 Nginx 的四层和七层的负载均衡功能进行了测试。这个功能在微服务部署中会有较多的应用。因为高流量企业为保证服务的高可用性,往往会水平扩展多个相同功能的服务,部署在多台主机上,这个时候负载均衡技术就能派上用场了,而 Nginx 提供了完善的负载均衡功能以及多种负载均衡算法,能满足大部分企业的需求,如果还不够,可以通过编写内部开发模块并集成到 Nginx,实现相应的需求。所以说 Nginx 是非常值得学习和深入研究的。

热点内容
php上传xls 发布:2024-11-25 11:01:46 浏览:678
formphp 发布:2024-11-25 11:01:45 浏览:553
数据库主表 发布:2024-11-25 10:54:13 浏览:228
什么是cf脚本 发布:2024-11-25 10:51:48 浏览:920
存储台设计 发布:2024-11-25 10:40:04 浏览:668
如何查看自己电脑的所有配置 发布:2024-11-25 10:14:02 浏览:771
java编译器伪编译指什么 发布:2024-11-25 10:08:53 浏览:961
amax服务器默认地址 发布:2024-11-25 10:07:20 浏览:318
甘肃省浪潮服务器云服务器 发布:2024-11-25 10:07:17 浏览:522
android手环 发布:2024-11-25 10:03:55 浏览:163