【Nginx】實測Nginx增加第三方主動式健康檢查模塊

一、環境說明

????????系統版本: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年…