nginx主动检测后端健康模块

nginx upstream server主动健康检测模块添加https检测功能[完整版] 本文在源码级别,分步骤详细描述了基于ngx_http_upstream_check模块,来实现https健康检测的功能。 阅读详情

一、前言

     nginx也有自带的后端检测模块ngx_http_upstream_module,该模块可以做到基本的健康检查,因为该健康检查是被动的,当nginx有请求后,才会对后端服务进行健康检测,当检测到有故障时会将这个请求转发到正常的后端服务中,所以该模块不太适用,因此引入第三方的主动健康检测模块ngx_http_upstream_check_module,该模块会在时间间隔内对后端进行主动的健康检测,当发现不健康的后端服务时,会将其主动下线,不再接受请求

二、部署

创建nginx存放目录

mkdir /opt/nginx && cd /opt/nginx

下载安装包

wget http://nginx.org/download/nginx-1.20.2.tar.gz

解压安装包

tar -zxvf nginx-1.20.2.tar.gz

下载需要增加的模块

git clone https://github.com/yaoweibin/nginx_upstream_check_module.git

将该模块导入到nginx中

cd /opt/nginx/nginx-1.20.2
patch -p1 < /opt/nginx/nginx_upstream_check_module/check_1.20.1+.patch

安装编译的环境

yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

设置参数并编译安装

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp  --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module=/opt/nginx/nginx_upstream_check_module
make && make install

创建参数中设定的目录,有一个目录nginx中没有

mkdir -p /var/cache/nginx/client_temp

使用systemd管理nginx

vi /etc/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

启动nginx服务

systemctl start nginx && systemctl enable nginx

检查是否开启对应模块

nginx -V

配置使用nginx主动健康检测 模块

vi /etc/nginx/nginx.conf

upstream dev_web {
        server 10.1.60.125:30003;
        server 10.1.60.126:30003;
        server 10.1.60.127:30003;
        server 10.1.60.128:30003;
        check interval=3000 rise=1 fall=3 timeout=2000 type=http;  #配置http检测,该接口为前端web接口,所以配置http检测
        check_http_send "HEAD /login.html HTTP/1.0\r\n\r\n";
        #check_http_send "HEAD /login.html HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";  #需要看http协议是多少,需要根据http协议填写,不同的协议使用的方法不一样
        #check_http_send "GET /login.html HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;  #检测返回状态码为2xx、3xx代表正常
}

upstream dev_gateway {
        server 10.1.60.125:30004;
        server 10.1.60.126:30004;
        server 10.1.60.127:30004;
        server 10.1.60.128:30004;
        check interval=3000 rise=1 fall=3 timeout=2000 type=tcp;  #配置tcp/ip检测,接口为后端服务接口,所以配置tcp/ip检测
}
    
server {
        listen       80;

        location =/ {
            proxy_pass http://dev_web;
        }
        location =/login.html {
            proxy_pass http://dev_web;
        }
        location ~* \.(?:htm|html)$ {
            proxy_pass http://dev_web;
        }
        location ~* \.(?:ico|git|jpg|jpeg|png|bmp|swf|flv|mp4)$ {
            proxy_pass http://dev_web;
        }
        location ~* \.(?:css|js|eot|svg|ttf|woff2|otf|woff)$ {
            proxy_pass http://dev_web;
        }
        location / {
            proxy_set_header x-for $http_x_forwarded_for;
            proxy_set_header X-Forwaided-Proto $scheme;
            proxy_set_header Host              $host:$server_port;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_buffering off;
            client_max_body_size 200m;
            client_body_buffer_size 50m;
            proxy_pass http://dev_gateway;
        }
        
        location /status {
            check_status;     #开启健康检查的web页面
        }
}

interval:表示间隔多少毫秒检测一次

rise:表示最少健康检测通过多少次代表正常

fall:表示最少健康检测不通过多少次代表不正常

type:健康检测使用的协议

可以使用curl命令查看http协议的版本

