一、环境说明

        系统版本:CentOS 7.9

        内核版本:3.10.0-1160.119.1

        Nginx版本:1.26.3

        第三方检测模块及版本:nginx_upstream_check_module(v0.4.0,兼容nginx 1.20+)

二、nginx安装部署

        2.1 下载检测模块

        目前程序包的模块已经升级,升级后支持nginx 1.20以上的版本,源码包下载地址如下:

https://github.com/yaoweibin/nginx_upstream_check_module/archive/refs/tags/v0.4.0.tar.gz

        2.2 安装相关依赖包

        在执行部署之前,需要安装相关依赖包,如nginx所需的gcc、gcc-c++、openssl、zlib、pcre等,以及nginx_upstream_check_module执行补丁命令时所需的patch组件。

        由于现在CentOS 7官方源已经无法使用,因此需要使用国内的其他yum源,或者使用CentOS 7.9镜像来配置本地的yum源,以安装相关依赖包。这里就不做过多说明,不熟悉的小伙伴,可以自行联网查询相关配置方法。

2.3 执行安装

        2.3.1 上传相关包

        将nginx以及nginx_upstream_check_module的源码包上传到Linux服务器的/usr/local/src目录下,并解压。

[root@vm-localsystem src]# ls 
nginx-1.26.3.tar.gz  nginx_upstream_check_module-0.4.0.tar.gz
[root@vm-localsystem src]# tar -xzf nginx-1.26.3.tar.gz 
[root@vm-localsystem src]# tar -xzf nginx_upstream_check_module-0.4.0.tar.gz 
[root@vm-localsystem src]# ls
nginx-1.26.3  nginx-1.26.3.tar.gz  nginx_upstream_check_module-0.4.0  nginx_upstream_check_module-0.4.0.tar.gz

        2.3.2 执行patch操作

[root@vm-localsystem src]# cd nginx-1.26.3/
[root@vm-localsystem nginx-1.26.3]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@vm-localsystem nginx-1.26.3]# patch -p1 < ../nginx_upstream_check_module-0.4.0/check_1.20.1+.patch 
patching file src/http/modules/ngx_http_upstream_hash_module.c
patching file src/http/modules/ngx_http_upstream_ip_hash_module.c
patching file src/http/modules/ngx_http_upstream_least_conn_module.c
patching file src/http/ngx_http_upstream_round_robin.c
patching file src/http/ngx_http_upstream_round_robin.h

        2.3.3 创建用户和组

这里使用普通用户和组来安装和运行nginx,用户和组(如:app)需要提前创建。

[root@vm-localsystem ~]# groupadd app
[root@vm-localsystem ~]# useradd -d /data -g app app
[root@vm-localsystem ~]# chown -R app:app /data

        2.3.4 编译和安装nginx

        编译和安装的时候还是需要使用root用户的,但是需要在编译参数里面增加--group=app --user=app这样的参数,另外还需要增加引入nginx_upstream_check_module-0.4.0模块的参数--add-module=../nginx_upstream_check_module-0.4.0。

        编译安装成功后,记得将nginx安装目录的用户和组设置为app:app。

[root@vm-localsystem ~]# cd /usr/local/src/nginx-1.26.3/
[root@vm-localsystem nginx-1.26.3]# ./configure --prefix=/data/nginx --with-threads --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx_upstream_check_module-0.4.0 --group=app --user=app[root@vm-localsystem nginx-1.26.3]# make[root@vm-localsystem nginx-1.26.3]# make install[root@vm-localsystem nginx-1.26.3]# chown -R app:app /data/nginx/

        2.3.5 nginx配置修改

        这里需要注意的是,由于nginx使用使用普通用户运行,因此不能使用默认的80监听端口了,我这里修改为了8081端口。其他配置可根据需要自行修改。

        2.3.6 启动nginx服务

        nginx配置校验通过后,即可启动nginx服务,可使用-V检查nginx的编译参数。

[app@vm-localsystem conf]$ ../sbin/nginx -t
nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful
[app@vm-localsystem conf]$ ../sbin/nginx -V
nginx version: nginx/1.26.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/data/nginx --with-threads --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx_upstream_check_module-0.4.0 --group=app --user=app
[app@vm-localsystem conf]$ ../sbin/nginx 
[app@vm-localsystem conf]$ ps -ef| grep nginx| grep -v grep
app        4801      1  0 11:12 ?        00:00:00 nginx: master process ../sbin/nginx
app        4802   4801  2 11:12 ?        00:00:00 nginx: worker process
app        4803   4801  2 11:12 ?        00:00:00 nginx: worker process

三、主动检测功能测试

3.1 启动两个Tomcat实例

        在一台Linux服务器上,启动2个Tomcat实例,部署的应用都为haweb(Oracle官方免费提供的一个测试小应用),为了做区分,对页面做了点改造,以示区别

        

        tomcat1

        
        tomcat2

        

        在nginx中对这两个真实的页面访问地址进行反向代理和负载均衡配置,部分配置如下:

