日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx通过max_fails和fail_timeout在进行HTTP运行状况检查

發(fā)布時間:2024/1/18 Nginx 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx通过max_fails和fail_timeout在进行HTTP运行状况检查 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Nginx通過max_fails和fail_timeout在進(jìn)行HTTP運(yùn)行狀況檢查

?

英文來源:https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/

?

HTTP運(yùn)行狀況檢查

本文介紹如何在NGINX Plus和NGINX Open Source中配置和使用HTTP運(yùn)行狀況檢查。

  • 介紹
  • 先決條件
  • 被動健康檢查
    • 服務(wù)器慢啟動
  • 主動健康檢查
    • 指定請求的URI
    • 定義自定義條件

?

介紹

NGINX和NGINX Plus可以持續(xù)檢查您所部署的上游服務(wù)器,避免出現(xiàn)故障的服務(wù)器,并可以將恢復(fù)的服務(wù)器正常地添加到負(fù)載平衡組中。

?

先決條件

  • 對于被動健康檢查,可以使用NGINX Open Source或NGINX Plus
  • 對于主動健康檢查和實(shí)時活動監(jiān)控儀表板,NGINX Plus
  • 一個負(fù)載均衡的HTTP上游服務(wù)器組

?

被動健康檢查

對于被動運(yùn)行狀況檢查,NGINX和NGINX Plus會監(jiān)視事務(wù)的發(fā)生,并嘗試恢復(fù)失敗的連接。如果仍然無法恢復(fù)交易,則NGINX Open Source和NGINX Plus將服務(wù)器標(biāo)記為不可用,并暫時停止向其發(fā)送請求,直到再次將其標(biāo)記為活動。

對于每個上游服務(wù)器,使用塊中server指令的參數(shù)定義了標(biāo)記上游服務(wù)器不可用的條件upstream:

  • fail_timeout?– 多次嘗試失敗而將服務(wù)器標(biāo)記為不可用的時間,以及將服務(wù)器標(biāo)記為不可用的時間(默認(rèn)為10秒)。
  • max_fails?– 在服務(wù)器被標(biāo)記為不可用的時間內(nèi)必須發(fā)生的失敗嘗試次數(shù)(默認(rèn)為1次嘗試)。

在下面的示例中,如果NGINX無法在30秒內(nèi)向服務(wù)器發(fā)送請求或沒有收到3次響應(yīng),則將服務(wù)器標(biāo)記為30秒鐘不可用:

upstream backend {server backend1.example.com;server backend2.example.com max_fails=3 fail_timeout=30s; }

請注意,如果組中只有一臺服務(wù)器,則fail_timeout和max_fails參數(shù)將被忽略,并且服務(wù)器永遠(yuǎn)不會被標(biāo)記為不可用。

?

?

服務(wù)器慢啟動

最近恢復(fù)的服務(wù)器很容易被連接淹沒,這可能導(dǎo)致服務(wù)器再次標(biāo)記為不可用。慢速啟動允許上游服務(wù)器在恢復(fù)或可用后將其權(quán)重從零逐漸恢復(fù)到其標(biāo)稱值。這可以通過slow_start指令參數(shù)來完成:

upstream backend {server backend1.example.com slow_start=30s;server backend2.example.com;server 192.0.0.1 backup; }

請注意,如果組中只有一臺服務(wù)器,則slow_start參數(shù)將被忽略,并且永遠(yuǎn)不會將服務(wù)器標(biāo)記為不可用。慢速啟動是NGINX Plus獨(dú)有的。

?

主動健康檢查

NGINX Plus可以通過向每臺服務(wù)器發(fā)送特殊的運(yùn)行狀況檢查請求并驗(yàn)證正確的響應(yīng)來定期檢查上游服務(wù)器的運(yùn)行狀況。

