资讯专栏INFORMATION COLUMN

nginx 的 upstream 模块

张宪坤 / 2715人阅读

摘要:本身是不支持的,如果需要使用这种调度算法,必须下载的模块。表示当前的暂时不参与负载。允许请求失败的次数,默认为。当超过最大次数时,返回模块定义的错误。

nginx 的 upstream 模块 负载均衡分配策略 普通轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。

upstream backend { 
server 192.168.0.1; 
server 192.168.0.1; 
} 
加权轮询(前者的进化版)

weight 指定轮询的权值,weight值越大,分配到的访问机率越高,此策略主要用于后端每个服务器性能不均的情况下。

upstream backend { 
server 192.168.0.1 weight=10; 
server 192.168.0.2 weight=20;
# 这台服务器性能好 所以设置weight=30 使之被访问的几率最大 
server 192.168.0.3 weight=30; 
} 
ip_hash

每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。当然如果这个节点不可用了,会发到下个节点,而此时没有session同步的话就注销掉了。

upstream backend { 
ip_hash; 
server 192.168.0.1:88; 
server 192.168.0.1:80; 
} 
least_conn

请求被发送到当前活跃连接最少的后端服务器。会考虑weight的值。如果有多个后端服务器的 conns 值同为最小的,那么对它们采用加权轮询算法(weight)。

upstream backend {
    least_conn;
    server 192.168.0.1:88; 
    server 192.168.0.1:80; 
}
fair(upstream_fair模块)

根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair 的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair 模块。

upstream backend { 
server 192.168.0.14:88; 
server 192.168.0.15:80; 
fair; 
} 
url_hash(nginx _upstream_hash模块)

此方法按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx 本身是不支持 url _ hash 的,如果需要使用这种调度算法,必须下载 Nginx 的 nginx_upstream_hash 模块。

upstream backend { 
server 192.168.0.1; 
server 192.168.0.2; 
hash $request_uri; 
hash_method crc32;  
} 
server 支持的参数说明
upstream backend {
    server 192.168.0.1;
    server 192.168.0.2:8080 weight=1 max_fails=2 fail_timeout=30s ;
    server 192.168.0.3:8080 backup;
}
server {
    location / {
        proxy_pass http://backend;
        proxy_next_upstream error|timeout|..;
    }
}
weight:轮询权值,默认值为1。
down:表示当前的server暂时不参与负载。
max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回 proxy_next_upstream 模块定义的错误。
fail_timeout:有两层含义,一是在fail_timeout时间内最多容许max_fails次失败;二是在经历了max_fails次失败以后,30s时间内不分配请求到这台服务器。
backup : 备份机器。当其他所有的非 backup 机器出现故障的时候,才会请求backup机器,因此这台机器的压力最轻。
max_conns: 限制同时连接到某台后端服务器的连接数,默认为 0。即无限制。
proxy_next_upstream : 这个指令属于 http_proxy 模块的,指定后端返回什么样的异常响应

proxy_next_upstream 的参数说明请看这里

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39435.html

相关文章

  • Nginx 学习总结(6) —— 负载均衡

    摘要:实现负载均衡负载均衡是反向代理技术的一种运用。而实现负载均衡的核心在于如何将请求合理地分配给不同的后端服务器。 这是 Nginx 学习总结的第六篇,上一篇介绍到了 Nginx 学习总结(5) —— 反向代理,本文主要演示结合 proxy 和 upstream 模块的使用来实现 Nginx 的负载均衡。 Nginx 官网中对 upstream 模块的介绍:ngx_http_upstrea...

    wwq0327 评论0 收藏0
  • nginx做负载均衡器以及proxy缓存配置

    摘要:这个指令属于模块的,指定后端返回什么样的异常响应时,使用另一个是专门提供负载均衡器内节点的健康检查的外部模块,由淘宝的姚伟斌大神开发,通过它可以用来检测后端的健康状态。 关于nginx的安装和基本配置请参考nginx,本文在原基础上完成以下几个功能: 结合proxy和upstream模块实现nginx负载均衡 结合nginx_upstream_check_module模块实现后端服...

    Moxmi 评论0 收藏0
  • 【猿眼电影售票系统】Nginx反向代理配置

    摘要:常用的状态有,表示当前的暂时不参与负载均衡。当负载调度算法为时,后端服务器在负载均衡调度中的状态不能是和。 MonkeyEye(猿眼售票系统)项目地址:https://github.com/SYSUMonkeyEye/MonkeyEye-FE 反向代理概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受客户端连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上...

    Soarkey 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<