nginx负载均衡均匀策略如何配置
‘壹’ nginx在做负载均衡时如何配置nginx的负载均衡怎么配置
1. 今天的演示将涉及一个简单的架构,其中包括一台前端web服务器和两台后端服务器node1与node2。这些服务器的IP地址分别为:web:192.168.1.210,node1:192.168.1.211,node2:192.168.1.212。
2. 在后端的node1和node2上,我们配置了不同的网站内容,以便于测试。为了便于区分,两个网站的主页都被修改为特定的内容。
3. 配置好前端web服务器的负载均衡设置。首先,在默认的nginx配置文件中,通过添加http块内的upstream指令,定义了名为backend的负载均衡集群,并记录下这个名称。
4. 接下来,编辑默认的server配置文件,将所有指向192.168.1.210的流量代理到backend集群。
5. 保存配置文件后,使用nginx -t命令测试配置的正确性,确保nginx能够正常启动。
6. 启动nginx后,通过浏览器访问web服务器的IP地址,可以观察到请求在node1和node2之间轮询分配,实现了基本的负载均衡。
7. 若要实现加权轮询,可以为不同的后端服务器设置不同的权重。权重值越高,该服务器接收的请求就越多。设置权重后,需使用nginx -t测试配置,并通过nginx -s reload命令应用新配置。
8. 对于统计访问次数,可以使用httpd-tools软件包中的ab命令进行压力测试。执行ab -n 1000 -c 50 http://localhost命令,在node1上进行测试。
9. 登录到后端服务器,使用grep ApacheBench access.log | wc命令来统计由ab命令产生的访问记录。
10. 分析node1和node2上的日志,可以发现虽然未严格达到5:2的权重比例,但流量分配已非常接近,验证了配置的有效性。
‘贰’ nginx作为负载均衡服务(轮询策略与加权轮询)
Nginx作为负载均衡服务,主要通过轮询和加权轮询策略实现服务器间的请求调度。首先,以轮询方式为例:
1. 在192.168.3.11虚拟机上,模拟三台应用服务器,每个服务器对应一个index.html页面,分别在code1、code2和code3目录下创建。
2. 在/etc/nginx/conf.d/目录下创建server1、server2和server3的配置文件,分别配置不同服务器的端口和访问路径。
3. 启动Nginx服务,检查并重新加载配置,确保无误后,通过浏览器分别访问192.168.3.11的三个端口。
对于加权轮询,同样在192.168.3.11上模拟三台服务器,但在负载均衡服务器192.168.3.10上,配置upstream_server.conf文件,赋予各服务器不同的权重。例如,server1的权重设为3,刷新浏览器5次,可以看到server1的页面被访问3次。
‘叁’ 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