Nginx的TCP執行時健康檢查

2021-09-29 19:38:59 字數 2690 閱讀 4266

本章介紹如何配置tcp的執行狀況檢查。

活動tcp執行狀況檢查

nginx和nginx plus可以持續測試您的tcp上游伺服器,避免出現故障的伺服器,並可以將恢復的伺服器正常地新增到負載平衡組中。

如果連線上游伺服器的嘗試超時或導致錯誤,nginx open source或nginx plus可以將伺服器標記為不可用,並在指定的時間內停止向其傳送請求。要定義nginx認為上游伺服器不可用的條件,請在server指令中包含以下引數

預設值為10秒數和1嘗試次數。因此,如果連線嘗試超時或在10秒內至少失敗一次,nginx會將伺服器標記為10秒鐘不可用。該示例顯示了如何在30秒內將這些引數設定為2個失敗:

upstream stream_backend

最近恢復的上游伺服器很容易被連線淹沒,這可能導致伺服器再次標記為不可用。慢速啟動允許上游伺服器在恢復或可用後將其權重從零逐漸恢復到其標稱值。這可以通過slow_start上游server指令的引數來完成:

upstream backend

請注意,如果組中只有一台伺服器,則將slow_start忽略該引數,並且永遠不會將伺服器標記為不可用。慢速啟動是nginx plus獨有的。

可以將執行狀況檢查配置為測試各種故障型別。例如,nginx plus可以連續測試上游伺服器的響應能力,並避免出現故障的伺服器。

nginx plus向每個上游伺服器傳送特殊的執行狀況檢查請求,並檢查是否滿足特定條件。如果無法建立與伺服器的連線,則執行狀況檢查將失敗,並且伺服器將被視為執行狀況不佳。nginx plus不會將客戶端連線**到執行狀況不佳的伺服器。如果為上游組配置了多個執行狀況檢查,則任何檢查失敗都會足以使相應的伺服器不正常。

要啟用主動健康檢查:

指定乙個共享記憶體區域 – nginx plus工作程序在其中共享計數器和連線狀態資訊的特殊區域。將zone指令新增到上游伺服器組,並指定區域名稱(此處為stream_backend)和記憶體量(64 kb):

stream 

#...

}

使用以下health_check指令為上游組啟用主動執行狀況檢查:

stream 

}

如有必要,使用該health_check_timeout指令減少兩次連續執行狀況檢查之間的超時。該指令將覆蓋proxy_timeout執行狀況檢查的值,因為對於執行狀況檢查,此超時需要大大縮短:

stream 

}

預設情況下,nginx plus將執行狀況檢查訊息傳送到塊中server指令所指定的埠upstream。您可以指定另乙個埠進行執行狀況檢查,這在監視同一主機上許多服務的執行狀況時特別有用。要覆蓋埠,請指定偽指令的port引數health_check

stream 

}

預設情況下,nginx plus嘗試每秒鐘連線到上游伺服器組中的每個伺服器5。如果無法建立連線,nginx plus會認為執行狀況檢查失敗,將伺服器標記為不正常,然後停止將客戶端連線**到伺服器。

要更改預設行為,請在health_check偽指令中包含引數:

您可以建立自己的測試來驗證伺服器對執行狀況檢查的響應。這些測試是通過放置在上下文中的配置塊定義的。match {}stream {}

在級別上,指定塊並為其命名,例如:stream {}match {}tcp_test

stream 

}

該塊將包含步驟3中描述的測試。

health_check通過指定match引數和match塊名稱,從指令中引用該塊:

stream 

#...

}

match塊中,指定執行狀況檢查成功的條件或測試。該塊可以接受以下引數:

這些引數可以以不同的組合使用,但send一次expect最多只能指定乙個引數:

該示例顯示,要使執行狀況檢查通過,必須將http請求傳送到伺服器,並且伺服器的預期結果中包含200ok指示成功的http響應的資訊。

Nginx 檢視執行時狀態

無需重啟伺服器。在虛擬主機 假設為www.example.com 的配置檔案中加上 location nginxstatus則直接可以通過訪問 www.example.com nginxstatus檢視資訊 但是需要注意,在這裡我們開啟了安全驗證。auth basic nginx status 密碼...

java執行時異常和非執行時異常的區別

建議使用執行時異常和編譯時異常叫法,便於區分和理解 非執行時異常是什麼異常?很懵逼 編譯時異常 程式沒有通過編譯器的編譯,必須處理掉這個異常程式才能正常執行,比如檔案路徑找不到異常,類找不到異常,io異常,必須用try catch或是throwable處理掉才能編譯通過 可以理解為一種特殊的語法錯誤...

php程式執行時間 php計算程式的執行時間

首先我們分析一下原理,要想得到程式執行時間,那麼可以在程式最開始執行的時候定義乙個變數記下當前時間,然後等我們程式執行完之後再記錄一下當前的時間,兩者相差就是該程式執行花費的時間了。這裡介紹一下 microtime 這個函式,microtime 用的不多,但是不能不知道這個函式,它是返回當前 uni...