curl -I 10.1.60.125:30003/login.html  #可以使用-I代表支持HEAD方式,不支持的话可以使用get方式

重新加载nginx配置

nginx -s reload

 查看健康检测的web

http://10.1.60.124/status

Nginx健康检查 目录 一、失败重试 二、健康检查 三、安装模块nginx_upstream_check_module 1. 下载模块 2. 解压模块 3. 查看Nginx版本 4. 安装补丁 5. 配置模块 6. 修改配置 7. 验证检查结果 一、失败重试 Nginx配置如下: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error 阅读详情

相关推荐

nginx后端健康检查nginx_upstream_check_module

3.在新下载的ngin-1.26的目录下,把nginx_upstream_check_module补丁打进来,查看本机已安装nginx的编译参数,然后拷贝,然后在后面加上--add-module=../nginx_upstream_check_module-master,由于编译需要依赖库,先安装下面几个库 pcre-devel openssl openssl-devel,然后./configure ,然后再make。2.下载nginx_upstream_check_module模块。

2304

nginx主动健康检查

本文介绍了基于 Nginx 的第三方模块 nginx_upstream_check_module,该模块可以实现 Nginx 的主动健康检查功能,有效地提高后端服务器的可用性和稳定性。文章详细介绍了该模块的安装和配置方法,并提供了使用该模块进行健康检查的示例代码。最后,本文总结了 nginx_upstream_check_module 的优点,推荐我们在实际应用中使用该模块来提高服务的可靠性和稳定性。

JudithHuang的博客 1915

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

本文详细描述了tengine ngx_http_upstream_check_module的使用方法,并进行了源码分析。

一个致力于开源代码学习、分析和交流的博客 1825

nginx 健康检查方案

缺点:Nginx只有当有访问时后,才发起对后端节点探测。如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。超出此处指定的次数时,server将被标记为不可用,默认为1。注意:check模块版本和Nginx版本要求有限制。主动check:心跳检测,为非业务流量,nginx本身发起健康检测请求。: 将服务器标记为"备用",即所有服务器均不可用时才启用。:后端服务器标记为不可用状态的连接超时时长,默认10s。HTTP模式配置:(需要提供一个健康检查的url)

sqaure1的博客 3082

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

本文介绍了在ngx_http_upstream_check_module模块中扩展实现udp健康检测的能力。

一个致力于开源代码学习、分析和交流的博客 2134

Nginx 健康检查模块:实现服务器状态监测与管理

Nginx 健康检查模块是保证服务器可用性的重要工具,它能够周期性地检查后端服务器的状态,并根据检查结果进行相应的管理。首先,在 Nginx 的配置文件中,需要定义后端服务器的列表,并设置健康检查的参数,如检查间隔时间、成功和失败的次数、超时时间以及检查类型。Nginx 健康检查模块是一种用于监测后端服务器状态的模块,它可以周期性地向后端服务器是一种用于监测后端服务器状态的模块,它可以周期性地向后端服务器发送请求,并根据响应结果来判断服务器的健康状况。配置项用于设置期望的响应状态码,这里期望的状态码是。

YbeCoder的博客 618

【Nginx】心跳检测之实战nginx_upstream_check_module模块

一、Nginx心跳检测问题 ​ Nginx自带的针对后端节点健康检查的功能比较简单,主要是通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完成。实际上,nginx不算是自带健康检查的功能,而是当后端节点出现故障时,会切换到健康节点来提供访问。 ​ 如下,是一段我们现在常用的配置 ups...

Mr_EvanChen的Blog 6335

我爬取了某非法网贷后台系统数据,终于知道什么叫做利滚利滚利滚利了

我爬取了非法贷款的后台网站!

weixin_44042821的博客 2880

Nginx镜像定制实战:基于官方镜像集成upstream健康检查模块,构建高可用容器

