Nginx 主动检查 被动检查

被动检查

proxy_next_upstream
在这里插入图片描述

http {
	upstrean httpget {
	//max_fail=5,失败5词,直接下线 down,
	//fail_timeout=10s, 10s之后  重新上线 up
	//fail_timeout=10s,  max_fail=5,5次失败在10s内,下线,
   		server IP:80 max_fails=5 fail_timeout=10s;
   		server IP:90;
   }
	server {
		listen 80;
		server_name:xxxx;
		localion / {
			proxy_next_upstream error timeout;
			proxy_next_upstream_timeout 15s;
			proxy_next_upstream_tries 5;
			proxy_pass http://httpget;
			root html;
		}
	}
}

nginx被动健康检查的缺陷

(1)Nginx只有当有访问时后,才发起对后端节点探测。

(2)如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为多了一次转发。

(3)自带模块无法做到预警。

主动检查

下载地址 https://github.com/yaoweibin/nginx_upstream_check_module
在这里插入图片描述
在这里插入图片描述
raw之后,复制里面的内容,
在nginx中 vim path

在nginx的解压文件的目录下,执行path
path -p1 > /xxx 上面的path路径
在这里插入图片描述
在这里插入图片描述
./configure --prefixe=/usr/local/nginx --add-module=/xx nginx_upstream_check_module 解压文件

make
make install

在这里插入图片描述
指定配置文件启动(如果不用默认的配置文件)
nginx -c /path/to/nginx.conf
nginx主动健康检查

(1)区别于nginx自带的非主动式的心跳检测,淘宝开发的tengine自带了一个提供主动式后端服务器心跳检测模块,若健康检查包类型为http,在开启健康检查功能后,nginx会根据设置的间隔向指定的后端服务器端口发送健康检查包,并根据期望的HTTP回复状态码来判断服务是否健康。

(2)后端真实节点不可用,则请求不会转发到故障节点

(3)故障节点恢复后,请求正常转发

  http {
        upstream cluster {
            # simple round-robin
            server 192.168.0.1:80;
            server 192.168.0.2:80;
            check interval=5000 rise=1 fall=3 timeout=4000;
            #check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
            #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
            #check_http_send "HEAD / HTTP/1.0\r\n\r\n";
            #check_http_expect_alive http_2xx http_3xx;
        }
        server {
            listen 80;
            location / {
                proxy_pass http://cluster;
            }

            location /status {
                check_status;
                access_log   off;
                #allow SOME.IP.ADD.RESS;
                #deny all;
           }
        }
    }


check功能

interval: 向后端发送的健康检查包的间隔,单位为毫秒
rsie: 如果连续成功次数达到rise_count,服务器就被认为是up
fall: 如果连续失败次数达到fall_count,服务器就被认为是down
timeout: 后端健康请求的超时时间,单位为毫秒
type: 健康检查包的类型,支持tcp、ssl_hello、http、mysql、ajp

用法: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port]
默认值: 如果没有配置参数,默认值是:interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp
位置:upstream块
#port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。

check_http_send 功能

用法:check_http_send “HEAD /ierp/ HTTP/1.0\r\n\r\n”
默认值: “GET / HTTP/1.0\r\n\r\n”
位置:upstream块
说明:http://IP:8080/做健康检测,但有问题的是,我们的服务不一定都是/结尾,有时需要加后缀才能访问到资源。比如,如果不在后端tomcat配置上下文路径那么(test.war)正常访问路径就是http://IP:8080/test,对于非根访问上述配置健康检查就一定都是error状态。
check_http_send字段 HEAD后面的 / 就是路径的配置,与其对应的正确能被识别到的地址为"HEAD /ierp/checkk8shealth HTTP/1.0\r\n\r\n",/后面可以为项目中的某个url只要能请求到就可以

check_http_expect_alive功能:

用法: check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]
默认值: http_2xx | http_3xx
位置:upstream块
说明:这些状态码表示上游服务器的http响应是正常的,后端是活的。

check_keepalive_requests功能:

用法: check_keepalive_requests num
默认值: check_keepalive_requests 1
位置:upstream块
说明:该指令指定在一个连接上发送的请求数,默认值1表示nginx在收到请求后肯定会关闭连接。

check_fastcgi_param功能:

用法:check_fastcgi_params parameter value ,如,默认指令是这样的:
check_fastcgi_param “REQUEST_METHOD” “GET”;
check_fastcgi_param “REQUEST_URI” “/”;
check_fastcgi_param “SCRIPT_FILENAME” “index.php”;
位置:upstream块
说明:如果设置检查类型为fastcgi,则检查函数将发送这个fastcgi报头来检查上游服务器。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/351193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DDOS攻击有哪几种类型

DDOS攻击“分布式拒绝服务”是目前网站服务器所常见的恶意攻击,其原理是通过控制大量肉鸡(虚假流量)访问网站服务器消耗带宽、内存等资源,其目的是使得网站服务器无法正常的访问,其后果是直接导致企业业务受损,数据丢失&#xff0…

墨水屏会议预约门牌,免布线方案会议室新选择!

墨水屏会议预约门牌是一种新型的会议室管理设备,它采用墨水屏技术,可实时显示会议信息、预约状态等,为会议室的管理和使用带来了极大的便利。与传统布线门牌相比,墨水屏会议预约门牌具有许多优点,如长寿命、低功耗、维…

万物简单AIoT 端云一体实战案例学习 之 空气质量检测系统

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 环境污染、空气污染是人类一直所关心并且讨论的永恒话题,人们对优质的环境和健康的身体非常向往。因此,如果有一种可以检测周围环境的空气质量的设备并且环境数据…

