在负载反向代理的算法上,共有五种:轮询、ip_hash、weight、fair(第三方)、url_hash(第三方)
轮询是默认的,每一个请求按顺序逐一分配到不同的后端服务器,如果后端服务器down掉了,则能自动剔除。(如果又存活了,能自动加进来吗?)
配置文件如下:
upstream test {
server 192.168.109.5:81;
servse 192.168.109.3:80;
}
测试结果:
[root@xxw conf]# for i in $(seq 10); do curl http://192.168.109.4 ;done
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
weight是设置权重,用于后端服务器性能不均的情况,访问比率约等于权重之比
配置文件:
upstream test {
server 192.168.109.5:81 weight=1;
servse 192.168.109.3:80 weight=5;
}
测试结果:
[root@xxw conf]# for i in $(seq 10); do curl http://192.168.109.4 ;done
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
测试结果一直是访问这个1次,再访问那个5次,反复循环。
ip_hash 解决了session问题:每个请求按访问IP的hash结果分配,这样每个访客可以固定一个后端服务器。
配置文件:
upstream test {
ip_hash;
server 192.168.109.5:81;
servse 192.168.109.3:80;
}
测试结果:
[root@xxw conf]# for i in $(seq 10); do curl http://192.168.109.4 ;done
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
fair (第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。
配置文件:
upstream test {
server 192.168.109.5:81;
servse 192.168.109.3:80;
fair;
}
url_hash (第三方) 按访问URL的hash结果来分配请求,使每个URL定向到同一个后端服务器,后端服务器为缓存时比较适用。另外,在upstream中加入hash语句后,server语句不能写入weight等其他参数。
配置文件:
upstream test {
server squidIP1:3128;
servse squidIP2:3128;
hash $request_uri;
hash_method crc32;
}
upstream test {
ip_hash;
server 192.168.109.5:81;down
servse 192.168.109.4:80 weight=2 max_fails=2 fail_timeout=30s;
servse 192.168.109.3:80 backup;
}
#down 暂时不参与负载
#weight 权重
#max_fail 允许请求失败的次数,默认为1
#fail_timeout max_fail次失败后,暂停的时间
#backup 所有其他非backup机器down或者忙的时候,才请求backup。所以这台机器压力最轻。
location / {
proxy_pass http://test /; #将请求传到负载服务器池
}
root 指令:指定目录
proxy_pass proxy_store proxy_cache :实现缓存代理
expires 指定缓存时间
原文:http://1234567aaa.blog.51cto.com/373182/317802
相关推荐
基于lua的nginx自定义负载均衡基于lua的nginx自定义负载均衡
总之,使用Nginx实现负载均衡是一种高效且经济的方式,它可以帮助站长在不增加过多硬件资源的情况下提升网站的承载能力,实现高可用和高并发处理,从而满足更多的用户访问需求。在实际应用中,它不仅可以减轻服务器...
原生的nginx不支持真正的udp负载均衡(无法使用upstream的check模块),该版本可以支持udp的负载均衡。具体安装方法可参考博客(https://blog.csdn.net/weixin_42114013/article/details/102581226)
常见的负载均衡算法有很多,下面将对几种典型的负载均衡算法进行介绍。 一、HASH 算法 HASH 算法是一种简单的负载均衡算法,它将请求的 ID 值进行 HASH 操作,然后将其映射到对应的服务器上。在 Baidu 的服务中,...
在传统的nginx负载均衡配置中,并未直接提供后端服务器健康检查的功能,但nginx提供了几个重要的指令来帮助我们设置超时和重试机制,来间接保障服务的可用性。例如,proxy_connect_timeout指令用于设置nginx尝试连接...
"Linux 下的 Nginx+Tomcat 负载均衡简单原理" Linux 下的 Nginx+Tomcat 负载均衡简单原理是指通过 ...本文对 Nginx 服务器的安装、配置和负载均衡算法进行了详细的介绍,为读者提供了一个简单的 Nginx 配置文件实例。
### Nginx负载均衡实现 #### 一、负载均衡概念及必要性 负载均衡是一种用于在网络环境中分散工作负载的技术,通常用于改善网络性能、提高可用性和最大化资源利用。当单台服务器难以应对高流量和并发请求时,负载...
五、扩展负载均衡功能 除了基本的负载均衡策略,还可以通过第三方模块如 ngx_http_upstream_hash_module 和 ngx_http_upstream_least_conn_module 实现更复杂的策略,比如基于 URL 的哈希或者更精细的最少连接数...
Nginx 支持多种负载均衡算法,其中之一就是 **Fair**(公平)调度算法。此算法的主要优势在于它可以更智能地将请求分配给后端服务器,避免了传统轮询(Round Robin, RR)方法可能导致的部分服务器过载的问题。 ####...
为了满足日益增长的网站访问量对服务器的需求,提出了一种基于Nginx的负载均衡算法,并完成算法的软件实现。该算法能在高并发的情况下选择合适的后台服务器,充分利用硬件资源,减少系统阻塞或延时。测试结果表明,...
### Nginx+Tomcat 负载均衡与集群简单搭建 #### 一、概述 在互联网技术领域中,随着用户访问量的增加,单一服务器往往难以满足需求,因此需要通过负载均衡和集群技术来提高系统的稳定性和可用性。本文将详细介绍...
Nginx的特点是: ... 2、Nginx对网络的依赖比较小; 3、Nginx安装和配置比较简单,测试起来比较方便; 4、也可以承担高的负载压力且稳定,一般能支撑超过1万... 另外默认的只有Round-robin和IP-hash两种负载均衡算法。
以下将详细介绍Nginx七层负载均衡的几种常见调度算法及其应用场景。 1. **轮询(默认调度算法)** 轮询算法是最基础的负载均衡策略,每个请求按照时间顺序依次分配到不同的后端服务器。这种算法适用于后端服务器...
综上所述,HAProxy+Nginx是一种强大的组合,不仅能够实现高效的负载均衡,还能提供高可用性和灵活性。通过对负载均衡算法的选择、合理的环境配置及细致的运维管理,可以最大限度地发挥这套方案的优势,满足不同规模...
综上所述,"nginx-upstream-fair"资源包提供的是一种公平的负载均衡策略,有助于优化服务器集群的性能和稳定性。通过合理的配置和运维,Nginx的Upstream功能能够为各种规模的Web服务提供高效、可靠的负载均衡解决...
负载均衡是Nginx的一个核心功能,它通过算法来分配客户端请求到不同的后端服务器,以此来实现系统的高可用性和扩展性。通常,Nginx的负载均衡配置在http块中定义的upstream模块里实现。在upstream模块中,可以设置多...
fair算法是一种更加智能的负载均衡算法,它根据后端服务器的响应时间来分配请求,响应时间短的服务器将优先接受新的连接请求。这种算法适用于动态变化的服务器性能场景,能自动调整负载,但Nginx本身不内置fair算法...