0


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 ;
}
标签: nginx 运维 git

本文转载自: https://blog.csdn.net/feiying0canglang/article/details/128024454
版权归原作者 IT利刃出鞘 所有, 如有侵权,请联系我们删除。

“Nginx系列--upstream模块的使用”的评论:

还没有评论