nginx upstream和轮询策略
- 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和轮询策略的更多相关文章
- Nginx 负载均衡-加权轮询策略剖析
本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更 ...
- 【Nginx】负载均衡-加权轮询策略剖析
转自:江南烟雨 本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别. 如果Nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服 ...
- Nginx 访问日志轮询切割
Nginx 访问日志轮询切割脚本 #!/bin/sh Dateformat=`date +%Y%m%d` Basedir="/application/nginx" Nginxlog ...
- Nginx做负载均衡的几种轮询策略
集群环境为了解决单点无法支撑高并发的情况,集群采用多台服务器提供服务,一般在集群中使用nginx 将来自客户端的请求转发给服务器端 nginx负载均衡可用提高网站的吞吐量,缓解单台服务器的压力. 一. ...
- Nginx 做负载均衡的几种轮询策略
网上看见nginx的upstream目前支持的5种方式的分配,摘录备忘. 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.upstream back ...
- 系统架构之负载均衡【F5\nginx\LVS\DNS轮询\】
在做系统架构规划的时候,负载均衡,HA(高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点,当活动节点出现故障的时候,由备用节点接管)都是经常需要考虑的 ...
- C# Nginx平滑加权轮询算法
代码很简单,但算法很经典,话不多说,直接上代码. public struct ServerConfig { /// <summary> /// 初始权重 /// </summary& ...
- Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例
原文地址:http://www.jb51.net/article/31844.htm Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 ...
- nginx upstream 实现负载均衡
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...
随机推荐
- 调用百度api的原理流程
1.为了实现酒店地址的定位 2.使用可视化便捷的百度地图API生成器:设置公司的地址和地图等级 3.设置地图的滚轮.缩放功能 4.获取代码,拷贝到html页面中 5.申请秘钥,在html中引用地图AP ...
- TCP协议基础(一)
TCP为应用层提供的服务 提供进程和进程之间的通信 答: 怎么区分服务目的主机上的哪个进程呢? 通过提供端口号(well-known port), 如Telnet 23,DNS 53, HTTP 80 ...
- 注入之Mysql-Getshell思路
- python3.6调用c语言动态编译文件 c语言编译可执行文件和动态编译等
1.c的代码 dfunc.c #include<stdio.h> int dgfunc(int n) { ){ ; }else{ )+dgfunc(n-); } } 2.动态编译 cmd ...
- NIO 编程模型
NIO 编程模型 Doug Lea 在 Scalable IO in Java 的 PPT 中描述了 Reactor 编程模型的思想,大部分 NIO 框架和一些中间件的 NIO 编程都与它一样或是它的 ...
- 基于vs插件的abp代码生成器
工作了这么多年,一直都在小公司摸爬滚打,对于小公司而言,开发人员少,代码风格五花八门.要想用更少的人,更快的速度,开发更规范的代码,那自然离不开代码生成器.之前用过动软的,也用过T4,后面又接触了力软 ...
- flask_sqlalchemy基本设置
from flask import Flask from flask_sqlalchemy import SQLAlchemy #区别 sqlalchemy这是第三方模块不属于flask app = ...
- python解析库
BeautifulSoup示例: #!/usr/bin/env python # -*- coding: utf-8 -*- # author: imcati html_doc = "&qu ...
- [xpath] 定位中starts-with、contains和text()的用法
starts-with 顾名思义,匹配一个属性开始位置的关键字 contains 匹配一个属性值中包含的字符串 text() 匹配的是显示文本信息,此处也可以用来做定位用 eg //input[sta ...
- PTA(Basic Level)1032.挖掘机技术哪家强
为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 105 的正整数 N,即参赛人数.随后 N ...