被動檢查
對于被動健康檢查,NGINX 和 NGINX Plus 會在事件發生時對其進行監控,并嘗試恢復失敗的連接。如果仍然無法恢復正常,NGINX 開源版和 NGINX Plus 會將服務器標記為不可用,并暫時停止向其發送請求,直到它再次標記為活動狀態。
上游服務器標記為不可用的條件是為每個上游服務器定義的,其中包含塊中 server 指令的參數 upstream:
fail_timeout - 設置服務器標記為不可用時必須進行多次失敗嘗試的時間,以及服務器標記為不可用的時間(默認為 10 秒)。 max_fails - 設置在 fail_timeout 服務器標記為不可用期間必須發生的失敗嘗試次數(默認為 1 次嘗試)。 在以下示例中,如果 NGINX 未能在 30 秒內向服務器發送請求或未收到響應 3 次,則表示服務器在 30 秒內不可用:upstream backend { server backend1.example.com; server backend2.example.com max_fails=3 fail_timeout=30s;}
需要注意的是如果只有一個單一的服務器組中,將 fail_timeout 和 max_fails 參數被忽略,服務器永遠不會標記為不可用。
服務器慢啟動
最近恢復的服務器很容易被連接淹沒,這可能導致服務器再次被標記為不可用。慢啟動允許上游服務器在恢復或變得可用之后逐漸將其權重從零恢復到其標稱值。這可以指定 upstream 的 server 模塊的 slow_start 參數來完成:
upstream backend { server backend1.example.com slow_start=30s; server backend2.example.com; server 192.0.0.1 backup;}
注意:如果組中只有一臺服務器,則 slow_start 參數將被忽略,而服務器永遠不會被標記位不可用狀態。慢啟動是 NGINX Plus 的專有功能
NGINX Plus的主動檢查
NGINX Plus 可以通過向每個服務器發送特殊的健康檢查請求并驗證正確的響應來定期檢查上游服務器的運行狀況。
要啟用活動運行狀況檢查:
1.在 location 區塊將 requests(proxy_pass)傳遞給上游組的過程中,包含 health_check 指令:
server { location / { proxy_pass http://backend; health_check; }}
此代碼段定義了一個服務器,它將所有請求匹配到 location / 傳遞給調用的上游組 backend。它還使用該 health_check 指令啟用高級運行狀況監視:默認情況下,NGINX Plus 每五秒向組中的每個服務器發送一個 “/” 請求 backend。
如果任何通信錯誤或發生超時(在服務器返回的狀態碼超出 200- 399的范圍)的健康檢查失敗。服務器被標記為不健康,并且 NGINX Plus 在再次通過運行狀況檢查之前不會向其發送客戶端請求。
另一個可選項:您可以指定另一個用于運行狀況檢查的端口,例如,用于監視同一主機上的許多服務的運行狀況。使用指令的 port 參數指定新端口 health_check:
新聞熱點
疑難解答