Nginx: 负载均衡场景下上游服务器异常时的容错机制

Nginx负载均衡之upstream容错机制详解 模块 lua-resty-upstream-healthcheck 的原理是每到(interval)设定的时间,就会对被代理服务器的 HTTP 端口主动发起 GET 请求(http_req),当请求的响应状态码在确定为合法的列表(valid_status)中出现时,则认为被代理服务器是健康的,如果请求的连续(fall)设定次数返回响应状态码都未在列表(valid_status)中出现,则认为是故障状态。Nginx 被动检测机制的优点是不需要增加额外进程进行健康检测,但用该方法检测是不准确的。 阅读详情

容错机制

  • 当负载均衡网络上的应用程序服务器,由于内部的某一些原因或者是网络原因导致的
  • 请求迟迟没有处理完,那这个时候我们是否可以做一些容错措施
  • 比如说可以将这个失败的请求继续由Nginx转发给另外一台服务器
  • 如果说有了这样一些容错机制的话,也是大大提高了我们整个系统的一个健壮性
  • 在反向代理场景中也有一些指令,用来定义这样一些功能的

1 )proxy_next_upstream 指令

  • 语法:proxy_next_upstream error| timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | noidempotent | off

  • 默认值: proxy_next_upstream error timeout;

  • 上下文:http、server、location

  • 可选值如下

    可选参数含义
    error向上游服务器传输请求或读取响应头发生错误
    timeout向上游服务器传输请求或读取响应头发生超时
    invalid header上游服务器返回无效的响应
    http_500HTTP响应状态码为500时
    http_502HTTP响应状态码为502时
    http_503HTTP响应状态码为503时
    http_504HTTP响应状态码为504时
    http_403HTTP响应状态码为403时
    http_404HTTP响应状态码为404时
    http_429HTTP响应状态码为429时
    non_idempotent非幂等请求失败时是否需要转发下一台上游服务器
    off禁用请求失败转发功能,上游返回啥,nginx 返回啥给客户端
  • 所谓幂等的请求, 是指这个请求发出去之后,无论请求多少次,得到的结果通常是一致的

  • 非幂等与之相反,请求发出去后,可能在服务器上每次都会引起不同的结果

  • Post请求,它就是一个非幂等的 http 请求方法,因为可能会在后端服务器上创建一些资源

  • 非幂等请求,可能对服务器造成不可预见的一些错误,在某些场景下是很危险的

    • 比如说,一个支付性的网站,充值,支付的动作
    • 可能由于内部一些原因没有及时将响应返回给Nginx
    • Nginx 在一定的时间内,他会将这个请求再次转发给下一台应用服务器
    • 这个时候,又执行了一次充值动作,从而造成了这种重复充值
    • 所以说,在某些场景下,proxy_next_upstream 功能是比较危险的
    • 可能会造成一些意想不到的后果,所以这个 non_idempotent
    • 就是用来决定是不是需要开启针对这些非幂等的HTTP请求方法是否转发
  • 关于上面的off

    • 默认情况下一台服务器挂掉,nginx不会再给它转发
    • 如果设置了 off, 则可能会出现访问不通 502 的问题

2 )proxy_next_upstream_timeout 指令

  • 某一应用程序服务器未响应的超时时间
  • 语法: proxy_next_upstream_timeout times;
  • 默认值:proxy_next_upstream_timeout 0;
    • 0 表示可以无限制的等待
  • 上下文:http、server、location
  • 这种,如果有三台都不行,都每个重试一遍肯定是问题,看下面指令

3 )proxy_next_upstream_tries 指令

  • 某一应用程序服务器未响应尝试转发几次
  • 语法: proxy_next_upstream_tries number;
  • 默认值:proxy_next_upstream_tries 0;
    • 0 不限制转发几次
  • 上下文:http、server、location

