首頁(yè) 資訊 nginx配置后端服務(wù)健康檢查 nginx健康檢查模塊

nginx配置后端服務(wù)健康檢查 nginx健康檢查模塊

來(lái)源:泰然健康網(wǎng) 時(shí)間:2025年04月13日 12:02

前言

     主動(dòng)地健康檢查,nignx定時(shí)主動(dòng)地去ping后端的服務(wù)列表,當(dāng)發(fā)現(xiàn)某服務(wù)出現(xiàn)異常時(shí),把該服務(wù)從健康列表中移除,當(dāng)發(fā)現(xiàn)某服務(wù)恢復(fù)時(shí),又能夠?qū)⒃摲?wù)加回健康列表中。nginx自帶的upstream輪詢(xún)可以實(shí)現(xiàn)業(yè)務(wù)接口切換, nginx有一個(gè)開(kāi)源的實(shí)現(xiàn)nginx_upstream_check_module模塊能更加平滑的進(jìn)行業(yè)務(wù)切換

nginx自帶健康檢查的缺陷:

Nginx只有當(dāng)有訪(fǎng)問(wèn)時(shí)后,才發(fā)起對(duì)后端節(jié)點(diǎn)探測(cè)。如果本次請(qǐng)求中,節(jié)點(diǎn)正好出現(xiàn)故障,Nginx依然將請(qǐng)求轉(zhuǎn)交給故障的節(jié)點(diǎn),然后再轉(zhuǎn)交給健康的節(jié)點(diǎn)處理。所以不會(huì)影響到這次請(qǐng)求的正常進(jìn)行。但是會(huì)影響效率,因?yàn)槎嗔艘淮无D(zhuǎn)發(fā)自帶模塊無(wú)法做到預(yù)警被動(dòng)健康檢查

使用第三訪(fǎng)模塊nginx_upstream_check_module:

區(qū)別于nginx自帶的非主動(dòng)式的心跳檢測(cè),淘寶開(kāi)發(fā)的tengine自帶了一個(gè)提供主動(dòng)式后端服務(wù)器心跳檢測(cè)模塊若健康檢查包類(lèi)型為http,在開(kāi)啟健康檢查功能后,nginx會(huì)根據(jù)設(shè)置的間隔向指定的后端服務(wù)器端口發(fā)送健康檢查包,并根據(jù)期望的HTTP回復(fù)狀態(tài)碼來(lái)判斷服務(wù)是否健康。后端真實(shí)節(jié)點(diǎn)不可用,則請(qǐng)求不會(huì)轉(zhuǎn)發(fā)到故障節(jié)點(diǎn)故障節(jié)點(diǎn)恢復(fù)后,請(qǐng)求正常轉(zhuǎn)發(fā)

本文介紹的nginx_upstream_check_module模塊針對(duì)nginx1.2+

一、模塊安裝

1、nginx官方下載地址,下載版本然后用tar -zxvf解壓nginx: download

http://nginx.org/en/download.html

 2、nginx_upstream_check_module模塊下載

unzip master

 3、加載nginx_upstream_check_module模塊

進(jìn)去下載nginx解壓目錄下運(yùn)行如下打包命令,如果沒(méi)有patch就yum inst all patch -y

注:不管是1.20.············都加載check_1.20.1+.patch,只看主版本號(hào)

 patch -p1 < ../nginx_upstream_check_module-master/check_1.20.1+.patch

 4、編譯安裝nginx,注意各自模塊的存放位置,

./configure --user=root --group=root --with-http_ssl_module --with-threads --with-file-aio --with-http_stub_status_module --add-module=/usr/local/src/nginx_upstream_check_module-master/

make && make install

二、nginx配置

我nginx的配置一般是單獨(dú)include conf.d/*.conf;

vim /usr/local/nginx/conf/nginx.conf新增

[root@song ] cd /usr/local/nginx/conf/
[root@song conf]# mkdir conf.d

1、配置upstream.conf

項(xiàng)目部署目錄/usr/local/tomcat1/webapps/ROOT/WEB-INF/下

探針文件放在/usr/local/tomcat1/webapps/ROOT/monitor/index.html

當(dāng)檢測(cè)不到index.html存在會(huì)自動(dòng)切換到另外一臺(tái)服務(wù)器,適用于Jenkins發(fā)版,后面會(huì)在Jenkins里進(jìn)行補(bǔ)充 

interval檢測(cè)間隔時(shí)間,單位為毫秒,rsie請(qǐng)求2次正常的話(huà),標(biāo)記此realserver的狀態(tài)為up,fall表示請(qǐng)求5次都失敗的情況下,標(biāo)記此realserver的狀態(tài)為down,timeout為超時(shí)時(shí)間,單位為毫秒。

2、 在server段里面可以加入查看realserver狀態(tài)的頁(yè)面

3、啟動(dòng)nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

4、查看nginx upstream狀態(tài)

移除/usr/local/tomcat1/webapps/ROOT/monitor/index.html這個(gè)探針文件,在check status第5次的時(shí)候就會(huì)判斷后端不可連而把連接都會(huì)轉(zhuǎn)移到另外一臺(tái)服務(wù)器,然后會(huì)根據(jù)上面設(shè)定的時(shí)間間隔向指定的后端服務(wù)器端口發(fā)送健康檢查包,并根據(jù)期望的HTTP回復(fù)狀態(tài)碼來(lái)判斷服務(wù)是否健康。這時(shí)候就可以對(duì)移除探針的服務(wù)器進(jìn)行項(xiàng)目部署,讓用戶(hù)無(wú)感訪(fǎng)問(wèn)不受影響,部署完畢重新創(chuàng)建探針文件即可恢復(fù)

 server number是后端服務(wù)器的數(shù)量
generation是Nginx reload的次數(shù)
Index是服務(wù)器的索引
Upstream是在配置中upstream的名稱(chēng)
Name是服務(wù)器IP
Status是服務(wù)器的狀態(tài)
Rise是服務(wù)器連續(xù)檢查成功的次數(shù)
Fall是連續(xù)檢查失敗的次數(shù)
Check type是檢查的方式
Check port是后端專(zhuān)門(mén)為健康檢查設(shè)置的端口

相關(guān)知識(shí)

nginx之健康檢查
Nginx被動(dòng)健康檢查和主動(dòng)健康檢查
nginx中健康檢查(health
Nginx
Pod的健康檢查機(jī)制
負(fù)載均衡SLB四層(TCP/UDP)健康檢查出現(xiàn)異常的解決方法
[云原生] Kubernetes(k8s)健康檢查詳解與實(shí)戰(zhàn)演示(就緒性探針 和 存活性探針)
健康檢查配置
微服務(wù)平臺(tái) TSF 健康檢查
docker容器的health健康狀態(tài)檢查【轉(zhuǎn)】

網(wǎng)址: nginx配置后端服務(wù)健康檢查 nginx健康檢查模塊 http://www.u1s5d6.cn/newsview1129126.html

推薦資訊