本文详细介绍了在微服务架构中如何通过定制Nginx Docker镜像集成nginx_upstream_check_module模块,实现后端服务的主动健康检查。该方案解决了传统被动故障转移的延迟问题,显著提升了服务可用性,适用于生产环境的高可用部署。

小厂Java老手的日常:代码跑得稳,小说看得深。记录踩坑经验,也分享书里悟出的感悟 1398

避坑指南:将大华官方Java SDK无缝迁移到SpringBoot 2.x项目的完整流程

本文详细介绍了如何将大华官方Java SDK无缝迁移到SpringBoot 2.x项目,重点解决内存管理、连接池设计和异步处理等核心问题。通过设备连接池化、异步非阻塞接口改造和内存管理优化,实现刷卡、刷脸等认证功能的高效整合,提升Web服务的稳定性和性能。

weixin_42557830的博客 417

5分钟搞懂MSDNet:用Transformer实现小样本语义分割的保姆级教程

本文详细介绍了MSDNet(Multi-Scale Decoder Network)如何利用Transformer架构实现小样本语义分割。通过多尺度解码器和空间Transformer解码器,MSDNet能够在仅有1-5张标注图像的情况下完成精确分割任务。文章提供了PyTorch代码实例和优化技巧,帮助开发者快速掌握这一前沿技术。

weixin_30832143的博客 506

Nginx后端节点的健康检查

本文介绍了Nginx后端节点健康检查的实现方法。首先讲解了Nginx原生模块(ngx_http_proxy_module和ngx_http_upstream_module)的故障转移机制,包括proxy_next_upstream等指令的配置,但指出其存在检测效率低、转发浪费等问题。然后重点介绍了淘宝技术团队开发的nginx_upstream_check_module模块,详细说明了其配置参数如interval、rise、fall等,以及支持的各种检查类型(tcp/http/mysql等)。

liaoyu8686的博客 368

WinCC ActiveX控件“许可证缺失”故障排查:从注册表修复到系统兼容性全解析

本文深入解析WinCC ActiveX控件报错“未找到许可证信息”的根本原因与解决方案。核心在于系统注册表中控件的设计时许可证密钥丢失或损坏。文章提供了从手动修复注册表、排查64位系统兼容性,到预防性环境部署的全流程专业指南,帮助工程师彻底解决这一常见故障。

oil88的博客 646

Nginx节点存活状态检查

目录1 nginx_upstream_check_module2 Nginx中加载并配置此模块3 web页面测试1 nginx_upstream_check_module可以利用第三方Nginx插件监控代理后端节点的服务器。 淘宝技术团队开发了一个Tengine(Nginx的分支)模块nginx_upstream_check_module,用于提供主动式后端服务器健康检查。通过它可以检测后端rea...

Vic的博客 7637

ROS中tf2_ros::Buffer.lookupTransform的正确使用姿势:从踩坑到填坑

本文深入解析了ROS中tf2_ros::Buffer.lookupTransform接口的正确使用方法,重点剖析了因tf2_ros::TransformListener生命周期管理不当导致的经典问题。文章提供了从理解Buffer与Listener共生关系、类成员设计黄金法则到参数详解与异常处理的完整避坑指南,并给出了构建健壮坐标变换工具类的实战方案,帮助开发者稳定实现机器人坐标系变换。

weixin_29253711的博客 136

修改 Alist 密码时报错?看看这个坑怎么解决!

启动服务后,再修改密码”。以后再遇到类似问题,先检查服务是否正常运行,说不定就能少踩不少坑。如果还有其他 Alist 的问题,欢迎在评论区留言交流~

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1154

openresty相关应用代理配置

