nginx增加健康檢查接口的實現(xiàn)示例
在docker中部署的nginx或者在nginx部署的nginx一般是需要一個健康檢查接口的
這樣的話,就可以確定容器當前的狀態(tài)是否是健康的
那么,如何給nginx增加一個健康檢查的接口呢?
接下來呢,我們就演示一個在nginx中如何增加健康檢查的接口
1、打開nginx的配置文件(nginx.conf)
2、增加如下的location
location /healthcheck { default_type text/plain; return 200 "ok"; }
參數(shù)說明:
200是請求這個url返回的狀態(tài)碼 OK是返回的數(shù)據(jù)
default_type text/plain;表示是純文本顯示,瀏覽器訪問不會進行下載!
3、檢查配置文件、重啟nginx服務(wù)
nginx -t && nginx -s reload
4、瀏覽器訪問
OK,這樣就完成了,對一個nginx服務(wù),增加健康檢查接口的能力。
Nginx健康檢查分為被動探測與主動探測兩種,
Nginx被動健康檢查:
- 通過自帶健康檢查模塊ngx_http_upstream_module實現(xiàn)
- 當收到訪問時才對后端發(fā)起探測
- 請求根據(jù)轉(zhuǎn)發(fā)規(guī)則首次可能落到不可用節(jié)點,如多個節(jié)點故障則可能出現(xiàn)轉(zhuǎn)發(fā)多臺后才將請求轉(zhuǎn)到正常的服務(wù),在高并發(fā)的時候影響轉(zhuǎn)發(fā)效率
max_fails:在配置的fail_timeout期間,最大的連接錯誤數(shù),默認配置為1,如配置為0則表示不啟用探測,不管后端服務(wù)是否異常仍然會轉(zhuǎn)發(fā),單位次數(shù)
fail_timeout:服務(wù)被認為不可用的的時間,單位為s
如下配置:在3s內(nèi)中如果有1次連接失敗,則表示該節(jié)點不可用,將該節(jié)點下線3s后才會再次探測
upstream personal_1 { server ip:port max_fails=1 fail_timeout=3; server ip:port max_fails=1 fail_timeout=3; } server { listen 80 ; server_name _; location ~ / { proxy_pass http:// personal_1; } }
模擬每秒1次請求,可以發(fā)現(xiàn)192.168.125.133服務(wù)在17:42探測異常,此時同步轉(zhuǎn)發(fā)至IP1服務(wù),同時17:43-17:46將IP2剔除下線,17:47開始重新探測。
Nginx主動健康檢查:
- 通過nginx_upstream_check_module模塊實現(xiàn),官方nginx暫未加載該模塊,需要自行編譯
- 主動對后端服務(wù)發(fā)起探測,如后端服務(wù)不可用,則不轉(zhuǎn)發(fā)
- 后端服務(wù)恢復(fù)后,則主動添加進負載
主動探測關(guān)鍵參數(shù)interval、rise、fall、timeout、type、check_http_send、check_http_expect_alive:
interval:健康檢查時間,單位ms
rise:檢查成功次數(shù),達到該值則認為服務(wù)正常,加入負載
fall:檢查失敗次數(shù),達到該值則認為服務(wù)異常,剔除下線
timeout:檢查超時時間,單位ms
type:檢查類型,支持tcp/http等多種協(xié)議類型
check_http_send:http探測發(fā)送的請求,支持自定義接口,默認:"GET / HTTP/1.0\r\n\r\n"
check_http_expect_alive:http探測狀態(tài)碼,除了該配置上的其他狀態(tài)碼均認為服務(wù)不可用
如下配置:每1s發(fā)起主動探測,如出現(xiàn)1次失敗,則認為該節(jié)點不可用,剔除下線,檢驗返回碼2xx/3xx則認為服務(wù)可用。
upstream personal { server IP1; server IP2; check interval=1000 rise=1 fall=1 timeout=1000 type=http default_down=false; check_http_send "GET / HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; } server { listen 80 ; server_name _; location ~ / { proxy_pass http:// personal; } }
如下每秒探測1次,返回非2xx或3xx,服務(wù)異常,剔除下線,多次均未向該服務(wù)轉(zhuǎn)發(fā)。
到此這篇關(guān)于nginx增加健康檢查接口的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)nginx增加健康檢查接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx實現(xiàn)反向代理出現(xiàn)502的問題解決
本文主要介紹了nginx實現(xiàn)反向代理出現(xiàn)502的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08Linux下用Nginx作Perl程序服務(wù)器及其中Perl模塊的配置
這篇文章主要介紹了Linux下用Nginx作Perl程序服務(wù)器及其中Perl模塊的配置,文中使用到了FastCGI中間件進行連接,需要的朋友可以參考下2016-02-02PHP開發(fā)框架kohana3.3.1在nginx下的偽靜態(tài)設(shè)置例子
這篇文章主要介紹了PHP開發(fā)框架kohana3.3.1在nginx下的偽靜態(tài)設(shè)置例子,kohana曾經(jīng)是codeigniter框架的衍生版,后來發(fā)展成另一個獨立的PHP5開發(fā)框架,需要的朋友可以參考下2014-07-07Nginx 實現(xiàn)會話保持的方式配置小結(jié)
本文主要介紹了在NGINX中實現(xiàn)會話保持的幾種常見方法,包括IP哈希、基于Cookie的會話保持、基于URL參數(shù)的會話保持及使用第三方的nginx-sticky-module模塊,感興趣的可以了解一下2024-11-11kubernetes啟用PHP+Nginx網(wǎng)頁環(huán)境教程
這篇文章主要介紹了kubernetes啟用PHP+Nginx網(wǎng)頁環(huán)境教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10通過Nginx解決網(wǎng)絡(luò)隔離實踐記錄詳解
這篇文章主要介紹了通過Nginx解決網(wǎng)絡(luò)隔離實踐記錄詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05