原文网址: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系列--upstream模块的使用相关推荐

  1. nginx的upstream模块安装

    下载连接:wget http://code.google.com/p/nginx-upstream-jvm-route/downloads/detail?name=nginx-upstream-jvm ...

  2. Nginx upstream模块

    Nginx upstream模块 upstream模块 nginx模块一般被分成三大类:handler.filter和upstream.前面的章节中,读者已经了解了handler.filter.利用这 ...

  3. Nginx-接入层Nginx架构及模块介绍

    文章简介: 1)帮助大家对Nginx有一定的认识 2)熟悉Nginx有哪些应用场景 3)熟悉Nginx特点和架构模型以及相关流程 4)熟悉Nginx定制化开发的几种模块分类 文章相关视频讲解: C/C ...

  4. upstream模块详解

    upstream模块 upstream模块 (100%) nginx模块一般被分成三大类:handler.filter和upstream.前面的章节中,读者已经了解了handler.filter.利用 ...

  5. ng的upstream模块

    upstream模块 (100%) nginx模块一般被分成三大类:handler.filter和upstream.前面的章节中,读者已经了解了handler.filter.利用这两类模块,可以使ng ...

  6. nginx系列之八:使用upsync模块实现负载均衡

    ** 前言 ** nginx系列之一:nginx入门 nginx系列之二:配置文件解读 nginx系列之三:日志配置 nginx系列之四:web服务器 nginx系列之五: 负载均衡 nginx系列之 ...

  7. Nginx upstream模块与负载均衡模块分析

    目录 Upstream模块介绍 总体实现流程| memcached模块分析 负载均衡模块 正文 系列文章:upstream demo_fdsafwagdagadg6576的专栏-CSDN博客 本文是对 ...

  8. Nginx系列五: handler 模块

    Nginx系列一:概念和配置 Nginx系列二: Nginx 的数据结构 Nginx系列三: Nginx 高级数据结构 Nginx系列四: Nginx的配置指令和handler模块概述 Nginx系列 ...

  9. httpd开启status模块_Nginx高并发系列之二——Nginx开启ssl模块

    在上一期中我们安装配置了nginx1.13.7版本并且成功启动,那么这一期就针对安装的Nginx支持ssl模块--即开启https功能.如果还有不知道如何安装与配置的请移至: 水番丘山:Nginx高并 ...

最新文章

  1. 比特币区块的产生速度为何被设定为10分钟?
  2. mysql 绑定参数_MySQL 使用 Perl 绑定参数和列
  3. 修改自动生成get/set方法模板代码
  4. iphone个系列尺寸_iPhone 12尺寸对比:又是真香的典范?
  5. JQuery实现Ajax跨域访问--Jsonp原理
  6. tcp协议接收方对out of order的分段是如何处理的?_TCP协议与流通信
  7. 工作中的git实际使用
  8. PHP单元测试使用手册
  9. 电脑小写字母怎么切换_电脑上也可以使用九州音集啦!
  10. (五)springcloud微服务分布式云架构 - 云架构代码结构构建
  11. 深夜,在这个已不再喧嚣的城市中寻找到一片属于自己的宁静,仰望那片属于自己的星空……...
  12. video 标签内 音量_HTML5 视频(Video)元素使用详解
  13. LTE学习:关于CNTI
  14. centos安装nginx配置webpy
  15. Lie to Me: Bypassing Modern Web Application Firewalls
  16. 上海启用大数据捉拿套牌车 被套牌应立即报案
  17. docker访问宿主机文件目录
  18. 2023新年快乐,友盟+伴你岁岁年年
  19. 腾讯云Ubuntu18.04萌新摸索(一)搜狗输入法
  20. 计算机服务器机房 消防灭火,服务器机房消防系统和维护

热门文章

  1. 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践
  2. kmeans聚类算法matlab实现
  3. 如何创建一个Java项目
  4. 计算机word知识点小技巧,史上最全的Word技巧大全 掌握这些你也能成为Word高手...
  5. linux下防止rm-rf /处理
  6. android录音波浪动画_Android 自定义 view 实现波浪动画进度条
  7. Domo商业云平台快速入门指南
  8. 港科资讯 | 香港科大EMBA校友会2021-2022最佳案例奖颁发
  9. 计算机原理中的二进制除法,多字节除法--汇编实现原理
  10. RapidScada免费开源Scada组态软件系列教程7-Linux下系统的运行