openresty相关应用代理配置修改响应头cookie加入secure 修改响应头cookie加入secure header_filter_by_lua_block{ local cookies = ngx.header.set_cookie if cookies then if type(cookies) == “table” then local cookie={} for k,v in pairs(cookies) do cookie[k]=v…";httponly" end ngx.header.

xiaofengjiansa的博客 678

AI一键生成带货短视频:电商直播的未来

随着电子商务行业的快速发展,直播带货已成为一种极为有效的营销手段。然而,传统的人工直播方式存在诸多局限性,如人力成本高、主播培训周期长等问题。为了解决这些挑战,一种基于AI技术的一键生成带货视频解决方案应运而生——这就是“Anchor Crafter”。这项创新技术不仅能够自动创建高质量的带货视频,而且还能实现人物与商品之间的自然交互,极大地提升了用户体验。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 2204

使用nginx_upstream_check_module对后端服务进行健康检测

nginx可以方便快捷的配置负载均衡,并且可以配置失效策略,负载均衡算法等。如下,是一个简单的配置。 如上,配置了两台后端服务,一个81端口,一个82端口,81的权重为1,82的权重为2。每10s内如果失效次数到达2次,则任务后端服务不可用,判定为不可用,会将其从后端列表中摘除,10s再次加入后端服务器列表。 nginx默认的健康监测机制为被动检测,没有主动进行心跳检测。还好,有nginx...

maquealone的博客 5716

使用 YOLO26 的牙科全景X光片分析:从牙齿检测到疾病诊断

从数据预处理自动化、模型架构针对性优化到基于视觉特征的性能分析。它证明了在医学图像分析中,模型架构的进步(如YOLO26的特性)可以有效缓解数据不平衡和目标微小的问题,为临床自动化诊断提供了一个高效、可靠的解决方案。Python"""全局配置模块包含数据集路径、类别名称、论文复现参数、划分比例等常量"""import os# ==================== 路径配置 ====================

u012133341的博客 102

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Nginx负载均衡配置与线上故障排查的一些经验

很多人以为 Nginx 开源版自带健康检查,实际上没有,它只有被动检查,也就是请求失败几次后临时把机器踢掉,但不会主动探测。关键要加几个 proxy_set_header,Host、X-Real-IP、X-Forwarded-For 这三个基本是必写的,不然后端拿到的客户端 IP 全是 Nginx 的地址,日志里全是 127.0.0.1,查问题很麻烦。如果负载不均衡,检查一下 weight 配置,或者看后端机器的实际连接数,有时候一台机器处理特别慢,连接堆积,即使轮询也会显得负载高。

osfipin note 142

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

nginx被动检测与主动检测

Nginx健康检测

weixin_66536807的博客 3737

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

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

Statistics and Machine Learning Toolbox

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

后端面试必备:使用Nginx实现后端服务的健康检查

在现代分布式系统中,确保后端服务的可用性至关重要。Nginx作为高性能的反向代理服务器,提供了多种方式来实现后端服务的健康检查机制。本文将详细介绍如何配置Nginx的健康检查功能。

qq_58299462的博客 1781

Nginx负载健康检查配置-主动与被动检测

Nginx负载健康检查配置-主动与被动检测

礁之的博客 1606

nginx通过nginx_upstream_check_module实现后端健康检查

nginx_upstream_check_module是一个专门提供负载均衡器内节点的健康检查的,这个是淘宝技术团队开发的 nginx 模块 ,通过它可以用来检测后端 realserver 的健康状态。如果后端 realserver 不可用,则所以的请求就不会转发到该节点上。

筱long的博客 3225

Nginx1.12.1后端节点健康检测+会话保持方案

Nginx社区版,也就是我们能从官网免费下载到源码并且编译的版本,不是一个合格的商业负载均衡器。为什么这么说呢,是因为社区版在反向代理负载均衡这个功能上,很多重要的工作的解决方案是非常幼稚或者说是不成熟的。主要表现在两个方面,后端被负载均衡Web服务器的健康监测和Session回话保持功能。 首先说回话保持,nginx官方给出的解决方案是ip_hash,也就是根据访问客户的源IP地址进行分发。表

lvshaorong的博客 4879
上一篇: k8s1.23.15集群二进制部署
下一篇: nginx配置ssl证书
Apex   Predator
博客等级 码龄6年 9371粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值