一、概要

upstream模块主要用来配置上游服务器,(之所以称为上游服务器,是因为响应的数据是由upstream里配置的后端服务器传输过来的,属于响应数据的上游),nginx配置集群就是由upstream完成的,upstream模块在http模块下进行配置。实例如下:

upstream tomcats {server 192.168.40.22:8088;server 192.168.40.23:8088;server 192.168.40.24:8088;
}   server {listen 80;server_name www.tomcats.com;location / {proxy_pass http://tomcats;    #这里用到的tomcats就是upstream模块定义的名称}
}

二、轮询与加权轮询

轮询与加权轮询的内容,在链接对应文章中又介绍 https://blog.csdn.net/b15735105314/article/details/106982811。

三、指令参数

(1)max_conns(最大连接数):限制每台server的连接数,用于保护避免过载,可起到限流作用。如果当前所有服务器的连接数达到max_conns指定的最大连接数,那么nginx便为新的请求响应502 bad gateway(nginx其实就是一种网关)

upstream tomcats {server 192.168.1.173:8080 max_conns=2;server 192.168.1.174:8080 max_conns=2;server 192.168.1.175:8080 max_conns=2;
}

上面实例的max_conns的值指定为2是为了方便测试,实际的环境所能承受的连接数量要根据具体服务器的硬件指标去指定。

(2)slow_start(缓慢启动):这个参数在商业版本才能使用。

upstream tomcats {server 192.168.1.173:8080 weight=6 slow_start=60s;server 192.168.1.174:8080 weight=2;server 192.168.1.175:8080 weight=2;
}

该参数不能使用在hashrandom  这两种负载均衡方式中,即只能用在加权负载均衡方式中。

如果在 upstream 中只有一台 server,则该参数失效。

(3)down:用于标记服务节点不可用:

upstream tomcats {server 192.168.1.173:8080 down;server 192.168.1.174:8080 weight=1;server 192.168.1.175:8080 weight=1;
}

这个时候如果有请求到来时,nginx是不会把请求转发到173这个节点上的。

(4)backup:表示当前服务器节点是备用机,只有在其他的服务器都宕机以后,自己才会加入到集群中,被用户访问到:

upstream tomcats {server 192.168.1.173:8080 backup;server 192.168.1.174:8080 weight=1;server 192.168.1.175:8080 weight=1;
}

backup参数不能使用在hashrandom 负载均衡方式中。

(5)max_failsfail_timeout

     max_fails:表示失败几次,则标记server已宕机,剔出上游服务。
     fail_timeout:表示失败的重试时间。
              假设目前设置如下:

max_fails=2 fail_timeout=15s

则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。

四、Keepalived 提高吞吐量

这里设置的是nginx到后端服务器的长连接,并不是客户端到nginx的长连接。

keepalived: 设置长连接处理的数量
proxy_http_version:设置长连接http版本为1.1
proxy_set_header:清除connection header 信息

upstream tomcats {
#       server 192.168.1.173:8080 max_fails=2 fail_timeout=1s;server 192.168.1.190:8080;
#       server 192.168.1.174:8080 weight=1;
#       server 192.168.1.175:8080 weight=1;keepalive 32;
}server {listen       80;server_name  www.tomcats.com;location / {proxy_pass  http://tomcats;proxy_http_version 1.1;# 设置Connection为空串,以禁止传递头部到后端# http1.0中默认值Connection: closeproxy_set_header Connection "";}
}#  默认情况下 Nginx 访问后端都是用的短连接(HTTP1.0),一个请求来了,Nginx 新开一个和后端的连接,
#  请求结束连接回收。HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以#  传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

这里对nginx的长连接只简单介绍,后面会有专门的一片文章介绍nginx的长连接问题。

Nginx upstream模块(Nginx集群配置)相关推荐

  1. Nginx + Tomcat 负载均衡集群配置

    摘要 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 已经因为它的稳定性.丰 ...

  2. Nginx以及通过Nginx实现tomcat集群配置与负载均衡

    Nginx简介 启动,停止,和重新加载配置文件命令 Nginx功能 正向代理和反向代理的区别 反向代理 负载均衡 1.RR(默认) 2.权重 3.ip_hash 4.fair(第三方) 5.url_h ...

  3. windows配置nginx实现负载均衡集群

    windows配置nginx实现负载均衡集群 2014-08-20 09:44:40   来源:www.abcde.cn   评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是li ...

  4. Nginx+Tomcat简单集群配置

    2019独角兽企业重金招聘Python工程师标准>>> 1.软件准备 下载Nginx和Tomcat Nginx:http://nginx.org/en/download.html 这 ...

  5. Nginx+Memcached+Tomcat集群配置实践(Sticky Session)

    准备工作 创建一个简单的web应用,名为session.其中有两个页面,分别如下所示: 页面login.jsp [html] view plaincopy <%@ page language=& ...

  6. emq集群配置nginx做负载均衡

    emq集群配置nginx做负载均衡 创建 EMQ X 节点集群 emqx 集群搭建 例如: 节点 IP 地址 emqx@192.168.1.17 192.168.1.17 emqx@192.168.1 ...

  7. Nginx+Tomcat 负载均衡集群方案

    2019独角兽企业重金招聘Python工程师标准>>> Nginx+Tomcat 负载均衡集群方案 该方案是我之前做过的一个项目生产应用的,目前运行良好,如何您生产使用,请先做好测试 ...

  8. Java架构师成长直通车:LVS+Nginx实现高可用集群

    LVS+Nginx实现高可用集群 常见服务器 安装 Nginx(CentOS) Nginx 的进程模型 Nginx 事件处理 nginx.conf 核心配置文件 Nginx 的跨域配置和防盗链 负载均 ...

  9. LVS+Nginx实现高可用集群

    LVS+Nginx实现高可用集群 常见服务器 [安装 Nginx(CentOS)](#安装 Nginx(CentOS)) [Nginx 的进程模型](#Nginx 的进程模型) [Nginx 事件处理 ...

最新文章

  1. 苹果着手自研调制解调器,以应对高通天价专利费
  2. Oracle11g服务详细介绍及哪些服务是必须开启的?
  3. [转载]常用CASE工具介绍
  4. P2149-[SDOI2009]Elaxia的路线【最短路】
  5. SELinux相关内容
  6. jquery版相片墙(鼠标控制图片聚合和散开)
  7. 自动生成数学题型二(框架struts2)题型如((a+b)*c=d)
  8. 重新编译Telepresence,谈如何写编译脚本
  9. MySql适配人大金仓数据库
  10. 这一份Spring源码解析PDF,阿里架构师直言:全网最深度解析!
  11. LoRa技术-什么是LoRa
  12. 从零开始自制实现WebServer(一)---- 万丈高楼平地起 步子得一步一步慢慢走
  13. 王者荣耀战区实时战力查询
  14. arcgis server 无法识别字体原因
  15. Stream流和Optional
  16. python实现大规模邻域搜索(LNS)求解旅行商问题(TSP)
  17. java实时获取窗口大小_把游戏窗口的大小改变为640 X 480?
  18. 关于更改Python的默认工作路径
  19. 微信公众平台中怎么上传附件?
  20. 7 种模型加权集成方法

热门文章

  1. Java二维数组(超详解)
  2. iOS游戏开发没有你想的那么难--Hardest
  3. linux 数据加密模块,浅谈pycrypto加密模块
  4. TabLayout设置图标和字体
  5. windows 桌面 图标间距 调整
  6. android播放mp3旋转动画,Android 实现旋转木马的音乐效果
  7. SpringBoot+SpringSecurity+RBAC+JWT实现动态权限框架
  8. WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里?
  9. 网络安全笔记——第二天:简单了解操作系统
  10. 【微信】微信测试公众号申请与使用