http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;sendfile        on;tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;gzip  on;upstream haweb {server 192.168.223.96:18170; server 192.168.223.96:18171;#check interval=3000 rise=2 fall=5 timeout=1000 type=tcp;check interval=3000 rise=2 fall=5 timeout=1000 type=http; check_http_send "GET /haweb HTTP/1.0\r\n\r\n";check_http_expect_alive http_2xx http_3xx;}server {listen       8081;server_name  192.168.223.199;charset utf-8;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}location /haweb {proxy_pass http://haweb;}location /status {check_status;access_log   off;allow 192.168.223.3;deny all;}

备注:

        1)upstream{}配置,以及两个location{}配置,及/haweb /status;

        2)upstream{}块配置中,启用主动健康检查,检查方式为http,使用http 1.0协议,发送/haweb的get请求。期望返回的正常的http代码为2XX、3XX开头的返回码。

        配置校验没问题,然后热加载,即可通过nginx的IP和端口,来访问后端页面,默认访问策略为轮询,所以,刷新页面会在testPage1和testPage2之间来回切换。

[app@vm-localsystem conf]$ ../sbin/nginx -t
nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful
[app@vm-localsystem conf]$ ../sbin/nginx -s reload
[app@vm-localsystem conf]$ 

        

        

        可以根据配置status模块,来查看探测的结果

        

        把tomcat2的服务进程杀掉后,探测页面及展示出探测失败的告警

        

四、参考

https://www.cnblogs.com/linyouyi/p/11502282.html

https://www.cnblogs.com/LiuChang-blog/p/12494567.html

https://www.cnblogs.com/Xinenhui/p/15944725.html

https://www.cnblogs.com/dance-walter/p/12212607.html

https://github.com/yaoweibin/nginx_upstream_check_module

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88571.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88571.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88571.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytest中mark的使用

在pytest中&#xff0c;mark&#xff08;标记&#xff09;是用于对测试用例进行分类、筛选或附加元数据的重要功能。以下是其核心使用方法&#xff1a; 1. ‌基本标记定义与使用‌ ‌注册标记‌&#xff1a;在pytest.ini中预先定义标记&#xff08;避免运行时警告&#xff09;&…

STM32N6--NPU简单介绍

关键词&#xff1a;STM32N6、生物神经元、神经网络处理单元&#xff08;NPU&#xff09;、数据流处理 参考链接&#xff1a; RM0486 Reference manual STM32N647/657xx Arm-based 32-bit MCUsST_中文论坛【资料合集】STM32N6超全资料合集&#xff08;定期更新&#xff09;B站_…

一款开源免费、通用的 WPF 主题控件包

前言 今天大姚给大家分享一款开源免费&#xff08;MIT License&#xff09;、通用的 WPF 主题控件包&#xff1a;Rubyer WPF。 WPF介绍 WPF是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动…

windows安装python环境以及对应编辑器的详细流程

windows安装python环境以及对应编辑器的详细流程 一、安装 Python 环境 步骤 1&#xff1a;下载 Python 安装包 访问 Python 官网&#xff1a;https://www.python.org/downloads/windows/选择最新稳定版本&#xff08;如 Python 3.12.x&#xff09;&#xff0c;点击 Download W…

高保真组件库:下拉多选

制作一个高保真的下拉多选需要具备多种交互事件。 拖拽一个文本框并命名为“下拉文本输入框”和一个向下的箭头组合在一起,外观上看起来是下拉组件。为了美观调整一些边框颜色、圆角、文字左边距等。 拖拽一个矩形作为下拉选项的容器,启动阴影xy都为0 制作下拉选项:拖拽一个…

sqli-labs靶场通关笔记:第1-4关 联合注入

第1关&#xff1a;单引号闭合1.这是第1关的界面&#xff0c;让我们以id作为参数输入&#xff0c;方式为数值&#xff0c;这里输入?id1看一下。2.显示了id1的用户名和密码。分析&#xff1a;在sql注入漏洞中&#xff0c;第一步是要寻找注入点&#xff0c;即可以输入参数的地方&…

和服腰封改造:3种解构主义造型的东方美学新解

和服腰封改造&#xff1a;3种解构主义造型的东方美学新解在东京原宿的小巷里&#xff0c;一场关于和服腰封的"温柔革命"正在悄然发生。年轻设计师们将传统宽腰带拆解重构&#xff0c;创造出既保留东方神韵又充满当代气息的造型艺术。正如一位新锐设计师所说&#xff…

什么是强化学习(RL)--3

如果reward大多数情况下都是0&#xff0c;只有少数是很大的值。这种情况下就是稀疏reward的问题。比如你要教机械手臂拴螺丝&#xff0c;只有最后把螺丝栓进去才可以&#xff0c;其余机械手臂的位置都不可以。额外的reward帮agent学习。reward shaping射击游戏cs,这个游戏中&am…

彩虹云商城全解源码系统|人工客服系统