Cybellum—信息安全测试工具

产品概述 由于软件和数据在汽车上的使用越来越多,汽车越来越“智能化”,汽车行业面临着重大的信息安全挑战。2021年8月,ISO/SAE 21434正式发布,标准中对汽车的信息安全提出了规范化的要求,汽车信息安全不容忽视。 Cyb…

最新详细eclipse下载、安装、汉化教程

一、下载eclipse安装包 首先进入 eclipse官网 如下: 这里面有很多版本;我们小白一般选择第二个,向下滑动; 点击符合自己系统的版本。 这里我们切换镜像下载,一般选择离你最近的地址下载。 我建议选择大连东软信息学…

燃烧的指针(二)

🌈个人主页:小田爱学编程 🔥 系列专栏:c语言从基础到进阶 🏆🏆关注博主,随时获取更多关于c语言的优质内容!🏆🏆 😀欢迎来到小田代码世界~ &#x…

YOLOv8改进 | Conv篇 | 结合Dual思想利用HetConv创新一种全新轻量化结构CSPHet(参数量下降70W)

一、本文介绍 本文给大家带来的改进机制是我结合Dual的思想利用HetConv提出一种全新的结构CSPHet,我们将其用于替换我们的C2f结构,可以将参数降低越75W,GFLOPs降低至6.6GFLOPs,同时本文结构为我独家创新,全网无第二份,非常适合用于发表论文,该结构非常灵活,利用Dual卷…

pip 安装出现报错 SSLError(SSLError(“bad handshake

即使设置了清华源: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip 安装包不能配置清华源,出现报错: Retrying (Retry(total2, connectNone, readNone, redirectNone, statusNone)) after connection broken by ‘SSLE…

【DDD】学习笔记-控制软件复杂度的原则

虽然说认识到软件系统的复杂本性,并不足以让我们应对其复杂,并寻找到简化系统的解决之道;然而,如果我们连导致软件复杂度的本源都茫然不知,又怎么谈得上控制复杂呢?既然我们认为导致软件系统变得复杂的成因…

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models导读

通过生成一系列中间推理步骤(即“思维链”)显著提高大型语言模型进行复杂推理的能力 这篇论文探讨了如何通过生成一系列中间推理步骤(即“思维链”)显著提高大型语言模型进行复杂推理的能力。研究人员使用一种简单的方法——思维…

图算法 - 最短路径算法 (dijkstra) 迪克斯特拉算法

解决问题: 图中某个顶点到某一个顶点的最短路径 适用场景: 查找带权图的最短路径 代码设计: 首先定义一张图(邻接矩阵,二维数组方式实现) 生成一张图 迪克斯特拉算法实现 采用贪婪的方式,每次获取最短的一条路径,作为下次遍历的起点 使用visited 记录被访问过的节点避免…

水文模型SWMM与LisFlood耦合(pdf文档、软件见资源)

总技术路线图 INP生成图解 文献:面向服务的Web-SWMM构建研究 regardingINP为ArcGIS Pro项目 1.SWMM模型数据准备与参数设置 1.子汇水区 文件位于:beforeGenerateINP/generateSub.py(一级划分) 问题: 水文分析阈值划…

C#,数据检索算法之跳跃搜索(Jump Search)的源代码

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文提供跳跃搜索的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algorithm { public static class ArraySe…

Qt编写手机端视频播放器/推流工具/Onvif工具

一、视频播放器 同时支持多种解码内核,包括qmedia内核(Qt4/Qt5/Qt6)、ffmpeg内核(ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5/ffmpeg6)、vlc内核(vlc2/vlc3)、mpv内核(mpv1/mp2)、…

go slice 扩容实现

基于 Go 1.19。 go 的切片我们都知道可以自动地进行扩容,具体来说就是在切片的容量容纳不下新的元素的时候, 底层会帮我们为切片的底层数组分配更大的内存空间,然后把旧的切片的底层数组指针指向新的内存中: 目前网上一些关于扩容…

【DDD】学习笔记-软件开发团队的沟通与协作

领域驱动设计的核心是“领域”,因此要运用领域驱动设计,从一开始就要让团队走到正确的点儿上。当我们组建好了团队之后,应该从哪里开始?不是 UI 原型设计、不是架构设计、也不是设计数据库,这些事情虽然重要但却非最高…

Linux常见的管理命令

1. whoami 作用: 显示出当前有效的用户名称,Linux是多用户多任务 语法:whoami(选项) 选项: --help:在线帮助 --version:显示版本信息和退出 场景使用: 1. 当用户想要查看当前登录系统的用户…

时间数据前端显示格式化

背景 在实际我们通常需要在前端显示对数据操作的时间或者最近的更新时间,如果我们只是简单的使用 LocalDateTime.now()来传入数据不进行任何处理那么我们就会得到非常难看的数据 解决方式: 1). 方式一 在属性上加上注解,对日期进行格式…

【Py/Java/C++三种语言详解】LeetCode每日一题240122【贪心】LeetCode670、最大交换

文章目录 题目链接题目描述解题思路为什么是贪心一个带图的例子 代码pythonjavacpp时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目链接 LeetCode670、最大交换 题目描述 给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k 个非空的连…

深入浅出 diffusion(4):pytorch 实现简单 diffusion

1. 训练和采样流程 2. 无条件实现 import torch, time, os import numpy as np import torch.nn as nn import torch.optim as optim from torchvision.datasets import MNIST from torchvision import transforms from torch.utils.data import DataLoader from torchvision.…