当前位置: 首页 > news >正文

nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和源码分析(上)

目录

  • 1. 缘起
  • 2. 配置指令
    • 2.1 check
    • 2.2 check_keepalive_requests
    • 2.3 check_http_send
    • 2.4 check_http_expect_alive
    • 2.5 check_shm_size
    • 2.6 check_status
  • 3. 加载健康检测模块
    • 3.1 模块的编译
    • 3.2 模块的配置
  • 4. 测试验证
  • 5. 思考与问题
  • 6. 源码分析

1. 缘起

众所周知,nginx原生的upstream模块提供了后端服务器的健康检测的功能,但是它的检测方式是被动模式的,被动模式意味着nginx不会主动发起健康检查,只有到客户端请求nginx的时候,nginx被迫需要向上游服务器发起正常的请求,顺便完成后端服务器的健康检测的任务。这种方式对nginx的实现来说是不需要太多额外的健康检测的代码,因此实现比较简单。
但是有利必有弊,一个问题显而易见的问题是,如果有上游服务器中途故障了,但是这次又没有客户端请求路由到该服务器,那么nginx是没法感知的,这样子当有客户端请求过来的时候,自然就有可能路由到该服务器,从而导致请求失败的问题发生,虽然nginx本身也提供了选择下一个上游服务器进行重试的机制,但是不可避免地会导致响应延时的问题出现,影响了用户体验。
同时,被动式健康检测的方案导致健康检测手段也被局限了,因为它是nginx向上游服务器请求的协议。而往往真实业务环境中需要多样化的检测手段,如tcp可连接性探测、http请求探测、ping等等,而nginx显然是没有这方面功能的,这方面haproxy则做得相对比较好,大家有兴趣可以学习一下haproxy的健康检测方面的相关内容。
幸好,作为nginx的一个衍生版本tengine提供了ngx_http_upstream_check_module,为我们提供了upstream上游服务器主动健康检测的手段。利用这个模块提供的功能,我们可以进行tcp、http、ssl握手、ajp、mysql、fastcgi等几种主动检测的手段,我们也可以利用它提供的检测框架,根据业务需要提供自己的其他协议的检测能力,譬如dns检测,或者其他任何你想要的协议类型。
虽然这个模块是在tengine中提供的,但是我们完全可以拿过来,在官方提供的原生nginx版本中进行完美集成,不过由于这个模块加入到原生nginx中会涉及到nginx负载均衡模块的少许变动,本文不进行展开。

2. 配置指令

http://www.lryc.cn/news/295054.html

相关文章:

  • 第01课:自动驾驶概述
  • Docker进阶篇-CIG重量级监控系统
  • 鸿蒙踩坑合集
  • Golang-Map有序输出——使用orderedmap库实现
  • 基础数学问题整理
  • 【Linux】环境基础开发工具的使用(一)
  • 突破编程_C++_面试(基础知识(5))
  • 十分钟掌握Go语言==运算符与reflect.DeepEqual函数处理interface{}值的比较规则
  • Unity3d Shader篇(一)— 顶点漫反射着色器解析
  • WordPress主题YIA的文章页评论内容为什么没有显示出来?
  • 选择低代码应该注意什么?如何选择?
  • 橘子学linux调优之工具包的安装
  • 函数的连续与间断【高数笔记】
  • 游戏如何选择服务器
  • ubuntu20安装mysql8
  • 07 SB3之@HttpExchange(TBD)
  • Redis数据淘汰策略
  • Git的一些基本操作
  • Spring Boot中异步线程池@Async
  • ArcGIS学习(五)坐标系-2
  • 2024Node.js零基础教程(小白友好型),nodejs新手到高手,(五)NodeJS入门——http模块
  • sklearn.preprocessing 标准化、归一化、正则化
  • Windows系统编程(一) 文件与目录操作
  • 6-2、T型加减速计算简化【51单片机+L298N步进电机系列教程】
  • 配置Jenkins自动构建打包项目
  • 进阶C语言-通讯录的实现
  • STM32单片机的基本原理与应用(七)
  • LLM应用开发与落地:使用gradio十分钟搭建聊天UI
  • 智慧城市:打造低碳未来,引领城市数字化转型新篇章
  • ChatGPT之制作短视频