要啟用主動健康檢查:

  • 在location將請求(proxy_pass)傳遞到上游組的中,包括health_check指令:

    server {location / {proxy_pass http://backend;health_check;} }

    此代碼段定義了一個服務(wù)器,該服務(wù)器將所有請求()location?/傳遞給名為的上游組backend。它還使用以下health_check指令啟用高級運(yùn)行狀況監(jiān)視:默認(rèn)情況下,NGINX Plus每五秒鐘向組中的每個服務(wù)器發(fā)送一個“?/?”?請求backend。如果發(fā)生任何通信錯誤或超時(服務(wù)器以從200到的范圍之外的狀態(tài)代碼響應(yīng)399),則運(yùn)行狀況檢查將失敗。服務(wù)器被標(biāo)記為不正常,NGINX Plus不會再次向其發(fā)送客戶端請求,直到它再次通過健康檢查。

    (可選)您可以指定另一個端口進(jìn)行運(yùn)行狀況檢查,例如,用于監(jiān)視同一主機(jī)上許多服務(wù)的運(yùn)行狀況。使用指令的port參數(shù)指定一個新端口health_check:

    server {location / {proxy_pass http://backend;health_check port=8080;} } ?

    ?

  • 在上游服務(wù)器組中,使用以下zone指令定義共享內(nèi)存區(qū)域:

    http {upstream backend {zone backend 64k;server backend1.example.com;server backend2.example.com;server backend3.example.com;server backend4.example.com;} }

    該區(qū)域在所有工作進(jìn)程之間共享,并存儲上游組的配置。這使工作進(jìn)程可以使用同一組計數(shù)器來跟蹤來自組中服務(wù)器的響應(yīng)。

    可以使用health_check偽指令的參數(shù)覆蓋活動運(yùn)行狀況檢查的默認(rèn)值:

    location / {proxy_pass http://backend;health_check interval=10 fails=3 passes=2; }

    在此,interval參數(shù)將運(yùn)行狀況檢查之間的延遲從默認(rèn)的5秒增加到10秒。該fails參數(shù)要求服務(wù)器未能通過三項(xiàng)健康檢查,以將其標(biāo)記為不健康(高于默認(rèn)狀態(tài))。最后,該passes參數(shù)表示服務(wù)器必須通過兩次連續(xù)檢查才能再次標(biāo)記為運(yùn)行狀況正常,而不是默認(rèn)情況。

  • ?

    指定請求的URI

    使用指令的uri參數(shù)health_check來設(shè)置要在運(yùn)行狀況檢查中請求的URI:

    location / {proxy_pass http://backend;health_check uri=/some/path; }

    指定的URI會附加到upstream塊中為服務(wù)器設(shè)置的服務(wù)器域名或IP地址上。對于backend上面聲明的樣本組中的第一臺服務(wù)器,運(yùn)行狀況檢查將請求URI?http://backend1.example.com/some/path

    ?

    定義自定義條件

    您可以設(shè)置響應(yīng)必須滿足的自定義條件,服務(wù)器才能通過運(yùn)行狀況檢查。條件在一個match塊中定義,該塊match在health_check指令的參數(shù)中引用。

  • 在級別上,指定塊并為其命名,例如:http?{}match?{}server_ok

    http {#...match server_ok {# tests are here} }
  • health_check通過指定match參數(shù)和match塊名稱,從指令中引用該塊:

    http {#...match server_ok {status 200-399;body !~ "maintenance mode";}server {#...location / {proxy_pass http://backend;health_check match=server_ok;}} }

    如果響應(yīng)的狀態(tài)代碼在200–?范圍內(nèi)399,并且其主體不包含字符串,則在此處通過運(yùn)行狀況檢查。maintenance?mode

  • 該match指令使NGINX Plus可以檢查狀態(tài)碼,標(biāo)頭字段和響應(yīng)的正文。使用此偽指令,可以驗(yàn)證狀態(tài)是否在指定范圍內(nèi),響應(yīng)是否包含標(biāo)頭,或者標(biāo)頭或正文是否與正則表達(dá)式匹配。該match指令可以包含一個狀態(tài)條件,一個主體條件和多個標(biāo)頭條件。響應(yīng)必須滿足match塊中定義的所有條件,服務(wù)器才能通過運(yùn)行狀況檢查。

    例如,下面的match指令匹配有狀態(tài)代碼響應(yīng)200,精確值text/html的Content-Type標(biāo)題,文字的身體:Welcome?to?nginx!

    match welcome {status 200;header Content-Type = text/html;body ~ "Welcome to nginx!"; }

    以下示例使用感嘆號(!)定義響應(yīng)不必通過運(yùn)行狀況檢查的特征。在這種情況下,健康檢查通過在狀態(tài)代碼比其他東西301,302,303,或307,并沒有Refresh頭。

    match not_redirect {status ! 301-303 307;header ! Refresh; }

    還可以為非HTTP協(xié)議(例如FastCGI,memcached,SCGI,uwsgi)以及TCP和UDP啟用運(yùn)行狀況檢查。

    參考資料: https://blog.51cto.com/kexiaoke/2316851 參考原文: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/

    總結(jié)

    以上是生活随笔為你收集整理的Nginx通过max_fails和fail_timeout在进行HTTP运行状况检查的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。