核心升级亮点 人工客服系统&#xff1a;新增智能工单在线IM双模式多端同步&#xff1a;PCH5小程序APP四端数据实时互通支付升级&#xff1a;支持数字人民币收款安全加固&#xff1a;内置Web应用防火墙(WAF) 部署教程 ▶ B站视频教程 包含&#xff1a; 宝塔环境配置&#xf…

川翔云电脑:突破硬件极限,重构设计生产力范式

一、硬核配置&#xff1a;显存与算力的双重革命川翔云电脑提供从 RTX 2080 Ti 到 RTX 4090 Plus 的全系列 GPU 机型&#xff0c;其中旗舰级 4090 Plus 单卡配备48GB 超大显存&#xff0c;较传统 4090 显存翻倍&#xff0c;可流畅加载 1200 万面数的超复杂模型&#xff08;如《黑…

深入解析 TCP 连接状态与进程挂起、恢复与关闭

文章目录深入解析 TCP 连接状态与进程挂起、恢复与关闭一、TCP 连接的各种状态1. **LISTEN**&#xff08;监听&#xff09;2. **SYN_SENT**&#xff08;SYN 已发送&#xff09;3. **SYN_RECEIVED**&#xff08;SYN 已接收&#xff09;4. **ESTABLISHED**&#xff08;已建立&…

在mac m1基于llama.cpp运行deepseek

lama.cpp是一个高效的机器学习推理库&#xff0c;目标是在各种硬件上实现LLM推断&#xff0c;保持最小设置和最先进性能。llama.cpp支持1.5位、2位、3位、4位、5位、6位和8位整数量化&#xff0c;通过ARM NEON、Accelerate和Metal支持Apple芯片&#xff0c;使得在MAC M1处理器上…

多模态大语言模型arxiv论文略读(154)

Visual-Oriented Fine-Grained Knowledge Editing for MultiModal Large Language Models ➡️ 论文标题&#xff1a;Visual-Oriented Fine-Grained Knowledge Editing for MultiModal Large Language Models ➡️ 论文作者&#xff1a;Zhen Zeng, Leijiang Gu, Xun Yang, Zhan…

Python PDF处理库深度对比:PyMuPDF、pypdfium2、pdfplumber、pdfminer的关系与区别

Python PDF处理库深度对比&#xff1a;PyMuPDF、pypdfium2、pdfplumber、pdfminer的关系与区别前言1. 库的基本介绍1.1 PyMuPDF (fitz)1.2 pypdfium21.3 pdfplumber1.4 pdfminer2. 关系图谱3. 核心区别对比3.1 性能对比3.2 功能对比4. 代码示例对比4.1 基本文本提取PyMuPDFpypd…

制作 ext4 文件系统

按以下步骤操作可以将一个文件夹制作成 Android 可用的 ext4 格式的 img 文件&#xff1a;方法 1&#xff1a;使用标准 Linux 工具&#xff08;推荐&#xff09; 步骤 1&#xff1a;安装必要工具 sudo apt update sudo apt install e2fsprogs android-sdk-libsparse-utils # 适…

Flink自定义函数

一、UDF 核心原理 Flink 自定义函数&#xff08;UDF&#xff09;是扩展 Table API/SQL 能力的核心机制&#xff0c;允许将自定义逻辑嵌入查询。其设计遵循以下原则&#xff1a; 1. 函数类型体系类型输入输出关系核心用途标量函数&#xff08;ScalarFunction&#xff09;0~N 个标…

【AI学习】大模型微调实践

参加了书生・浦语&#xff08;InternLM&#xff09;端侧小模型论文分类微调练习打榜赛 具体的实践教程在&#xff1a; https://aicarrier.feishu.cn/wiki/D7kZw9Nx4iMyDnkpL0Gc5giNn5g 折腾了十多天&#xff0c;各种尝试&#xff0c;AB榜单终于进入了前十都&#xff0c;累死 …

ElementUI:高效优雅的Vue.js组件库

Hi&#xff0c;我是布兰妮甜 &#xff01;在当今快节奏的前端开发领域&#xff0c;选择一个功能强大、设计优雅且易于使用的UI组件库至关重要。ElementUI作为基于Vue.js的知名组件库&#xff0c;凭借其丰富的组件体系、一致的设计语言和出色的开发体验&#xff0c;已成为众多企…

Java Stream流介绍及使用指南

背景在Java 8之前&#xff0c;处理集合数据&#xff08;如List, Set, Map&#xff09;通常意味着编写冗长的、以操作为中心的代码&#xff1a;创建迭代器、使用for或while循环遍历元素、在循环体内进行条件判断和操作、收集结果。这种方式虽然有效&#xff0c;但不够简洁、可读…

JDK 1.7 vs JDK 1.8

JDK版本比较 Java平台的两次重大飞跃&#xff1a;JDK 7的稳定优化与JDK 8的革命性创新引言&#xff1a;Java的进化之路Java作为企业级开发的支柱语言&#xff0c;其版本更新直接影响着全球数百万开发者。JDK 1.7&#xff08;2011年发布&#xff09;和JDK 1.8&#xff08;2014年…