原因?為什麼會使用nginx_heath 這個模組,主要是如nginx+tomcat部署的時,tomcat掛了之後nginx->upstream 輪詢是可以踢掉掛掉的tomcat服務的,如果部署的機器掛了之後nginx輪詢是不能踢掉的,如果服務再去請求,就會出現請求超時!
目前主要使用的是第二種解決方式:
1.新增nginx_heath模組
首先需要新增【nginx_upstream_check_module】模組:
./nginx -v
檢視已經新增的nginx模組如:--prefix=/opt/nginx-new --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre
進入nginx原始碼中為nginx打補丁:patch -p0 < ../nginx_upstream_check_module-master/check_1.5.12+.patch,這個需要合適的版本,不然會出現打補丁失敗,如果提示沒有patch命令的話,請先安裝yum -y install patch
追加nginx_upstream_check_module模組:--prefix=/opt/nginx-new --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre --add-module=/home/software/nginx_upstream_check_module-master
然後make
2.配置upstream加入健康檢查
upstream name
上面配置的意思是,對name這個負載均衡條目中的所有節點,每個3秒檢測一次,請求2次正常則標記 realserver狀態為up,如果檢測 5 次都失敗,則標記 realserver的狀態為down,超時時間為1秒。
指定引數的意思:
- interval:向後端傳送的健康檢查包的間隔。
- fall(fall_count): 如果連續失敗次數達到fall_count,伺服器就被認為是down。
- rise(rise_count): 如果連續成功次數達到rise_count,伺服器就被認為是up。
- timeout: 後端健康請求的超時時間。
- default_down: 設定初始時伺服器的狀態,如果是true,就說明預設是down的,如果是false,就是up的。預設值是true,也就是一開始伺服器認為是不可用,要等健康檢查包達到一定成功次數以後才會被認為是健康的。
- type:健康檢查包的型別,現在支援以下多種型別
- tcp:簡單的tcp連線,如果連線成功,就說明後端正常。
- ssl_hello:傳送乙個初始的ssl hello包並接受伺服器的ssl hello包。
- http:傳送http請求,通過後端的回覆包的狀態來判斷後端是否存活。
- mysql: 向mysql伺服器連線,通過接收伺服器的greeting包來判斷後端是否存活。
- ajp:向後端傳送ajp協議的cping包,通過接收cpong包來判斷後端是否存活。
- port: 指定後端伺服器的檢查埠。你可以指定不同於真實服務的後端伺服器的埠,比如後端提供的是443埠的應用,你可以去檢查80埠的狀態來判斷後端健康狀況。預設是0,表示跟後端server提供真實服務的埠一樣。該選項出現於tengine-1.4.0。
3.配置web頁面
location /nstatus
如圖:
如果有down掉的如圖
另外還支援引數請求?status=up,顯示出up狀態的upstream。
nginx 新增 模組
title nginx 新增 模組 date 2019 10 31 11 21 46 categories tags config nginx 說明 已經安裝好的nginx,需要新增乙個未被編譯安裝的模組 以nginx rtmp module模組為例 則需要重新編譯nginx,而不是像apache一...
Nginx 新增模組
原已經安裝好的 nginx,現在需要新增乙個未被編譯安裝的模組 nginx v 可以檢視原來編譯時都帶了哪些引數 usr local nginx sbin nginx v 原來的引數 新增的引數 步驟如下 可以通過官方檢視模組安裝例子 1.使用引數重新配置 2.編譯 make 不要 make ins...
nginx 新增C 模組
ps 埠改變檔案 安裝目錄的 安裝目錄 conf nginx.comf中 1 configure prefix usr local notifyserver add module usr local src nginx notifyserver module prefix usr local not...