Nginx健康檢查【轉(zhuǎn)】
Nginx作為一款強(qiáng)大的反向代理服務(wù)和負(fù)載均衡服務(wù),具有高并發(fā)、低消耗、配置簡(jiǎn)單等特點(diǎn),而健康檢查,則是為了保障nginx能夠準(zhǔn)確的轉(zhuǎn)發(fā)到后端的可用服務(wù)。
Nginx健康檢查分為被動(dòng)探測(cè)與主動(dòng)探測(cè)兩種,顧名思義,被動(dòng)探測(cè)指nginx被動(dòng)的發(fā)起探測(cè);而主動(dòng)探測(cè)則是在固定時(shí)間(可配置)主動(dòng)發(fā)起探測(cè),更具靈活性。
一、Nginx被動(dòng)健康檢查
通過(guò)自帶健康檢查模塊ngx_http_upstream_module實(shí)現(xiàn); 當(dāng)收到訪問(wèn)時(shí)才對(duì)后端發(fā)起探測(cè); 請(qǐng)求根據(jù)轉(zhuǎn)發(fā)規(guī)則首次可能落到不可用節(jié)點(diǎn),如多個(gè)節(jié)點(diǎn)故障則可能出現(xiàn)轉(zhuǎn)發(fā)多臺(tái)后才將請(qǐng)求轉(zhuǎn)到正常的服務(wù),在高并發(fā)的時(shí)候影響轉(zhuǎn)發(fā)效率。被動(dòng)健康檢查關(guān)鍵參數(shù)max_fails與fail_timeout,官方描述如下:
max_fails:在配置的fail_timeout期間,最大的連接錯(cuò)誤數(shù),默認(rèn)配置為1,如配置為0則表示不啟用探測(cè),不管后端服務(wù)是否異常仍然會(huì)轉(zhuǎn)發(fā),單位次數(shù)
fail_timeout:服務(wù)被認(rèn)為不可用的的時(shí)間,單位為s
如下配置:在3s內(nèi)中如果有1次連接失敗,則表示該節(jié)點(diǎn)不可用,將該節(jié)點(diǎn)下線3s后才會(huì)再次探測(cè)
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次請(qǐng)求,可以發(fā)現(xiàn)192.168.125.133服務(wù)在17:42探測(cè)異常,此時(shí)同步轉(zhuǎn)發(fā)至IP1服務(wù),同時(shí)17:43-17:46將IP2剔除下線,17:47開(kāi)始重新探測(cè)。
二、Nginx主動(dòng)健康檢查
通過(guò)nginx_upstream_check_module模塊實(shí)現(xiàn),官方nginx暫未加載該模塊,需要自行編譯; 主動(dòng)對(duì)后端服務(wù)發(fā)起探測(cè),如后端服務(wù)不可用,則不轉(zhuǎn)發(fā); 后端服務(wù)恢復(fù)后,則主動(dòng)添加進(jìn)負(fù)載。主動(dòng)探測(cè)關(guān)鍵參數(shù)interval、rise、fall、timeout、type、check_http_send、check_http_expect_alive:
interval:健康檢查時(shí)間,單位ms
rise:檢查成功次數(shù),達(dá)到該值則認(rèn)為服務(wù)正常,加入負(fù)載
fall:檢查失敗次數(shù),達(dá)到該值則認(rèn)為服務(wù)異常,剔除下線
timeout:檢查超時(shí)時(shí)間,單位ms
type:檢查類型,支持tcp/http等多種協(xié)議類型
check_http_send:http探測(cè)發(fā)送的請(qǐng)求,支持自定義接口,默認(rèn):"GET / HTTP/1.0rnrn"
check_http_expect_alive:http探測(cè)狀態(tài)碼,除了該配置上的其他狀態(tài)碼均認(rèn)為服務(wù)不可用
如下配置:每1s發(fā)起主動(dòng)探測(cè),如出現(xiàn)1次失敗,則認(rèn)為該節(jié)點(diǎn)不可用,剔除下線,檢驗(yàn)返回碼2xx/3xx則認(rèn)為服務(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.0rnrn"; check_http_expect_alive http_2xx http_3xx; } server { listen 80 ; server_name _; location ~ / { proxy_pass http:// personal; } }
如下每秒探測(cè)1次,返回非2xx或3xx,服務(wù)異常,剔除下線,多次均未向該服務(wù)轉(zhuǎn)發(fā)。
轉(zhuǎn)自
Nginx健康檢查 - 知乎
https://zhuanlan.zhihu.com/p/652813977
相關(guān)知識(shí)
nginx配置后端服務(wù)健康檢查 nginx健康檢查模塊
nginx之健康檢查
Nginx被動(dòng)健康檢查和主動(dòng)健康檢查
nginx中健康檢查(health
Nginx
Pod的健康檢查機(jī)制
docker容器的health健康狀態(tài)檢查【轉(zhuǎn)】
負(fù)載均衡SLB四層(TCP/UDP)健康檢查出現(xiàn)異常的解決方法
[云原生] Kubernetes(k8s)健康檢查詳解與實(shí)戰(zhàn)演示(就緒性探針 和 存活性探針)
Docker健康檢查與狀態(tài)監(jiān)控怎么實(shí)現(xiàn)
網(wǎng)址: Nginx健康檢查【轉(zhuǎn)】 http://m.u1s5d6.cn/newsview1144093.html
推薦資訊
- 1發(fā)朋友圈對(duì)老公徹底失望的心情 12775
- 2BMI體重指數(shù)計(jì)算公式是什么 11235
- 3補(bǔ)腎吃什么 補(bǔ)腎最佳食物推薦 11199
- 4性生活姿勢(shì)有哪些 盤點(diǎn)夫妻性 10428
- 5BMI正常值范圍一般是多少? 10137
- 6在線基礎(chǔ)代謝率(BMR)計(jì)算 9652
- 7一邊做飯一邊躁狂怎么辦 9138
- 8從出汗看健康 出汗透露你的健 9063
- 9早上怎么喝水最健康? 8613
- 10五大原因危害女性健康 如何保 7828