4 )proxy_intercept_errors 指令

  • 上游返回响应码大于300时,是直接将上游响应返回客户端还是按照 error_page 处理
  • 这个不同于错误之后将请求分发给其他应用服务了
  • 语法:proxy_intercept_errors on | off ;
  • 默认值:proxy_intercept_errors on;
  • 上下文:http、server、location

5 )配置测试

5.1 上游应用服务器 (使用Nginx模拟)

server {
	listen 	4040;
	location / {
		return 200 'Return Result For Server 4040\n';
	}
}

server {
	listen  4050;
	location / {
		return 503 'Return Result For Server 4050\n';
	}
}

5.2 Nginx 代理服务器

upstream test_tolerant_server {
	server 192.168.184.20:4040;
	server 192.168.184.20:4050;
}

server {
	listen 	    80;
	root 		    /opt/nginx/html;
	
	location   /503.html {
	}
	
	location /test/ {
		proxy_pass http://test_tolerant_server;
		# proxy_next_upstream http_503;
		error_page 503 /503.html;
		proxy_intercept_errors on;
		# proxy_read_timeout 5;
	}
}
  • $touch /opt/nginx/html/503.html
    test 503 page
    
  • 基于以上可自行设置,测试,不再赘述
Nginx 之Upstream使用详解 Nginx 的 `upstream` 模块是实现负载均衡和故障转移的关键组件。通过合理配置,可以有效地提高应用的可用性和扩展性。 阅读详情

相关推荐

Nginx(12)_负载均衡

负载均衡算法 1、hash 2、ip_hash 3、least_conn

renzhongrui的博客 450

Nginx之upstream被动式重试机制解读z

我们使用Nginx通过反向代理做负载均衡时,如果被代理的其中一个服务发生错误或者超时的时候,通常希望Nginx自动重试其他的服务,从而实现服务的高可用性。实际上Nginx本身默认会有错误重试机制,并且可以通过来自定义配置。Nginx 通过参数来定义什么情况下会被认为是 fails,从而触发失败重试机制。默认错误,包括 error、timeout选择定义错误,包含 invalid_header 以及各种异常 http 状态码错误等。

一个菜鸡的博客 1986

Nginx的容错机制及监控检查

Nginx通过反向代理做负载均衡时,如果被代理的其中一个后端服务发生错误或者超时的时候,通常希望Nginx自动重试其他的服务,从而实现服务的高可用性。

飞龙在天 1004

nginx proxy_next_upstream 与openresty balancer.set_more_tries的使用

背景 我们这边网关服务使用的 kong,前段时间上线一个服务,这个服务它报错了,产生了502的错误码,追查这个报错的时候发现了网关服务的两个可疑的地方,第一个疑点是我们在Kong上配置的 Retries = 5,但是实际实际上我们的代理重试至多只会重试三次。第二个疑点是我们的重试只重试了502 和 504,大量的500错误没有重试。带着这两个问题了查了下kong和openresty代码。 结论 首先给出问题的结论 第一个问题 Kong上配置的 Retries = 5,但是实际上只会重试三次。出现这个问题的原

飞翔码农的博客 2168

Nginx | HTTP 反向代理:与上游服务端建立连接处理实践

至此,当前阶段已完成 Nginx 于上游服务器连接建立、请求发送,以及连接异常时处理等相关性能指令介绍,并实践了当连接上游异常时自动切换节点,和拦截上游响应错误码实现 error_page 自定义错误,从而有效处理上游故障和不良响应,增强系统的健壮性和透明性,下一节将讲解 Nginx 如何接收并处理来自上游的HTTP响应。默认情况下(off),如果客户端在读取响应之前关闭了连接,Nginx 会立即终止与上游服务器的连接并返回给客户端一个错误,特别注意: 若启用可能增加上游服务器负担,需谨慎使用。

全栈工程师修炼指南-IT知识分享 1195

金融支付系统容错与灾备:高可用负载均衡与故障转移

