• upstream

nginx upstream语法配置

upstream 后面跟服务名

其中包含了,域名,端口 以及权重,可以看到他既支持http协议也支持socket协议的类型,backup意味着该域名是备用的地址

后端服务器调度参数

backup不参与服务,当其他节点无法服务了,他就参与服务

max_fails 代理服务器向后端请求,一旦发现请求状态失败,会去再度请求。超过max_fails规定的次数,随即宣告失败。

接下来就“休息一会儿”,通常为10s 可以通过fail_timeout设置更长的时间

max_conns 由于nginx向upstram(服务器池)采用轮询的方式,分发请求,有的时候我们会遇到连接池中的服务器硬件性能高低不一,有的是4核,有的是24核,配置低的服务器可能根本接收不了分摊给他的请求数目。这个时候就用到了max_conns配置

上图配置解读:8001 不提供服务;8002备用服务器;8003失败检查只执行1次,超时时间10s,结果只有8003对应的server3可以访问

在过滤规则中停掉8003

这时作为backup的server2可以返回。

  • nginx的轮询机制(基于请求的方式)

nginx的轮询默认采用逐一轮询的方式,例如测试用例中从8001轮询到8003

加权轮询的调度算法:如果来7个请求,5个将会落到8002上面

重新加载配置

然而这一方法带来的问题是:如果很多操作或访问是基于cookie或者session的,轮询会打到不同的服务器上去,session和cookie也就无从保持,导致了掉线

  • ip_hash

缓存带来的问题,假如server1 server2各缓存了一部分信息,轮询可能每次跳到不同的服务器,导致每次加载的缓存内容都不一致。

根据客户访问ip的哈希值绑定在一个后端服务器上,同一ip固定访问同一服务器,缺陷:由于是代理,无法获取真正的$remote_addr,于是改进版本的nginx有了

  • url_hash(1.7.2以后版本推出)

关键命令: hash $request_uri 变量指代的就是

测试结果,无论如何都会固定展示绑定的那台服务器的内容

如果针对url中的某一个值进行hash也是可以

nginx upstream和轮询策略的更多相关文章

  1. Nginx 负载均衡-加权轮询策略剖析

    本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更 ...

  2. 【Nginx】负载均衡-加权轮询策略剖析

    转自:江南烟雨 本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别. 如果Nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服 ...

  3. Nginx 访问日志轮询切割

    Nginx 访问日志轮询切割脚本 #!/bin/sh Dateformat=`date +%Y%m%d` Basedir="/application/nginx" Nginxlog ...

  4. Nginx做负载均衡的几种轮询策略

    集群环境为了解决单点无法支撑高并发的情况,集群采用多台服务器提供服务,一般在集群中使用nginx 将来自客户端的请求转发给服务器端 nginx负载均衡可用提高网站的吞吐量,缓解单台服务器的压力. 一. ...

  5. Nginx 做负载均衡的几种轮询策略

    网上看见nginx的upstream目前支持的5种方式的分配,摘录备忘. 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.upstream back ...

  6. 系统架构之负载均衡【F5\nginx\LVS\DNS轮询\】

    在做系统架构规划的时候,负载均衡,HA(高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点,当活动节点出现故障的时候,由备用节点接管)都是经常需要考虑的 ...

  7. C# Nginx平滑加权轮询算法

    代码很简单,但算法很经典,话不多说,直接上代码. public struct ServerConfig { /// <summary> /// 初始权重 /// </summary& ...

  8. Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例

    原文地址:http://www.jb51.net/article/31844.htm Nginx  ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 ...

  9. nginx upstream 实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

随机推荐

  1. Bootstrap+JSP实例学习笔记一.简单的带登录功能的首页

    前言 Bootstrap 是流行的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目.源自于twiteer内部的开发框架. 当前(2019-05)最新版本是v3.3. ...

  2. java-字符

    注意第16行处理方式.

  3. Cannot get a NUMERIC value from a STRING cell? 已解决

    最近在写项目中用到了excel的导入,遇到了Cannot get a NUMERIC value from a STRING cell的报错.原因是无法从纯数字的单元格用获取String的方式获取.跟 ...

  4. eclipse 导入项目出现的问题汇总

    Unbound classpath variable: 'TOMCAT_HOME' in project XXX Problem 翻译:未绑定的类路径变量:项目XXX中的“TOMCAT_HOME” 解 ...

  5. 让mysql的id字段变成表的主键

    1.#已经加主键 desc szdj.sys_message_user;alter table sys_message_user add constraint pk_mess_user primary ...

  6. 查找担保圈-step1-担保圈表函数

    USE [test]; GO /****** Object: UserDefinedFunction [dbo].[f_findrecycle] Script Date: 2019/7/8 14:37 ...

  7. redis缓存雪崩

    缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效. 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中的放入了缓存,假设缓存一个小时.那么 ...

  8. python_0基础开始_day06

    第六节 1.小数据池 ==,is,id ==:查看等号两边的值是否一样 a = 9b = 9print(a == b) # 返回Truec = "dog"d = "dog ...

  9. 移动端、pc端通用点击复制

    点击复制 function copyArticle(event){ const range = document.createRange(); range.selectNode(document.ge ...

  10. Java Web开发技术教程入门-Model1和Model2

    今天我们聊聊JSP开发中的Model1和Model2. Model1采用了JSP+JavaBean技术开发Web应用.其中,JSP实现页面显示,业务逻辑和流程控制,数据处理由JavaBean完成.在J ...