Nginx--upstream模块的使用

原文网址:Nginx--upstream模块的使用_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍nginx的upstream模块的使用。

nginx的upstream模块是用于负载均衡的。

upstream模块介绍

Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass和grpc_pass。

gx_http_upstream_module模块允许Nginx定义一组或多组服务组,使用的可以通过proxy_pass代理方式把网站的请求发送到事先定义好的对应upstream组的名字上。upstream模块可以实现负载均衡,而且在一个节点故障的时候,配置了upstream时可以自动切换到正常工作的节点。

负载均衡方式

官方自带的负载均衡

  • ip_hash
    • 通过ip来计算hash值,根据hash值将分配到不同的机器中,同一个hash值会一直落在一台机器上(也就是同一个ip)。
  • weight
    • 通过设置权重值指定集群中不同机器的权重,权重越高,落到该机器的请求次数越多。
  • 轮询(默认
    • 将请求均匀的分配到集群中的每一台机器上。
  • 最小连接数:
    • least_conn是动态调度算法,会根据后端节点的连接数来决定分配情况,哪个机器连接数少就分发给它。

这几种方式优先级如下:

ip_hash > weight > 轮询 > 最小连接数

ip_hash优先级最高,若配置了ip_hash,其他三种配置就会失效,只会根据ip_hash策略。配置了weight也是同样,轮询和最小连接数会失效。

第三方负载均衡方式

  • 最短响应时间
    • 最短响应时间(fair)调度算法是动态调度算法,会根据后端节点服务器的响应时间来分配请求,响应时间短的优先分配。
    • Nginx 本身是不支持 fair 调度算法的,如果要使用这种调度算法,必须下载 Nginx 的相关模块 upstream_fair。
  • url_hash算法
    • url_hash算法是动态调度算法,按访问 URL 的 hash 结果来分配请求,使每个 URL 定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率命中率。(多用于后端服务器为缓存时的场景下)。
    • Nginx 本身是不支持 rul_hash的,如果要使用这种调度算法,必须安装 Nginx 的hash 模块软件包。

示例

ip_hash

upstream demo {
    ip_hash;
    server 192.168.0.1:8080;
    server 192.168.0.2:9090;
}

server {
    listen 80;
    server_name test.xxx.com;
    location / {
       proxy_pass http://demo/;
    }
}

当请求test.xxx.com时,会匹配进入到location,proxy_pass指定了upstream,此时就会根据ip_hash,对当前的请求IP做hash计算,得到最终会落到那台机器上。以后同一个ip请求,都会落到这个机器上。在某些项目中,可以考虑用这种方式来解决session共享的问题。

weight

upstream demo {
        server 192.168.0.1:8080 weight 2;
        server 192.168.0.2:9090 weight 1;
}

server {
    # …… 同上面的示例
}


请求test.xxx.com时,会两次落在192.168.0.1:8080机器上,一次落在192.168.0.2:9090上。

轮询

轮询很简单,是默认的方式。如下:

upstream demo {
        server 192.168.0.1:8080;
        server 192.168.0.2:9090;   
}

请求会均匀的落在两台机器上。

least_conn

upstream show {
    least_conn;
    server 192.168.0.141 ;
    server 192.168.0.142 ;
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值