1. 背景介绍 1.1 金融支付系统的重要性 金融支付系统是现代金融体系的核心组成部分,承担着资金清算、结算、转账等重要功能。随着互联网金融的快速发展,金融支付系统的业务量和交易额不断攀升,系统的稳定性、安全性和可用性成为了金融机构和监管部门关注的焦点。

AI天才研究院 386

nginx负载均衡session共享

一、可道云项目结合redis缓存部署 redis缓存可道云项目数据及会话,加快网站访问速度 环境准备: 主机名 应用环境 外网IP(WAN) 内网IP(LAN) web01 nginx+php 10.0.0.7 172.16.1.7 redis01 redis 172.16.1.41 db01 mysql (mariadb) 172.16.1.51 1.下载可道云开源代码,部署在web01服务器上。 可道云官网下载 下载源码,解压到指定目录,授权。 [root@web01 ~

人丑就要多读书的博客 4075

保姆级教程:在RV1126开发板上跑通YOLOv5口罩检测(从数据集到摄像头实时识别)

本文提供了一份详细的RV1126开发板部署YOLOv5口罩检测系统的全流程指南,涵盖数据集准备、模型训练优化、边缘部署及实时摄像头识别等关键步骤。重点解析了RV1126开发板的性能特征、YOLOv5模型训练调优技巧、RKNN模型转换量化策略,以及部署过程中的性能优化方案,帮助开发者高效实现边缘端目标检测应用。

weixin_27310985的博客 108

《nginx》三、nginx负载均衡

nginx负载均衡

theScoreONE的博客 865

LTE网络下的SMS收发(SMS Over SGs方案的详细流程)

关键词: IMS,SMS, LTE, MSC, MME, EPS,eNodeB, SMS Over SGs, SMS Over IMS 2G时代由于采用了比较复杂的CS/PS域架构,所以SMS(短信)作为上个世纪的产物,一直寄居在2G的CS域架构下。看看核心网的配置,其实SMS的收发还是比较复杂的。 介绍下面的信息之前你需要去百度一下这些关键词,这里我只说明比较重要的三个单元 MS 移动终端...

kevin的博客 2万+

学好超几何分布的核心公式,破解双色球!

彩票本质是概率游戏,不存在"必中公式"科学投注的核心是风险收益比管理长期投注的期望值始终为负(理论回报率约47%-63%)数学维度:运用概率工具优化策略经济维度:控制投注成本在可承受范围人文维度:将彩票视为社会公益的参与方式通过本文构建的数学模型,彩民可以在概率框架内实现更理性的投注决策。但最终能否收获幸运,仍取决于那个永恒的未知数——概率女神的眷顾。一、超几何分布的核心公式。

weixin_44904675的博客 1万+

提示系统高可用设计:负载均衡策略的容错机制

负载均衡(Load Balancing)是指将客户端的请求均匀分配到多个后端节点(服务器、容器、服务实例)的技术。避免单个节点过载(性能优化);提高系统整体吞吐量(效率优化);实现故障转移(高可用优化)。硬件负载均衡:如F5 Big-IP,性能强但成本高;软件负载均衡:如Nginx、Haproxy、Envoy,灵活且成本低;云负载均衡:如AWS ELB、阿里云SLB,托管式服务,无需维护。我是张三,资深软件工程师,专注于分布式系统和高可用设计,拥有10年以上的开发经验。

AI 原生应用开发的博客 1087

Altium Designer学习---如何进行SI仿真

Altium designer 如何进行SI仿真。         1、仿真电路中需要至少一块集成电路;             2、器件的IBIS模型;              3、在规则中必须设定电源网络和地网络;              4、建立SI规则约束;              5、层堆栈必须设置正确,电源平面必须连续;     建立的文件必须是一个工程,并把相应的文件放在工程目...

weixin_34050519的博客 4902

生态应用:探讨 NGINX 与上下游系统集成时的开发经验

NGINX 是一个功能强大、高性能的 Web 服务器和反向代理服务器,广泛应用于互联网、云计算和大型企业网络中。在实际应用中,我们需要根据实际需求和系统特点,选择合适的 NGINX 模块和配置参数,以实现高性能、高可用和高安全的 Web 应用服务。同时,与上下游系统的集成也是 NGINX 应用的一个重要方面,需要考虑前端静态资源的处理、HTTP 代理缓存等多个方面,以保证应用的高性能

商务合作|种草文章|产品测评 3151

嘉立创EDA实战:从点亮第一盏灯到完成首块PCB

本文详细介绍了使用嘉立创EDA从点亮第一盏LED灯到完成首块PCB的全过程。通过实战案例分享,包括原理图绘制、PCB设计、DRC检查、覆铜操作等关键步骤,帮助电子设计爱好者快速掌握嘉立创EDA的使用技巧,并避免常见的设计错误。

weixin_30314793的博客 372

AutosarMCAL开发——基于TC367、EBTresos 开发之PORT

下图为开漏输出与推挽输出电路区别,推挽输出有两个极性相反的mos构成,一个管子导通另一个管子关闭以实现输出高低电平(电流较小不具备驱动能力),开漏输出仅使用一个MOS管,所以在这种模式下只能输出低电平,想要输出高电平需要外部提供(输入电流不可超过引脚最大电流显示否则会烧MCU)开漏输出:输出寄存器为低电平时,经过输出控制电路变成一个高电平,N-MOS导通,低电平从I/O引脚输出,输出寄存器为高电平时,P-MOS和N-MOS都是截止状态,电平无法通过,想要输出高电平需要外接上拉电阻。

qq_45583706的博客 1405

Nginx负载均衡自带健康检测详解

Nginx自带针对后端节点健康检查功能比较简单,由ngx_http_upstream_module和ngx_http_proxy_module模块的相关指令来完成,通过一定重试机制保证容错和负载均衡。请求到后端节点出现故障时,才会切换到健康节点来提供访问,实际上nginx自带模块不算是健康检查的功能, 简单案列分析 upstreambackend{ server192....

endzhi的博客 7825

福建公共资源交易平台 portal-sign与响应Data解密逆向实录

本文分析了福建公共资源交易电子公共服务平台的接口加密机制。通过抓包和代码分析,发现请求头中的portal-sign由MD5算法生成,包含固定秘钥和排序后的参数拼接。响应数据采用AES-256-CBC加密,需使用特定Key和IV解密。文章详细介绍了签名生成规则、参数处理流程及加密常量定位方法,为接口对接提供了技术参考。整个过程展示了如何通过逆向工程还原前端加密逻辑,最终实现脱离浏览器环境的纯协议调用。

自成背后的博客 1157

Nginx负载均衡

本文详细介绍了Nginx负载均衡在生产环境中的配置实践,重点讲解了upstream模块的核心原理、反向代理透传规则及完整配置方案。通过定义服务器组、设置故障重试机制、权重分配等参数,实现流量分发和故障容错;同时配置请求透传保留客户端真实信息,确保后端服务获取准确数据。文章提供了可直接复用的完整配置模板,包含SSL证书、HTTPS跳转、安全防护等生产必备功能,适用于API接口和电商服务集群部署,并给出部署验证步骤和优化建议,帮助快速搭建高可用的负载均衡服务。

云游云记 616

IGCT 测试原理概述

IGCT(Integrated Gate-Commutated Thyristor,集成门极换流晶闸管)是一种高功率半导体器件,基于门极可关断晶闸管(GTO)的原理,但通过集成门极驱动单元和优化结构(如硬驱动技术),实现了更低的导通损耗、更快的开关速度和更高的可靠性。它适用于中高压大功率应用,如高压直流输电(HVDC)、中压变频器和模块化多电平变换器(MMC)。IGCT 的结构为四层 p-n-p-n 器件,门极电流控制导通和关断,阳极电流在关断时快速换流至门极,通常在 1 μs 内完成。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 233

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

180天云计算小白到大神-Nginx七层负载均衡2

06.Nginx七层负载均衡 06.Nginx七层负载均衡 6.Nginx负载均衡会话共享 6.1 什么是会话保持 6.2 为什么需要会话保持 6.3 如何实现会话保持 6.4 会话保持场景演示 6.4.1 配置web节点 6.4.2 配置负载均衡 6.4.3 配置Redis服务 6.4.4 配置php连接Redis 6.4.5 测试集群会话共享 7.后端节点异常容错机制 7.1 配置语法 7.2 场景示例 8.Nginx负载均衡调度场景 8.1 根据uri进行调度(路由) 8.1.1 环境准备 8.1.2

weixin_51622071的博客 295

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Fay框架服务器负载均衡健康检查重试机制实现指南

在分布式系统部署中,服务器负载均衡与健康检查是保障服务稳定性的核心环节。Fay作为集成语言模型与数字角色的开源框架,其多模块架构对服务可用性有较高要求。本文将从实际应用场景出发,详解如何在Fay框架中实现服务器负载均衡的健康检查与重试机制,解决服务波动导致的连接中断问题。 ## 负载均衡健康检查基础架构 Fay框架通过WebSocket协议实现模块间通信,核心服务端代码位于[core/wsa_...

gitblog_01010的博客 392

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【服务器】负载均衡:网络世界的交通指挥家

负载均衡技术是现代网络服务不可或缺的一部分,它通过智能分配网络流量,确保了服务的高效、稳定和可靠。随着技术的不断进步,负载均衡将继续在网络世界中发挥其“交通指挥家”的作用,引领我们走向更加智能、高效的网络未来。本文简要介绍了负载均衡的基本概念、类型、工作机制以及其在现代网络中的重要性。希望读者能够通过这篇文章,对负载均衡有更深入的了解和认识。内容地址 链接软考【第三版】系统集成项目管理工程NginxLinux (实战)常用命令。

网络冒险家 1257

AutoGPT负载均衡策略:Nginx与HAProxy比较

本文深入比较Nginx与HAProxy在AutoGPT类AI系统中的负载均衡能力,分析两者在健康检查、会话保持、协议支持及高可用性方面的差异,探讨其在长周期任务调度中的适用场景,揭示负载均衡器如何成为AI工作流的关键支撑组件。

weixin_36123300的博客 956

【nginx】

一、nginx是一款轻量级的web服务器/反向代理服务器及电子邮件imap/pop3/smtp服务器,在bsd-like协议下发行。其特点是占有内存少,并发能力强。高性能的静态web服务器:只能处理静态资源静态资源:图片、样式、flash等不会随着用户的请求改变而改变的资源动态资源:账户余额、商品剩余货源等,这些依赖于后端应用服务器在数据库查询、处理后返回的结果。

CaraYQ的博客 1089

浅聊负载均衡

负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。 解决问题 实现负载均衡主要有两个目的。 将任务的处理负载均摊到不同的进程,以减少单一进程的负载,以达到处理能力水平扩容的目的。 提高容错能力。我们知道,在线上正式环境中,机器宕机或者进程异常导致服务不可用是常有的现象。在实现负载均衡的系统中,多个服务器进程提供同样的服务,一个进程不可用的情况下,任务会被负载均衡器派发到其他可用的进程,以达到高可用的目的。在多台不同的服务器中部署相同

学习印记 Learning imprint 706
上一篇: Nginx: 负载均衡基础配置, 加权轮序, hash算法, ip_hash算法, least_conn算法
下一篇: Nginx: 缓存, 不缓存特定内容和缓存失效降低上游压力策略及其配置示例
Wang's Blog
博客等级 码龄12年 7418粉丝 2402原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值